我需要一次对X个时段执行滚动线性回归。我有以下pandas数据帧:
value
0 4354
1 7564
2 657
3 7876
我可以使用scipy对整个数据帧执行线性回归,如下所示:
from scipy import stats
slope, intercept, r_value, p_value, std_err = stats.linregress(df.index, df['value'])
然后我得到线性回归线:
df['linreg'] = intercept + slope * df.index
但我一直无法弄清楚如何做的是滚动线性回归,例如20行滚动窗口。
答案 0 :(得分:0)
线性回归需要计算五个和:Xi,Xi²,Yi,Yi²,Xi.Yi。您可以滚动窗口方式更新这些内容,添加新点并扣除旧点。
这适用于不超过机器表示精度的整数。否则,您需要不时地重新启动以减少错误累积。