我有以下 df:
head(vardata)
Month repo Callrate WPI GDP FED nse usd
1 2001-04-01 9.00 7.49 5.41 4.6 4.50 1125.2 46.79
2 2001-05-01 8.75 8.03 5.60 4.6 4.00 1167.9 46.92
3 2001-06-01 8.50 7.24 5.30 4.6 3.75 1107.9 47.00
4 2001-07-01 8.50 7.19 5.23 5.3 3.75 1072.8 47.14
5 2001-08-01 8.50 6.94 5.41 5.3 3.50 1053.8 47.13
6 2001-09-01 8.50 7.30 4.52 5.3 3.00 913.9 47.65
我想使用以下规则集对所有 7 个变量进行 Box.test、adf.test 和 kpss.test:
假设我将显着性水平设置为 5%。那么规则是:
1) 对于 Box.test,如果 p 值 平稳
2) 对于 adf.test,如果 p 值 平稳
3) 对于 kpss.test,如果 p 值 > 0.05 => 平稳(注意不等式的变化)
我单独进行了测试:
Box.test(ts(df$repo),lag=20,type="Ljung-Box")
Box-Ljung test
data: ts(df$repo)
X-squared = 1100, df = 20, p-value <2e-16
adf.test(ts(df$repo),alternative = "stationary")
Augmented Dickey-Fuller Test
data: ts(df$repo)
Dickey-Fuller = -2.7, Lag order = 5, p-value = 0.3
alternative hypothesis: stationary
kpss.test(ts(df$repo))
KPSS Test for Level Stationarity
data: ts(df$repo)
KPSS Level = 0.32, Truncation lag parameter = 3, p-value = 0.1
# to extract p values
Box.test(ts(df$repo),lag=20,type="Ljung-Box")$p.value
adf.test(ts(df$repo),alternative = "stationary")$p.value
kpss.test(ts(df$repo))$p.value
这是针对所有变量一次完成一个......
但我想一次性对所有 var & 在某种数据框中输出的测试进行所有这些测试,如果可能的话,可能是这样的:
var box.pvalue box adf.pvalue adf kpss.pvalue kpss
repo 0.03 TRUE 0.03 TRUE 0.03 FALSE
Callrate 0.03 TRUE 0.03 TRUE 0.03 FALSE
WPI 0.03 TRUE 0.03 TRUE 0.03 FALSE
GDP 0.03 TRUE 0.03 TRUE 0.03 FALSE
FED 0.51 FALSE 0.03 TRUE 0.03 FALSE
nse 0.03 TRUE 0.03 TRUE 0.03 FALSE
usd 0.45 FALSE 0.03 TRUE 0.03 FALSE
其中 TRUE= 系列是平稳的; FALSE= 级数非平稳
更新——我的尝试
多个时间序列的平稳性检验
multi_stat_tests<- function(df){
for(i in 1:dim(df)[2]){
df_multi<-data.frame(var=names(df)[i],box.pvalue=Box.test(ts(df[,i]),lag=20,type="Ljung-Box")$p.value,adf.pvalue=adf.test(ts(df[,i]),alternative = "stationary")$p.value,kpss.pvalue=kpss.test(ts(df[,i]))$p.value,
box=Box.test(ts(df[,i]),lag=20,type="Ljung-Box")$p.value<0.05,
adf=adf.test(ts(df[,i]),alternative = "stationary")$p.value<0.05,
kpss=kpss.test(ts(df[,i]))$p.value>0.05
)
return(df_multi)
}
}
>multi_stat_tests(df[,2:8])
var box.pvalue adf.pvalue kpss.pvalue box adf kpss
1 repo 0 0.2859 0.1 TRUE FALSE TRUE
它只是只选取一个变量......它没有迭代所有变量......这里缺少一些东西......需要帮助!!!!!!