python - 每日 OLS 回归的 for 循环日期
问题描述
我正在尝试每天针对 Y 对 X 运行 OLS 回归,如下所示。这段时间在 2008 年 1 月至 2011 年 12 月之间。我们的想法是获取每日参数,从中推断出波动率。第一天我设法进行了回归,但其他日子似乎从第一天开始就开始了价值。由于每天的观察结果不一样,因为我是这里的新手,所以很难。
请帮我纠正下面的代码。
import statsmodels.api as sm`
from statsmodels.formula.api import ols`
##groupby by index date to enable recursive regressions by day
Kempf_etal2015_model = np.zeros((1,5))`
intercept = np.zeros((1,1))`
betas = np.zeros((1,4))`
for idx, day in df_fp.groupby(df_fp.index.date):`
# for i in (day):
for i in range(len(day)) :
for j in range(len(df_fp)):
spreadlag1 = df_fp['relative_spread'].shift(-1)
c_spreeeed = df_fp['relative_spread'] - df_fp['relative_spread'].shift(-1)
c_spreeeed_lag1 = df_fp['relative_spread'] - df_fp['relative_spread'].shift(-2)
c_spreeeed_lag2 = df_fp['relative_spread'] - df_fp['relative_spread'].shift(-3)
c_spreeeed_lag3 = df_fp['relative_spread'] - df_fp['relative_spread'].shift(-4)
Kempf_etal2015_model = ols('c_spreeeed ~spreadlag1+c_spreeeed_lag1+c_spreeeed_lag2+c_spreeeed_lag3', df_fp).fit()
intercept =Kempf_etal2015_model.params[:0]
betas = Kempf_etal2015_model.params[1:]
print(Kempf_etal2015_model.params)
我最终得到以下结果
Intercept 0.000102
spreadlag1 -0.104292
c_spreeeed_lag1 0.430733
c_spreeeed_lag2 0.020808
c_spreeeed_lag3 0.072575
dtype: float64
Intercept 0.000102
spreadlag1 -0.104292
c_spreeeed_lag1 0.430733
c_spreeeed_lag2 0.020808
c_spreeeed_lag3 0.072575
dtype: float64
解决方案
推荐阅读
- vue.js - Symfony Encore (Pimcore) + Vuetify
- java - 关于异或,“arr[i] ^= 1”和“arr[i] ^1”有什么区别?
- paraview - Paraview中的攻角
- reactjs - 过滤数据不
在 ReactJS Firebase 之前 - python - 根据熊猫数据框中的条件获取最大值和最小值
- javascript - 块供应商文件在生产中太大
- sql - 递归 SQL 查询以获取零件的所有组件
- google-analytics - 使用 Google Analytics 为 Google 表格添加的目标完成数未显示正确的数字
- python-3.x - 组合框位于网格的中间
- c++ - 具有可变长度定义向量的初始化器列表