我正在研究时间序列模型,我有问题要了解哪些时间序列是静止的确定性趋势,哪些是随机趋势。我使用了adf.test
,kpss.test
,Box.test
,PP.test
,但他们只测试了平稳性,而不是确定性/随机性。我正在寻找R中的测试/函数,如果趋势是随机的或确定的,则给出答案:)
我在考虑kpss.test
,但我不知道如何解释结果。
描述计算Kwiatkowski-Phillips-Schmidt-Shin(KPSS)检验的零假设,即x是水平或趋势平稳。
用法
kpss.test(x, null = c("Level", "Trend"), lshort = TRUE)
参数
x数值向量或单变量时间序列。
null表示零假设,必须是“级别”(默认)或“趋势”之一。 您只能指定首字母。
lshort一个逻辑,指示截断滞后参数的短版本还是长版本 使用。
谢谢!
答案 0 :(得分:0)
tseries::kpss
测试计算kpss测试统计量(here关于如何从交叉验证中解释它的讨论。
简而言之,如果您的测试统计量大于对应于等级a的临界值,您将自信地拒绝您的原假设a。关于tseries中kpss实现的一个有点令人困惑的事情是,测试的确切p值没有封闭形式的解决方案。该功能只是将您的临界值与某些预设风险级别进行比较。
例如,
x <- rnorm(1000) # is level stationary
kpss.test(x)
返回
KPSS Test for Level Stationarity
KPSS Level = 0.084751, Truncation lag parameter = 7, p-value = 0.1
Warning message:
In kpss.test(x) : p-value greater than printed p-value
阅读本文的方法是
换句话说,您的原假设不会被拒绝。
如果您使用提供的示例here,并注意返回的警告消息,您应该能够解决这个问题。
Kpss测试已知功能不足,因此如果kpss测试表明您的时间序列具有单位根(&#34;随机趋势&#34;),那么进行其他测试(例如adf)也是有意义的确认一下。