【问题标题】:Regress each column individually with the last column of a dataframe in Pandas使用 Pandas 中数据框的最后一列分别对每一列进行回归
【发布时间】:2020-10-31 14:12:08
【问题描述】:
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

如何消除错误?任何关于最佳方式的指导将不胜感激。

【问题讨论】:

    标签: python pandas dataframe regression statsmodels


    【解决方案1】:

    将 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
    

    【讨论】:

    • 我现在收到以下错误:ValueError: zero-size array to reduction operation maximum which has no identity
    • 在我看来,一列与 BSESN 列没有任何匹配。可以分享数据吗?在 ols 调用之前添加print(column, selected.shape) 以找出答案。
    • 是的。你说得对。你能建议我如何克服它吗?这是输出: ('bse_closing_price', 11) (2129, 2) ('bse_closing_price', 14) (4440, 2) ('bse_closing_price', 289) (4439, 2) ('bse_closing_price', 301) (4436, 2) ('bse_closing_price', 363) (4440, 2) ('bse_closing_price', 365) (2603, 2) ('bse_closing_price', 400) (3394, 2) ('bse_closing_price', 415) (4243, 2) ('bse_closing_price', 443) (0, 2)
    • 那么,您想对这些列做什么?要忽略它们,请在通话前添加 if selected.shape[0] > 0:
    • 我也对将残差与仅包含事件日期的另一个字典进行比较以查找常见日期并在特定事件日期下方和上方找到 10 行残差有疑问。因此,我尝试了以下代码(事件是包含 2 列、co_code 和事件日期的数据框):d = dict(tuple(events.groupby('co_code')))carvalues = {}for elem in d:if elem in resids:idx=resids.index.get_loc(elem)carvalues = resids.iloc[idx - 10 : idx +10]car_df = pd.DataFrame(carvalues) 但我得到一个空dict 作为输出。我该如何克服呢?
    猜你喜欢
    • 1970-01-01
    • 2018-12-13
    • 2023-03-08
    • 2016-06-05
    • 2023-01-10
    • 2014-10-11
    • 2021-03-09
    • 2015-06-27
    • 2020-04-23
    相关资源
    最近更新 更多