gpt4 book ai didi

python - 使用 Pandas 中数据框的最后一列单独回归每一列

转载 作者:行者123 更新时间:2023-12-05 06:14:32 24 4
gpt4 key购买 nike

returns = df.pct_change(1) * 100

returns 是以日期为索引的数据框,我想用数据框的最后一列(^BSESN)单独回归每一列。由于有 700 多列,我想遍历这些列。我还想在每次回归后存储残差。我使用了以下各种版本,但不断出现相同的错误。我需要在每个单独的回归过程中删除具有 NaN 值的行(而不是删除具有任何具有 nan 值的列的行)。

residuals = {}
for column in returns.columns[:-1]:
selected = returns[['^BSESN', column]].dropna()
reg = sm.OLS(selected[column], returns['^BSESN']).fit()
residuals[column] = reg.residuals

但我不断收到以下错误:

MissingDataError: exog contains inf or nans

如何消除错误?非常感谢任何有关执行此操作的最佳方法的指导。

最佳答案

将 OLS 调用更改为

reg = sm.OLS(selected[column], selected['^BSESN']).fit()

看到 returns['^BSESN'],因为在您的原始帖子中没有删除任何缺失值。

由于某些列没有任何与 ^BSESN 匹配的行,您可以添加一个 if 来忽略这些列:

residuals = {}
for column in returns.columns[:-1]:
selected = returns[['^BSESN', column]].dropna()
if selected.shape[0] > 0:
reg = sm.OLS(selected[column], selected['^BSESN']).fit()
residuals[column] = reg.residuals

关于python - 使用 Pandas 中数据框的最后一列单独回归每一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62841004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com