如何使用统计模型执行逻辑回归
Python 的statsmodels模块提供了各种函数和类,可让您适应各种统计模型。
以下分步示例展示了如何使用 statsmodels 函数执行逻辑回归。
第 1 步:创建数据
首先,我们创建一个包含三个变量的 pandas DataFrame:
- 学习时数(全部值)
- 研究方法(方法A或B)
- 考试结果(通过或失败)
我们将使用学习时间和学习方法拟合逻辑回归模型来预测学生是否通过给定的考试。
以下代码显示了如何创建 pandas DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1], ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6, 5, 8, 8, 7, 6, 7, 5, 4, 8, 9], ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'B', 'A', 'A', 'B', 'A', 'B', 'A']}) #view first five rows of DataFrame df. head () result hours method 0 0 1 A 1 1 2 A 2 0 2 A 3 0 2 B 4 0 3 B
步骤 2:拟合逻辑回归模型
接下来,我们将使用logit()函数拟合逻辑回归模型:
import statsmodels. formula . api as smf
#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()
#view model summary
print ( model.summary ())
Optimization completed successfully.
Current function value: 0.557786
Iterations 5
Logit Regression Results
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================
输出的coef列中的值告诉我们通过考试的对数几率的平均变化。
例如:
- 与使用学习方法 A 相比,使用学习方法 B 的通过考试对数几率平均增加0.0875 。
- 每多学习一小时,通过考试的对数几率就会平均增加0.4909 。
P>|z|中的值该列表示每个系数的 p 值。
例如:
- 该研究方法的 p 值为0.934 。由于该值不小于0.05,因此意味着学习时间与学生是否通过考试之间不存在统计上的显着关系。
- 研究时间的 p 值为0.045 。由于该值小于 0.05,这意味着学习时间与学生是否通过考试之间存在统计上显着的关系。
第 3 步:评估模型性能
为了评估逻辑回归模型的质量,我们可以查看输出中的两个指标:
1.昵称R平方
该值可被视为线性回归模型 R 平方值的替代值。
它被计算为零模型与完整模型的最大化对数似然函数的比率。
该值的范围可以从 0 到 1,值越高表示模型拟合效果越好。
在此示例中,伪 R 平方值为0.1894 ,该值相当低。这告诉我们,模型的预测变量在预测响应变量的值方面表现不佳。
2. LLR p 值
该值可被视为线性回归模型整体 F 值的 p 值的替代。
如果这个值低于某个阈值(例如α = 0.05),那么我们就可以得出结论,模型作为一个整体是“有用的”,并且与没有预测变量的模型相比,可以更好地预测响应变量的值。
在此示例中,LLR 的 p 值为0.07375 。根据我们选择的显着性水平(例如0.01、0.05、0.1),我们可能会也可能不会得出模型整体有用的结论。
其他资源
以下教程解释了如何在 Python 中执行其他常见任务: