ADF 和 KPSS 单位根检验的结果相互矛盾

机器算法验证 时间序列 平稳性 单位根 增强的 dickey-fuller kpss测试
2022-02-27 21:44:53

为了检查数据是否平稳,我计算了 KPSS 和 ADF 测试并得到以下结果

adf.test(td,alternative = "stationary")

    Augmented Dickey-Fuller Test

data:  td
Dickey-Fuller = -3.7212, Lag order = 3, p-value = 0.03058
alternative hypothesis: stationary

在这里,p 值 <0.05,这表明数据是平稳的。

kpss.test(td, null="Level")
Warning message:
In kpss.test(td, null = "Level") : p-value smaller than printed p-value
KPSS Test for Level Stationarity

data:  td
KPSS Level = 1.7174, Truncation lag parameter = 1, p-value = 0.01

kpss.test(td, null="Trend")


    KPSS Test for Trend Stationarity

data:  td
KPSS Trend = 0.17075, Truncation lag parameter = 1, p-value = 0.02938

在这里,数据似乎是可接受的水平平稳性和趋势平稳性,因为 p 值小于 0.05。由于 ADF 和 KPSS 的结果相互矛盾,我很困惑数据是否平稳。如果我的理解在某处有误,或者在这种情况下我是否需要进行更多测试,请告诉我。

4个回答

请看我对以下问题的回答。平稳检验和单位根检验有什么区别?这是答案中最重要的部分:

如果您有一个时间序列数据集,它通常如何出现在计量经济时间序列中,我建议您应该同时应用单位根检验:(增强的)Dickey Fuller 或 Phillips-Perron,具体取决于基础数据的结构和 KPSS 检验。

案例1:单位根检验:你不能拒绝KPSS 测试:拒绝两者都暗示该系列具有单位根。H0H0

案例 2:单位根检验:拒绝KPSS 测试:不要拒绝两者都暗示该系列是静止的。H0H0

案例 3如果我们不能拒绝这两个测试:数据没有提供足够的观察结果。

案例 4拒绝单位根,拒绝平稳性:两个假设都是分量假设——系列中的异方差可能会产生很大的差异;如果存在结构性中断,则会影响推理。


编辑:在案例 4 中,一种更深刻的方法是应用方差比测试。如果数据是“在平稳性和单位根之间”,则方差比测试会为您呈现一个介于 0 和 1 之间的值。由于方差比检验不仅确认或拒绝原假设,而且为您提供连续值,因此它可以更详细地捕获混合。它还可以让您深入了解数据的可视化。

“在这里,数据似乎可以接受水平平稳性和趋势平稳性,因为 p 值小于 0.05。”
KPSS 的 H0 是数据是平稳的。那么我们不应该拒绝 H0(p 值 <0.05)并推断非平稳吗?

您没有将检验统计量(ADF 统计量和 KPSS 统计量)与临界值进行比较,而只是查看 p 值。如果您检查,它们仍然有可能给出相互矛盾的结果。但结果将是 ADF 说它是静止的,而 KPSS 说它是非静止的。这意味着不存在单位根,平稳性是趋势平稳性。

有一个可重现的例子来更好地测试和理解会很好。

就是说,我是从我这些天学习的无知的深度讲的,并且遇到了与您完全相同的问题。

我最终发现在我的时间序列中,我有多行具有相同的时间戳(例如[[2020-05-22, 20], [2020-05-21, 10], [2020-05-12, 5],[2020-05-22, 20], [2020-05-21, 10], [2020-05-12, 5]])。这是由于存在另一个功能,使这些条目对于其他计算是必需的。

但事实证明,拥有这些重复项会产生问题,我通过在获得 KPSS 和 ADF 消化的新数据帧之前总结这些值来解决这个问题。在这一点上,他们俩都揭示了非平稳性。也许OP的情况是一样的。

感谢另一个答案,我想我也从中学到了一些东西。