基于Python中statsmodels的回归分析——R转Python新手的实操咨询
从R转Python:用statsmodels做线性回归的入门实践
作为从R转Python的新手,带着R的思维来上手statsmodels完全没问题~你给出的这段最小工作示例已经走对了方向,我来帮你补全后续步骤,再把每个环节的逻辑理清楚:
1. 准备数据与创建数据框
首先是定义数据并转换成pandas数据框,这一步和R里创建data.frame的逻辑几乎一致,非常容易上手:
# 定义数据 Income = [80, 100, 120, 140, 160, 180, 200, 220, 240, 260] Expend = [70, 65, 90, 95, 110, 115, 120, 140, 155, 150] # 导入pandas并创建数据框 import pandas as pd df1 = pd.DataFrame( {'Income': Income, 'Expend': Expend })
2. 用公式语法构建回归模型
statsmodels的formula.api模块专门支持类似R的公式语法,这对你来说应该很熟悉:
# 导入公式接口 import statsmodels.formula.api as smf # 创建回归模型对象(注意这一步只是定义模型,还没拟合) reg1 = smf.ols('Expend ~ Income', data = df1)
这里的Expend ~ Income和R里lm(Expend ~ Income, data = df)的公式逻辑完全一样,指定因变量在前,自变量在后,ols就是普通最小二乘回归的意思。
3. 拟合模型并查看结果
和R里创建模型后自动拟合不同,statsmodels需要显式调用.fit()方法来完成模型拟合,之后就能查看详细的回归结果了:
# 拟合模型 results = reg1.fit() # 查看完整的回归统计结果(和R的summary()输出类似) print(results.summary())
运行这段代码后,你会得到和R里summary(lm模型)类似的详细输出,包括系数估计值、R²、p值、标准误等关键统计指标。
几个常用的结果提取方法(对应R里的常用操作)
如果你想单独提取某部分结果,可以用这些方法:
- 提取回归系数:
results.params(对应R里coef(lm模型)) - 生成预测值:
results.predict(df1)(对应R里predict(lm模型)) - 提取残差:
results.resid(对应R里resid(lm模型))
内容的提问来源于stack exchange,提问作者MYaseen208




