【发布时间】:2017-11-05 20:25:51
【问题描述】:
我有以下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
vardata_num<-df[,2:8]
我想使用以下规则对所有 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(vardata_num$repo),lag=20,type="Ljung-Box")
Box-Ljung test
data: ts(vardata_num$repo)
X-squared = 1100, df = 20, p-value <2e-16
adf.test(ts(vardata_num$repo),alternative = "stationary")
Augmented Dickey-Fuller Test
data: ts(vardata_num$repo)
Dickey-Fuller = -2.7, Lag order = 5, p-value = 0.3
alternative hypothesis: stationary
kpss.test(ts(vardata_num$repo))
KPSS Test for Level Stationarity
data: ts(vardata_num$repo)
KPSS Level = 0.32, Truncation lag parameter = 3, p-value = 0.1
# to extract p values
Box.test(ts(vardata_num$repo),lag=20,type="Ljung-Box")$p.value
adf.test(ts(vardata_num$repo),alternative = "stationary")$p.value
kpss.test(ts(vardata_num$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(vardata_num)
var box.pvalue adf.pvalue kpss.pvalue box adf kpss
1 repo 0 0.2859 0.1 TRUE FALSE TRUE
它只是拾取一个变量......它没有遍历所有变量......这里缺少一些东西......需要帮助!!!!!
【问题讨论】:
-
最好包含您迄今为止尝试过的内容。你已经概述了你想做的事情,但究竟是什么让你绊倒了?这里的人向您展示如何调整您的代码,而不是为您编写代码要好得多。
-
@rosscova 我已经为每个变量分别完成了所有这些测试......我需要帮助才能在某种循环中完成......跨度>
-
发布您用于“一次一个”测试的代码。向您展示如何迭代您已经拥有的代码将比从头开始要好得多。
-
@rosscova 已编辑并包含测试 ....
标签: r time-series