如何使用rollapply访问t统计数据和p值?

如何使用rollapply访问t统计数据和p值?,r,R,请帮忙,并为这个天真的问题道歉。 我有: 我需要使用window=51运行滚动窗口回归。所以我做了: > library ("zoo") > dolm <- function(x) coefficients (lm(bo_m ~ ., data = as.data.frame(x), model=TRUE)) > res <- rollapplyr (g, 51, dolm, by.column = FALSE) > head(res) Inte

请帮忙,并为这个天真的问题道歉。 我有:

我需要使用window=51运行滚动窗口回归。所以我做了:

> library ("zoo")
> dolm <- function(x) coefficients (lm(bo_m ~ ., data = as.data.frame(x), model=TRUE))
> res <- rollapplyr (g, 51, dolm, by.column = FALSE)

> head(res)
      Intercept       dax        bo_m_lag
[1,] 0.01695970 0.1548448       -0.3846233
[2,] 0.01752946 0.1381642       -0.3781836
[3,] 0.01300192 0.3028419       -0.3549629
[4,] 0.01415457 0.2012890       -0.3341618
[5,] 0.01601414 0.2639384       -0.3486120
[6,] 0.01684621 0.2733759       -0.3482895

> summary (res)
   Intercept              dax           bo_m_lag  
 Min.   :-0.030258   Min.   :-0.71994   Min.   :-0.64239  
 1st Qu.:-0.001953   1st Qu.:-0.05464   1st Qu.:-0.40524  
 Median : 0.003330   Median : 0.26794   Median :-0.35061  
 Mean   : 0.004174   Mean   : 0.35349   Mean   :-0.32037  
 3rd Qu.: 0.014527   3rd Qu.: 0.90471   3rd Qu.:-0.26593  
 Max.   : 0.030142   Max.   : 1.30679   Max.   : 0.01971  
>库(“动物园”)
>多尔姆资源中心(资源中心)
截获dax bo_m_滞后
[1,] 0.01695970 0.1548448       -0.3846233
[2,] 0.01752946 0.1381642       -0.3781836
[3,] 0.01300192 0.3028419       -0.3549629
[4,] 0.01415457 0.2012890       -0.3341618
[5,] 0.01601414 0.2639384       -0.3486120
[6,] 0.01684621 0.2733759       -0.3482895
>摘要(res)
截获dax bo_m_滞后
最小值-0.030258最小值-0.71994最小值-0.64239
第一区:--0.001953第一区:--0.05464第一区:--0.40524
中值:0.003330中值:0.26794中值:-0.35061
平均值:0.004174平均值:0.35349平均值:-0.32037
第三区:0.014527第三区:0.90471第三区:-0.26593
最大值:0.030142最大值:1.30679最大值:0.01971
问题:如何计算滚动窗口回归以获得t和p值

多谢各位,
roman

创建
g
并在其上运行修订的
dolm

Lines <- "  bo_m          dax             bo_m_lag
 -0.040131270  0.001842860      0.032612438
  0.112425025 -0.018043681     -0.040131270
 -0.078987920 -0.009463752      0.112425025
 -0.011990692  0.020144077     -0.078987920
 -0.005279136  0.013360796     -0.011990692
  0.055994660 -0.004568196     -0.005279136
"

library(zoo)
g <- read.table(text = Lines,  header = TRUE)
dolm <- function(x) {
  co <- coef(summary(lm(bo_m ~., as.data.frame(x))))
  c(Est = co[, 1], SE = co[, 2], t = co[, 3], P = co[, 4])
}
r <- rollapplyr(g, 4, dolm, by.column = FALSE)

line还有一个问题:为什么不需要函数(x)中的'as.data.frame(x)'和rollappy中的'by.column=FALSE'呢?这是一个很好的观点。我已经做了更正,还注意到生成名称的代码可以在移动到
dolm
函数后简化。非常感谢。它工作得很好。但这里还有另一个问题:我有310次观察——从1986年15月到2002年18月的每周数据;一年中大约有51-52周。所以我去了52号窗口。在步骤“1”中,结果的数量应该在514左右。不是吗?但是我得到了258…不清楚步骤1指的是什么,但是如果g中有n行,并且窗口是w宽的,那么对于g中的每一组行,r中都会有一行:1:w,2:w+1),…,(n-w+1):n,所以在r中总共应该有n-w+1行。例如,我们上面有n=6和w=4,所以n-w+1=6-4+1=3,发现r确实有3行。对于n=310,w=52,我们应该在r中有310-52+1=259行。是的,你是对的,但我有以下开始/结束(w=52):1996w17/1997w16 1996w18/1997w17 1996w19/1997w18 1996w19 1997w18 1996w19 1997w18 1996w20 1997w19。。。。。。。。。。。。。。。1999w1 1999w52 1999w2 2000w1。。。。。。。。。。。。。。2001w13/2002w12 2001w14/2002w13 2001w14/2002w13和…它是514。。。
Lines <- "  bo_m          dax             bo_m_lag
 -0.040131270  0.001842860      0.032612438
  0.112425025 -0.018043681     -0.040131270
 -0.078987920 -0.009463752      0.112425025
 -0.011990692  0.020144077     -0.078987920
 -0.005279136  0.013360796     -0.011990692
  0.055994660 -0.004568196     -0.005279136
"

library(zoo)
g <- read.table(text = Lines,  header = TRUE)
dolm <- function(x) {
  co <- coef(summary(lm(bo_m ~., as.data.frame(x))))
  c(Est = co[, 1], SE = co[, 2], t = co[, 3], P = co[, 4])
}
r <- rollapplyr(g, 4, dolm, by.column = FALSE)