【问题标题】:Test in R for checking if the trend is stochastic or deterministic在 R 中测试以检查趋势是随机的还是确定的
【发布时间】:2018-06-27 13:22:31
【问题描述】:

我正在研究时间序列模型,但我无法理解哪些时间序列在 确定性 趋势下是平稳的,哪些在 随机 趋势下是平稳的。我使用了adf.testkpss.testBox.testPP.test,但它们只测试平稳性,而不是确定性/随机性的东西。我正在寻找 R 中的测试/函数,如果趋势是随机的或确定的,可以给出答案:)

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

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

用法

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

参数

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

null 表示原假设,必须是“水平”(默认)或“趋势”之一。 您可以只指定首字母。

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

谢谢!

【问题讨论】:

    标签: r testing time-series data-modeling


    【解决方案1】:

    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。

    换句话说,您的原假设没有被拒绝。

    如果您使用here 提供的示例并注意返回的警告消息,您应该能够弄清楚这一点。

    众所周知,Kpss 测试的能力不足,因此如果 kpss 测试表明您的时间序列具有单位根(“随机趋势”),那么进行其他测试(例如 adf)来确认这一点也是有意义的。

    【讨论】:

    • 非常感谢!这是水平平稳性 - 这意味着随机趋势的平稳性,对吗?但是,如果我在 KPSS 中使用“趋势平稳性”,则会出现空平稳性:趋势平稳性(所以具有确定性趋势?)
    • 1) 水平平稳性 = 均值随时间保持不变 = 没有单位根,没有确定性趋势。 2)趋势平稳性=确定性平均变化=确定性时间趋势,没有单位根。
    • 谢谢!我应该对时间序列或时间序列的第一个差异使用 kpss 测试而不进行修改吗?
    • 很难说不知道你在做什么。但总的来说,您可能希望使用 KPSS 来找出需要进行哪些转换才能使您的时间序列保持稳定。例如,如果 KPSS 表明您的时间序列具有单位根,那么您可能希望首先进行差分以使其平稳。
    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 2012-05-10
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多