r - 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_-5
和Window_2 = X_-2
。我正在寻找一条简单回归线的 beta 和 alpha,其中 alpha 和 beta:
但是,挑战是我需要给定窗口的每一行的这些参数X_
。例如,对于X_=7
回归线应该只考虑X_
从 开始Window_5
和结束的行Window_2
,在这种情况下X_=7
,窗口将从X_=2
到X_=5
。
所以,预期的输出是:(我在excel中做了这个并仔细检查了它,所以值应该是正确的)
PS:如果您可以添加错误,那就太好了,但严格来说不需要。
解决方案
如果您只需要一个固定宽度的滑动窗口回归(在您的情况下为 4,但与您的示例格式不完全相同),也许看看 rollRegres 包?
library(rollRegres)
roll_regres(Y_ ~ X_, data = dd, width=4)