如何用for循环将单变量线性回归的变量名、p值存入pandas DataFrame
单变量回归p值结果存储实现方案
你可以通过先暂存所有结果到列表、循环结束后统一转换为DataFrame的方式实现,同时注意修正原代码中X_Data和X_data的大小写不一致问题,完整代码如下:
import pandas as pd import statsmodels.api as sm # 初始化空列表存储每一轮回归的结果 result = [] for col in X_data: # 给单变量添加常数项 exog = sm.add_constant(X_data[col], prepend=False) # 拟合单变量线性回归 mod = sm.OLS(y_data, exog) res = mod.fit() # 追加当前变量的名称和对应p值 result.append({ "变量名": col, "p值": res.pvalues[col] }) # 转换为pandas DataFrame p_result_df = pd.DataFrame(result) # 可选操作:打印结果、保存为csv文件 print(p_result_df) # p_result_df.to_csv("单变量回归p值结果.csv", index=False, encoding="utf-8-sig")
如果后续需要存储更多回归结果,比如回归系数、R²、t值等,只需要在append的结构中新增对应字段即可,示例如下:
result.append({ "变量名": col, "p值": res.pvalues[col], "回归系数": res.params[col], "模型R²": res.rsquared })
内容的提问来源于stack exchange,提问作者CWeeks
相关产品推荐
相关产品推荐

