我的数据框df
包含n
列。索引是DatetimeIndex。给定参考列ref_col
,我希望根据此参考列计算剩余列的n-1
一维线性回归。以下内容未实现此目的,而是计算单个n-1
- 维回归:
pd.ols(y=df[ref_col], x=df.drop(ref_col, axis=1))
现在假设我希望计算所有可能的成对回归,以便生成具有单位对角线的贝塔nxn
矩阵。
可以使用循环相对容易地完成上述两个操作。是否有“矢量化”方式?
答案 0 :(得分:2)
您可以像这样获取参考列的成对回归列表:
models=[pd.ols(y=df[ref_col],x=df[col]) for col in df if col<>ref_col]
要在所有可能的参考列上获得模型矩阵,下一步将是
models_matrix=[[pd.ols(y=df[ref_col],x=df[col]) for col in df if col<>ref_col] for ref_col in df]
最后,贝塔的矩阵可以像这样实现
betas=[[pd.ols(y=df[ref_col],x=df[col]).beta.x for col in df if col<>ref_col] for ref_col in df]