如何在Python中训练多元线性回归模型并导出参数估计结果表
Python实现回归分析及指定格式结果输出
- 依赖库:
pandas、statsmodels,未安装可执行命令:pip install pandas statsmodels
1. 数据预处理
你需要分析我方奖金销售额(b_mine)对我方净销售额(a_mine)的影响,首先完成数据加载和变量定义:
import pandas as pd import statsmodels.api as sm # 替换为你自己的数据读取逻辑,示例为读csv,也支持读excel等格式 df = pd.read_csv("你的数据文件路径.csv") # 定义因变量y为我方净销售额,自变量X为我方奖金销售额 y = df["a_mine"] X = df["b_mine"] # 给自变量添加常数项,用于拟合回归截距(即你要的constant参数) X = sm.add_constant(X)
2. 拟合线性回归模型
使用普通最小二乘法拟合回归模型:
model = sm.OLS(y, X).fit() # 如需查看模型全量统计结果,可执行 print(model.summary())
3. 结果整理为指定格式
从模型拟合结果中提取所需字段,组装成要求的输出表格:
result_list = [] # 组装常数项结果行 result_list.append({ "Component": "a_mine", "Parameter": "constant", "Estimate": round(model.params["const"], 5), "Standart_error": round(model.bse["const"], 5), "t_value": round(model.tvalues["const"], 2), "Approx Pr>|t|": "< 0.0001" if model.pvalues["const"] < 0.0001 else round(model.pvalues["const"], 4) }) # 组装b_mine系数结果行 result_list.append({ "Component": "b_mine", "Parameter": "scale", "Estimate": round(model.params["b_mine"], 5), "Standart_error": round(model.bse["b_mine"], 5), "t_value": round(model.tvalues["b_mine"], 2), "Approx Pr>|t|": "< 0.0001" if model.pvalues["b_mine"] < 0.0001 else round(model.pvalues["b_mine"], 4) }) # 转换为DataFrame打印输出,就是你需要的结果表 result_df = pd.DataFrame(result_list) print(result_df.to_string(index=False))
可选优化:加入控制变量
如果需要排除竞品销售额、单价等因素的干扰,只需要在定义自变量X时加入对应字段即可,示例:
# 加入竞品净销售额、我方单价作为控制变量 X = df[["b_mine", "a_comp", "c_mine"]] # 后续拟合、结果提取逻辑保持一致,新增变量可按需求补充到输出表格中
内容的提问来源于stack exchange,提问作者Hale
相关产品推荐
相关产品推荐

