使用 Pandas 中数据框的最后一列单独回归每一列
Regress each column individually with the last column of a dataframe in Pandas
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']
与您原来的 post 一样,没有删除任何缺失值。
由于某些列没有任何与 ^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
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']
与您原来的 post 一样,没有删除任何缺失值。
由于某些列没有任何与 ^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