如何使用rollapply访问t统计数据和p值?
请帮忙,并为这个天真的问题道歉。 我有: 我需要使用window=51运行滚动窗口回归。所以我做了:如何使用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
> 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)