【问题标题】:Running test in R with a time window使用时间窗口在 R 中运行测试
【发布时间】:2018-06-16 22:21:12
【问题描述】:

我正在尝试从正在运行的 lepage 测试中获取 lepage 测试统计的时间序列。

时间窗口是 9 年。

这是我使用的数据(1961 年到 2009 年)

structure(list(Year = 1961:2009, Winter = c(11.5714803313, 9.3664362519, 
14.3399332592, 14.1548003072, 10.0271889401, 16.1278801843, 7.5481110699, 
2.6131336406, 14.9045698925, 11.9352150538, 19.3715609937, 8.3156298003, 
20.686328725, 9.9734639017, 18.7517612162, 19.7309907834, 4.5365207373, 
13.7009600614, 8.3644790508, 8.325, 8.4933179724, 9.4112135177, 
5.2000370782, 8.7163210445, 9.0083333333, 3.449078341, 10.2567296997, 
13.4682795699, 6.877764977, 6.4040706605, 6.9916944753, 6.4950076805, 
16.0668202765, 7.3995391705, 18.5592880979, 7.4816052227, 3.5526113671, 
24.7658218126, 17.7594364108, 18.2832565284, 10.2024577573, 5.6401689708, 
8.047942158, 7.8697388633, 18.4008832565, 9.9166282642, 27.385168706, 
21.0661290323, 4.7410138249)), .Names = c("Year", "Winter"), class = 
"data.frame", row.names = c(NA, 
-49L))

我正在使用 nonpar 包进行 lepage 测试 Link to package

我不知道如何在 R 中实现这一点。 到目前为止,这是我的脚本(这是错误的):

 library(nonpar)
 dat<-read.csv("test.csv",header=T)
 x <- as.numeric(dat$Winter)

 for (i in 1:length(x)){
 #window
 n = 9
     stat<-lepage.test(x[i],x[i:i+n])$obs.stat
  }
 return(stat) 
 } 

我想做什么:

[1] 以 9 年为窗口进行 lepage 测试。在上面的测试数据中,计算应该只从 1970 年开始(1961 年到 1969 年和 1970 年到 1978 年)。那么1971年的值就是(1962年到1970年)和(1971年到1979年)数据之间的lepage检验,以此类推。

[2] 我也尝试过使用 zoo 包中的“rollapplyr”功能,但我不确定这是否正确。

library(zoo)
test<-rollapplyr(x, 9, function(u) lepage.test(u,u+1)$obs.stat)

[3] 对于如何在 R 中实现这一点,我将不胜感激。

【问题讨论】:

    标签: r


    【解决方案1】:

    当你这样做时

    test<-rollapplyr(x, 9, function(u) lepage.test(u,u+1)$obs.stat)
    

    您将获得当前窗口中值的lepage.test,相同的值加1。您可以改为执行以下操作。

    library(zoo)
    library(nonpar)
    x <- zoo(dat$Winter)
    y <- rollapply(x, 9, c)
    pairs <- lapply(1:(nrow(y)-9), function(i) list(x1 = y[i,], x2 = y[i+9,]))
    pairs2 <- lapply(pairs, function(x) lapply(x, as.numeric))
    test <- sapply(1:32, function(i) lepage.test(pairs2[[i]]$x1, pairs2[[i]]$x2)$obs.stat)
    test
    #  [1] 1.8182 2.5782 0.8046 0.2214 0.9449 0.6128 2.4022 7.0955 6.8560 7.8285 5.5361
    # [12] 3.2331 2.6603 2.1228 0.9856 0.6616 1.3692 2.1103 1.1509 0.7352 0.5057 1.5349
    # [23] 3.8019 4.7344 2.2081 2.3770 0.1579 1.1430 3.8876 3.1820 1.8182 0.1435
    

    【讨论】:

    • 太棒了!非常感谢您的帮助!我无法编辑帖子,但应该是:pairs2
    猜你喜欢
    • 2019-12-17
    • 2016-10-24
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多