returns = df.pct_change(1) * 100
返回是将日期作为索引的数据框,在此我想分别将每一列与数据框的最后一列(即^ 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句