logistic回归分析
“Logistic Regression”(回归分析)是一种用于建模二元结果概率的统计方法。这是一种适用于预测事件发生或不发生概率的回归分析类型。Logistic回归通常用于各个领域,包括统计学、机器学习和流行病学。
以下是关于logistic回归的一些关键点:
- 二元结果: Logistic回归用于因变量是二元的情况,这意味着它只有两种可能的结果,例如0或1、是或否、真或假。
- Sigmoid函数: 在logistic回归中,使用logistic函数(或Sigmoid函数)将任何实数映射到0到1之间的值。这很重要,因为输出可以解释为概率。
- 连接函数: Logistic回归使用“logit”连接函数来建模自变量与特定结果概率之间的关系。
- 自变量: 类似于其他形式的回归分析,logistic回归涉及一个或多个自变量,用于预测因变量的发生概率。
- 最大似然估计: Logistic回归中的参数使用最大似然估计(MLE)方法估计,该方法旨在最大化在估计模型下观察到给定结果的可能性。
- 比率比: Logistic回归提供比率比,表示一个组中事件发生的几率与另一个组中事件发生的几率之比。
Logistic回归分析的应用条件
- 因变量为二项分类或多项分类资料。
- 自变量可以是任意类型的资料,如定量资料、二分类资料、无序多分类资料或者有序分类资料等。
研究案例
- 研究题目: 影响在线购物决策的因素
- 目标: 通过回归分析探究各种因素对个体在线购物决策的影响,以提高电商平台的服务质量和用户体验。
- 假设:
- 商品价格越低,购物决策越可能为1。
- 用户给予的评价分数越高,购物决策越可能为1。
- 参与促销活动的用户,购物决策越可能为1。
- 配送时间越短,购物决策越可能为1。
- 年龄较年轻的用户,购物决策越可能为1。
- 上月购物频率较高的用户,购物决策越可能为1。
- 研究变量:
- 因变量(依赖变量): 购物决策(二元变量,1表示购物,0表示不购物)。
- 自变量(独立变量):
- 商品价格
- 用户评价分数
- 促销活动参与与否(二元变量,1表示参与,0表示不参与)
- 平均配送时间
- 用户年龄
- 上月购物频率
- 数据收集:从一个大型电商平台获取用户的历史购物数据,包括购买商品的价格、用户给予的评价分数、是否参与促销活动、配送时间、年龄以及上月购物频率等信息。
- 数据分析:通过 logistic 回归分析,获取各自变量的系数和 p 值,以评估它们对购物决策的影响程度和统计显著性。
数据分析
import pandas as pd
import statsmodels.api as sm
# Generated dataset
= {
data '商品价格': [42.50, 78.99, 35.00, 55.99, 49.99, 60.00, 30.50, 65.99, 47.00, 53.99,
39.99, 75.00, 29.50, 58.99, 43.00, 68.99, 51.00, 45.99, 63.50, 34.99,
59.00, 37.00, 52.99, 48.00, 31.50, 56.99, 40.00, 72.50, 28.99, 54.00,
# ... Continue with the rest of the data
],'用户评价分数': [4.7, 4.2, 4.5, 4.8, 4.3, 4.6, 4.1, 4.4, 4.9, 4.2,
4.5, 4.8, 4.3, 4.6, 4.1, 4.4, 4.9, 4.2, 4.5, 4.8,
4.3, 4.6, 4.1, 4.4, 4.9, 4.2, 4.5, 4.8, 4.3, 4.6],
'促销活动参与': [1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1],
'平均配送时间': [2.2, 3.5, 2.8, 2.0, 3.0, 2.5, 3.2, 2.7, 2.1, 3.8,
2.4, 2.3, 3.1, 2.6, 3.3, 2.9, 2.0, 3.6, 2.5, 2.2,
3.7, 2.8, 3.4, 2.3, 2.1, 3.9, 2.4, 2.3, 3.2, 2.7],
'用户年龄': [30, 45, 28, 35, 40, 32, 38, 27, 33, 42,
29, 36, 31, 26, 39, 34, 37, 41, 28, 30,
44, 28, 43, 36, 33, 46, 29, 4, 36, 38],
'上月购物频率': [4, 2, 3, 5, 1, 4, 2, 3, 5, 1,
4, 5, 2, 3, 1, 4, 5, 2, 3, 5, 1, 4, 1, 0, 3, 1, 4, 5, 1, 0],
'购物决策': [1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1]
}
= pd.DataFrame(data)
df
# Logistic regression model
= df[['商品价格', '用户评价分数', '促销活动参与', '平均配送时间', '用户年龄', '上月购物频率']]
X = sm.add_constant(X) # Add a constant term to the predictors
X = df['购物决策']
y
= sm.Logit(y, X)
model = model.fit()
result
# Display the logistic regression summary
print(result.summary())
运行结果如下:
Optimization terminated successfully.
Current function value: 0.154064
Iterations 13
Logit Regression Results
==============================================================================
Dep. Variable: 购物决策 No. Observations: 30
Model: Logit Df Residuals: 23
Method: MLE Df Model: 6
Date: Mon, 13 Nov 2023 Pseudo R-squ.: 0.7656
Time: 13:01:55 Log-Likelihood: -4.6219
converged: True LL-Null: -19.715
Covariance Type: nonrobust LLR p-value: 3.624e-05
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
const -148.2313 166.531 -0.890 0.373 -474.626 178.163
商品价格 0.1708 0.359 0.475 0.635 -0.533 0.875
用户评价分数 37.9425 45.536 0.833 0.405 -51.306 127.191
促销活动参与 2.4075 4.608 0.522 0.601 -6.625 11.440
平均配送时间 4.5588 7.350 0.620 0.535 -9.846 18.964
用户年龄 -0.8722 1.538 -0.567 0.571 -3.886 2.142
上月购物频率 -4.0813 6.971 -0.585 0.558 -17.743 9.581
==============================================================================
Possibly complete quasi-separation: A fraction 0.23 of observations can be
perfectly predicted. This might indicate that there is complete
quasi-separation. In this case some parameters will not be identified.
在解释 logistic 回归的结果时,我们主要关注各个自变量的系数(coefficient)以及其显著性(p-value)。以下是对结果的初步解释:
- const(截距项): -148.2313,这是模型在所有自变量为零时的购物决策的对数几率。然而,由于截距项的p-value较大(0.373),我们不能得出截距项对购物决策的显著影响。
- 商品价格(商品价格): 系数为0.1708,p-value为0.635。商品价格对购物决策的影响不显著。
- 用户评价分数(用户评价分数): 系数为37.9425,p-value为0.405。用户评价分数对购物决策的影响不显著。
- 促销活动参与(促销活动参与): 系数为2.4075,p-value为0.601。促销活动参与对购物决策的影响不显著。
- 平均配送时间(平均配送时间): 系数为4.5588,p-value为0.535。平均配送时间对购物决策的影响不显著。
- 用户年龄(用户年龄): 系数为-0.8722,p-value为0.571。用户年龄对购物决策的影响不显著。
- 上月购物频率(上月购物频率): 系数为-4.0813,p-value为0.558。上月购物频率对购物决策的影响不显著。
结论:
- 从当前模型来看,自变量在统计上对购物决策的影响并不显著。
- 模型的伪 R 方(0.7656)较高,说明模型对数据的解释程度较好,但这并不代表模型中的各个自变量都是显著的。
- 警告信息指出可能存在完全拟合的情况,这需要进一步考虑。完全拟合可能导致模型过于灵活,对新数据的泛化性能下降。
请注意,这仅仅是一个初步的解释,进一步的优化和验证可能需要考虑其他因素,比如数据的特点、模型的假设检验等。
Logistic回归的分类
非条件Logistic回归
非条件Logistic回归是最常见的Logistic回归形式,通常简称为Logistic回归。它不考虑数据中可能存在的分层或匹配结构。在非条件Logistic回归中:
适用场景:当数据集中的观测是独立的,没有分层或匹配结构时,非条件Logistic回归是合适的。 模型构建:模型估计的是观测值属于某一类别的概率,与其他所有观测值相比。 应用:广泛应用于医学、社会科学、市场研究等领域,特别是在处理简单的二分类问题时。
条件Logistic回归
条件Logistic回归是一种特殊类型的Logistic回归,用于处理匹配数据或分层数据。在条件Logistic回归中:
适用场景:当数据中存在分层(如多个病人来自同一医院)或匹配对(如病例-对照研究中的匹配对)时,使用条件Logistic回归更为合适。 模型构建:模型估计的是在给定层或匹配对内部,观测值属于某一类别的概率。 特点:通过控制层内变量或匹配变量的影响,可以更准确地估计其他解释变量对结果的影响。 比较 数据结构:非条件Logistic回归适用于独立数据,而条件Logistic回归适用于存在分层或匹配结构的数据。 目的:非条件Logistic回归旨在分析整体样本,条件Logistic回归则关注在特定分层或匹配对内的关系。 复杂性:条件Logistic回归在统计分析上通常比非条件Logistic回归更复杂,需要特别考虑数据的分层或匹配结构。 在实际应用中,选择哪种类型的Logistic回归取决于数据的结构和研究的具体需求。正确地选择分析方法对于得出有效和可靠的结论至关重要。