创建 OLS Beta 参数估计值的滚动平均值

Creating a Rolling Average of OLS Beta parameter estimates

我正在尝试根据单个数据集创建 OLS Beta 参数估计值的滚动平均值的时间序列图。我需要使用 OLS 对数据的第 1-36 行进行回归,找到 Beta 参数估计值,然后对第 2-37 行再次执行此操作,依此类推。完成后,我需要在图表中绘制这些点。我找不到一种方法来自动执行为每个数据部分查找 OLS Beta 估计值的过程。有人有什么想法吗?

谢谢!

这是一个简单的示例,但如果我看到了您的数据示例,我或许可以澄清一下?

假设您有一个 1000 行的框架 df,结果 y 和预测变量 x,并且您希望每 36 行进行一次回归的截距和斜率滑动 window(第 1-36、2-37、3-38 行等)。首先,运行 964个回归模型并保存系数。

coefs = do.call(rbind, lapply(36:nrow(df),\(i) lm(y~x,data=df[(i-36):i])$coef))

将它们添加到 data.table

df[36:nrow(df),c("intercept","beta"):=list(coefs[,1], coefs[,2])]

输出:

                x           y  intercept       beta
   1: -0.56047565 -0.99579872         NA         NA
   2: -0.23017749 -1.03995504         NA         NA
   3:  1.55870831 -0.01798024         NA         NA
   4:  0.07050839 -0.13217513         NA         NA
   5:  0.12928774 -2.54934277         NA         NA
  ---                                              
 996: -0.08997520  0.07664366 0.06368493 0.16388413
 997:  1.07051604  0.25516476 0.11283476 0.20039460
 998: -1.35110039  0.27744682 0.06146300 0.08411488
 999: -0.52261670  0.53685602 0.08775808 0.08424470
1000: -0.24919068 -0.46048557 0.03574618 0.07458988

输入:

library(data.table)
set.seed(123)
df = data.table(x=rnorm(1000), y=rnorm(1000))