我有一系列数据here。现在pd
是区分不同元素的标识符(有2228个唯一元素),Date
是日期,excess
只是一列值。我想使用excess
包中的pd
,Box.test
和adf.test
来测试每个kpss.test
的{{1}}的平稳性。为了说明我的意思,以fpp
= 1为例:
pd
三项测试的结果分别为:
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)对于Box-Ljung test
data: excessret[, 1]
X-squared = 47.7202, df = 20, p-value = 0.0004656
Augmented Dickey-Fuller Test
data: excessret[, 1]
Dickey-Fuller = -3.2127, Lag order = 4, p-value = 0.09056
alternative hypothesis: stationary
KPSS Test for Level Stationarity
data: excessret[, 1]
KPSS Level = 0.1942, Truncation lag parameter = 2, p-value = 0.1
,如果p值&lt; 0.05 =&gt;固定
2)对于Box.test
,如果p值< 0.05 =&gt;固定
3)对于adf.test
,如果p值&gt; 0.05 =&gt;静止的(注意不平等的变化)
因此,在这种情况下,kpss.test
和Box.test
建议pd = 1是静止的,而kpss.test
建议pd = 1是非静止的。
我的问题是,我希望为每一个adf.test
执行此操作,然后计算所有三个测试中有多少pd
是静止的。例如,使用pd
,我希望在每个Box.test
上应用Box.test
,然后在2228个独特元素中查看,有多少被归类为静止。然后对其他两个测试重复此操作。
感谢。
答案 0 :(得分:5)
您可以这样做:
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