问题描述
我有一个数据框,我想使用滚动提取两列并对它们执行回归(对第二列进行回归)。我已经看到人们使用apply
来执行一个功能,例如:
def multi_period_return(period_returns):
return np.prod(period_returns + 1) - 1
pr = data.SP500.pct_change() # period return
r = pr.rolling('360D').apply(multi_period_return)
我的数据是:
sp500data:
caldt,spreturn,shifted
1962-07-05,0.0056,0.0112
1962-07-06,-0.0112,0.0056
1962-07-09,0.0067,-0.0112
1962-07-10,0.011,0.0067
def firstcoef(spdf):
return sm.OLS(spdf['spreturn'],spdf['shifted']).fit().params[0]
r = sp500data.rolling(window='360D').apply(firstcoef)
Traceback (most recent call last):
File "C:/Users/moham/PycharmProjects/pythonProject1/main.py",line 19,in <module>
r = sp500data.rolling(window='360D').apply(firstcoef)
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\window\rolling.py",line 2059,in apply
return super().apply(
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\window\rolling.py",line 1388,in apply
return self._apply(
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\window\rolling.py",line 586,in _apply
result = np.apply_along_axis(calc,self.axis,values)
File "<__array_function__ internals>",line 5,in apply_along_axis
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\numpy\lib\shape_base.py",line 379,in apply_along_axis
res = asanyarray(func1d(inarr_view[ind0],*args,**kwargs))
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\window\rolling.py",line 576,in calc
return func(x,start,end,min_periods)
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\window\rolling.py",line 1415,in apply_func
return window_func(values,begin,min_periods)
File "pandas\_libs\window\aggregations.pyx",line 1441,in pandas._libs.window.aggregations.roll_generic_variable
File "C:/Users/moham/PycharmProjects/pythonProject1/main.py",line 10,in firstcoef
return sm.OLS(spdf['spreturn'],spdf['shifted']).fit().params[0]
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\series.py",line 882,in __getitem__
return self._get_value(key)
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\series.py",line 991,in _get_value
loc = self.index.get_loc(label)
File "C:\Users\moham\PycharmProjects\pythonProject1\venv\lib\site-packages\pandas\core\indexes\datetimes.py",line 605,in get_loc
raise KeyError(key) from err
KeyError: 'spreturn'
Process finished with exit code 1
我想提取回归的第一个系数并将其作为数据框,然后绘制它们。修改我的代码的正确方法是什么?
我想要的输出是这样的:
1962-07-05,0.09
1962-07-06,0.011
1962-07-09,0.02
1962-07-10,0.03
1962-07-11,0.04
值是模型参数(实际上,我希望第一个模型参数为params[0]
)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)