使用 rollapply 进行 ADF 测试

ADF Test using rollapply

我想知道是否有办法在给定的时间间隔内进行 ADF 测试。下面是我计算每 20 个样本的平均值的示例:

rollapply(data, 20, FUN = mean)

我想对每 20 个样本使用相同的逻辑和 运行 ADF 测试。因此我使用了以下代码:

n = 24
test <- rollapply(spreadClose, n, FUN = adf.test)

注意:adf.test() 来自名为 "tseries" 的库。

谁能解释为什么这不起作用?我收到以下错误。

Error in dimnames(x) <- dn : length of 'dimnames' [2] not equal to array extent

如果有任何反馈,我将不胜感激!

这个怎么样:

library(zoo)
library(tseries)
z <- zoo(rnorm(100), as.Date(1:100))
rollapplyr(z, 20, adf.test)

我使用了以下代码并开始工作:

adftest <- function(x)
{
    adfPvalue <-  adf.test(x)$p.value
    adfPvalue
}

PValue <- function(x) {
    Pvalue <- rollapply(x, N, adftest)
    Pvalue
}

PValue(out)