You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多组statsmodels回归的参数估计值转为DataFrame列

线性回归结果DataFrame重构方案

核心修改逻辑

  • 预先定义7个参数列:常数项+6个解释变量,替代原有的「Linear Regression」和「Predictors」列
  • 遍历每个回归模型,仅填充该模型包含的参数估计值,未纳入的变量用NaN标记
  • 完整保留原有诊断统计量列(如R²、调整R²、F统计量等)

具体代码实现(基于statsmodels)

假设你已通过statsmodels生成所有变量组合的回归模型列表all_models,且原结果DataFrame为results_df,按以下步骤修改:

1. 定义参数列名

# 替换为你实际的解释变量名称
param_cols = ['Intercept', 'X1', 'X2', 'X3', 'X4', 'X5', 'X6']

2. 初始化新结果DataFrame

import pandas as pd
import numpy as np

# 提取原有的诊断统计量列(排除可读性差的两列)
diagnostic_cols = [col for col in results_df.columns if col not in ['Linear Regression', 'Predictors']]

# 创建新DataFrame,整合参数列与诊断列
new_results_df = pd.DataFrame(columns=param_cols + diagnostic_cols)

3. 遍历模型填充数据

for idx, model in enumerate(all_models):
    # 提取当前模型的系数字典
    model_coeffs = model.params.to_dict()
    # 生成参数行:存在的系数取值,不存在的设为NaN
    param_row = {col: model_coeffs.get(col, np.nan) for col in param_cols}
    
    # 获取原诊断统计量数据
    diagnostic_row = results_df.loc[idx, diagnostic_cols].to_dict()
    
    # 合并参数与诊断数据,添加到新DataFrame
    new_results_df.loc[idx] = {**param_row, **diagnostic_row}

4. 优化显示(可选)

# 重置索引
new_results_df = new_results_df.reset_index(drop=True)
# 设置浮点数显示精度,提升可读性
pd.set_option('display.float_format', lambda x: '%.4f' % x)

注意事项

  • 若你的解释变量名称不是X1-X6,直接替换param_cols中的对应值即可
  • NaN标记未纳入模型的变量,便于后续筛选不同变量组合的模型结果
  • 原诊断统计量完全保留,不会丢失任何分析指标

内容的提问来源于stack exchange,提问作者jack homareau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:48:11