我确定我一定做错了什么,但我走了。 我正在尝试根据已知结果测试 StatsModels 中的 RollingOLS 函数,但我得到的结果出乎意料。
我已经为函数 sin(t) 生成了 [0,2pi] 范围内的一些数据。 我预计,如果我采用此数据的滚动最小二乘法,我应该得到近似 cos(t) 的数据,因为 d/dt( sin(t) ) = cos(t)。
我想使用 numpy 数组而不是 Pandas 数据框,因为我不想需要 Pandas(即使它很棒)。
当我从 RollingOLS 得到结果斜率时,该函数根本不近似 cos(t) 并且在生成 x 轴时似乎忽略了 t 变量。
代码:
import math
import numpy as np
from statsmodels.regression.rolling import RollingOLS
t = np.array(range(0,1001))/(1000)*2*math.pi
Y = np.sin(t)
window = 2
model = RollingOLS(Y,t,window=window)
results = model.fit()
results.plot_recursive_coefficient()
看图中的 x 轴,它似乎使用了 t 的索引(介于 0 和 1000 之间),而不是 t 值本身(介于 0 和 2pi 之间)。
请帮我弄清楚我做错了什么! TIA.