R 多时间序列平稳性检验
我有一系列的数据。现在,R 多时间序列平稳性检验,r,time-series,R,Time Series,我有一系列的数据。现在,pd是区分不同元素(有2228个唯一元素)的标识符,Date是日期,excess只是一列值。我想使用Box.test、adf.test和kpss.test在fpp包中测试每个pd的超额的平稳性。为了说明我的意思,以pd=1为例: library(fpp) pd1 <- read.delim("E:/something/something/pd1.txt") # Here I just extracted only the corresponding values
pd
是区分不同元素(有2228个唯一元素)的标识符,Date
是日期,excess
只是一列值。我想使用Box.test
、adf.test
和kpss.test
在fpp
包中测试每个pd
的超额
的平稳性。为了说明我的意思,以pd
=1为例:
library(fpp)
pd1 <- read.delim("E:/something/something/pd1.txt") # Here I just extracted only the corresponding values for pd = 1 from the data file #
excessret <- matrix(0,dim(pd1),1)
excessret[,1] <- pd1[,3]
Box.test(excessret[,1], lag=20, type="Ljung-Box")
adf.test(excessret[,1], alternative="stationary")
kpss.test(excessret[,1])
假设我设定了5%的显著性水平。那么规则是:
1) 对于框。如果p值<0.05=>静止,则测试
2) 对于adf.测试
,如果p值<0.05=>平稳
3) 对于kpss.test
,如果p值>0.05=>平稳(注意不等式的变化)
因此在这种情况下,Box.test
和kpss.test
建议pd=1是固定的,而adf.test
建议pd=1是非固定的
我的问题是,我希望对每一个pd
都这样做,然后计算三个测试中有多少pd
是静止的。例如,使用Box.test
,我希望对每个pd
应用Box.test
,然后查看2228个唯一元素中,有多少被归类为静止元素。然后对其他两个测试重复此步骤
谢谢。您可以这样做,例如:
library(data.table)
DT <- as.data.table(returns)
DT[,Date := as.Date(Date,format='%d/%m/%Y')]
library(fpp)
library(xts)
DT[,{ x = xts(excess,Date)
list(box= Box.test(x)$p.value <0.05 ,
adf= adf.test(x)$p.value <0.05 ,
kpss= kpss.test(x)$p.value >0.05)
},pd]
pd box adf kpss
1: 1 TRUE TRUE FALSE
2: 21 TRUE TRUE FALSE
3: 26 TRUE TRUE FALSE
4: 29 TRUE TRUE FALSE
5: 31 FALSE TRUE FALSE
---
2224: 82840 TRUE TRUE FALSE
2225: 82848 FALSE TRUE FALSE
2226: 82850 TRUE TRUE FALSE
2227: 83053 FALSE TRUE FALSE
2228: 83273 TRUE TRUE FALSE
库(data.table)
从什么时候开始,Ljung-Box测试是平稳性测试?老实说,我这么问是因为你不是第一个这么说的人,我想知道这是不是真的。@Paul我实际上回答了你所联系的问题(尽管它根本没有被提升)。我的观点是,LB测试是一种较强的白噪声条件,因此将错过许多平稳但非白噪声的时间序列。例如,在大时间限制下的强均值回复时间序列(如许多OU过程或AR过程)。它们将无法通过LB测试,但仍处于静止状态。
library(data.table)
DT <- as.data.table(returns)
DT[,Date := as.Date(Date,format='%d/%m/%Y')]
library(fpp)
library(xts)
DT[,{ x = xts(excess,Date)
list(box= Box.test(x)$p.value <0.05 ,
adf= adf.test(x)$p.value <0.05 ,
kpss= kpss.test(x)$p.value >0.05)
},pd]
pd box adf kpss
1: 1 TRUE TRUE FALSE
2: 21 TRUE TRUE FALSE
3: 26 TRUE TRUE FALSE
4: 29 TRUE TRUE FALSE
5: 31 FALSE TRUE FALSE
---
2224: 82840 TRUE TRUE FALSE
2225: 82848 FALSE TRUE FALSE
2226: 82850 TRUE TRUE FALSE
2227: 83053 FALSE TRUE FALSE
2228: 83273 TRUE TRUE FALSE