首页 > 解决方案 > R - 从窗口内的回归中提取 beta 和 alpha

问题描述

我有这个数据框:

structure(list(X_ = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), Y_ = c(0.00485082338451504, 
-0.0168046606213001, 0.0271922543834244, 0.00553894528785559, 
0.0459064669618974, 0.0735144938632293, 0.0368605806880207, 0.0597490764776278, 
0.0244300474780141, 0.00904348896641594), Window_5 = c(-4, -3, 
-2, -1, 0, 1, 2, 3, 4, 5), Window_2 = c(-1, 0, 1, 2, 3, 4, 5, 
6, 7, 8)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", 
"data.frame"), na.action = structure(c(`1` = 1L), class = "exclude"))
  X_     Y_      Window_5 Window_2
  <dbl>    <dbl>    <dbl>    <dbl>
1     1  0.00485       -4       -1
2     2 -0.0168        -3        0
3     3  0.0272        -2        1
4     4  0.00554       -1        2
5     5  0.0459         0        3
6     6  0.0735         1        4
7     7  0.0369         2        5
9     9  0.0244         4        7
10    10  0.00904        5        8

哪里Window_5 = X_-5Window_2 = X_-2。我正在寻找一条简单回归线的 beta 和 alpha,其中 alpha 和 beta:

在此处输入图像描述

但是,挑战是我需要给定窗口的每一行的这些参数X_。例如,对于X_=7回归线应该只考虑X_从 开始Window_5和结束的行Window_2,在这种情况下X_=7,窗口将从X_=2X_=5

所以,预期的输出是:(我在excel中做了这个并仔细检查了它,所以值应该是正确的)

在此处输入图像描述

PS:如果您可以添加错误,那就太好了,但严格来说不需要。

标签: rdplyrtime-seriestidyverselinear-regression

解决方案


如果您只需要一个固定宽度的滑动窗口回归(在您的情况下为 4,但与您的示例格式不完全相同),也许看看 rollRegres 包?

library(rollRegres)
roll_regres(Y_ ~ X_, data = dd, width=4)

推荐阅读