在R中测试以检查趋势是随机的还是确定的

时间:2018-01-18 12:52:06

标签: r testing time-series data-modeling

我正在研究时间序列模型,我有问题要了解哪些时间序列是静止的确定性趋势,哪些是随机趋势。我使用了adf.testkpss.testBox.testPP.test,但他们只测试了平稳性,而不是确定性/随机性。我正在寻找R中的测试/函数,如果趋势是随机的或确定的,则给出答案:)

我在考虑kpss.test,但我不知道如何解释结果。

  

描述计算Kwiatkowski-Phillips-Schmidt-Shin(KPSS)检验的零假设,即x是水平或趋势平稳。

     

用法

kpss.test(x, null = c("Level", "Trend"), lshort = TRUE)
     

参数

     

x数值向量或单变量时间序列。

     

null表示零假设,必须是“级别”(默认)或“趋势”之一。   您只能指定首字母。

     

lshort一个逻辑,指示截断滞后参数的短版本还是长版本   使用。

谢谢!

1 个答案:

答案 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

阅读本文的方法是

  1. 你的零假设是水平平稳性,
  2. 您的测试统计信息的值为0.084751和
  3. 与测试属性相关联的p值大于0.1。
  4. 换句话说,您的原假设不会被拒绝。

    如果您使用提供的示例here,并注意返回的警告消息,您应该能够解决这个问题。

    Kpss测试已知功能不足,因此如果kpss测试表明您的时间序列具有单位根(&#34;随机趋势&#34;),那么进行其他测试(例如adf)也是有意义的确认一下。