基于列唯一值分组执行多元线性回归并存储结果的Python实现
Python分组执行多元线性回归实现方案
前置依赖
确保已经安装所需库:
pip install pandas statsmodels
实现代码
1. 导入库
import pandas as pd import statsmodels.formula.api as smf
2. 定义自定义回归函数
你可以根据需求调整返回值,比如返回回归系数、R²、p值,或者完整的拟合对象:
def run_regression(group_data): # 回归公式和你之前全量回归的逻辑一致,可按需调整 model = smf.ols(formula='y_Values ~ a + b + c + d', data=group_data).fit() # 示例返回系数字典,如需返回完整拟合对象直接写 return model 即可 return model.params.to_dict()
3. 按status字段分组执行回归并存储结果
方案A:结果存入原表新增列reg_results
同个status分组下的所有行都会存储对应分组的回归结果:
df['reg_results'] = df.groupby('status', group_keys=False).apply( lambda g: pd.Series([run_regression(g)] * len(g), index=g.index) )
方案B:生成单独的回归结果汇总表
每个status对应一条回归结果,适合后续批量分析:
reg_result_summary = df.groupby('status').apply(run_regression).reset_index(name='reg_results')
注意事项
分组回归需要保证每组样本量大于特征维度(包含截距项),否则会出现矩阵奇异无法拟合的问题,示例数据分组样本量较小仅做逻辑演示,实际使用请确保数据量充足。
如果你需要实现R代码中的向后逐步筛选功能,可在run_regression函数中加入变量筛选逻辑即可。
内容的提问来源于stack exchange,提问作者g123456k
相关产品推荐
相关产品推荐

