所以我想在循环中运行adfTest
with lag=0
and type="c"
,所以起始窗口是 oflength=5
而结束窗口是lenght=nrow(Data)
. 问题是我希望开始窗口是固定的,所以如果数据包含 10 个数据点,第一个结果来自1:5
,第二个1:6
,依此类推,直到它完成1:10
。
我试图用 rollapply 来做,但它不能以这种方式工作,我拥有的代码是:
num_dividends <- nrow(C)
rw<-4
sample_interval <- 1
wi <- list()
DF <- matrix(0, nrow=num_dividends, ncol=num_dividends)
for(i in 1:(num_dividends-rw-1) ) {
wi <- c(wi,list(list(c(window_size=rw+i,sample_interval=sample_interval),
DF=cbind(Date=seq(rw+i, num_dividends, by=sample_interval),
statistic=rollapplyr(C$Dividend, rw+i, function(u) adfTest(u)@test$statistic,by=sample_interval,partial=T)))))
DF[seq((rw+i),num_dividends,sample_interval), i+rw] <- wi[[i]]$DF[,"statistic"]
}
它的作用是它创建了一个矩阵,我使用后者进行其他计算,并使用相应的丢失数据,这要归功于起始窗口。但问题是起始窗口不是固定的,所以第一个观察来自,1:5
但第二个来自2:6
; 它还计算 ADF,lag=1
我不知道如何添加函数的rollapplyr
选项lag=0
。
为了更清楚,假设我这样做rollapplyr(C$Dividend, 5, FUN=mean,by=sample_interval)
了,随后的数据是我得到的结果和我想要的结果。
Dividend This is What I Want This is What I Get
1 NA NA
2 NA NA
3 NA NA
4 NA NA
5 3 3
6 3.5 4
7 4 5
8 4.5 6
9 5 7
请注意,我想在循环中执行此操作,因为我希望每次完成循环时宽度都会增加,直到窗口是整个数据集的大小。