如何知道时间序列是平稳的还是非平稳的?

机器算法验证 r 时间序列 平稳性 增强的 dickey-fuller kpss测试
2022-02-09 01:39:56

我正在使用 R,我在 Google 上搜索并了解到kpss.test(),PP.test()adf.test()用于了解时间序列的平稳性。

但我不是统计学家,谁可以解释他们的结果

> PP.test(x)

     Phillips-Perron Unit Root Test
data:  x 
Dickey-Fuller = -30.649, Truncation lag parameter = 7, p-value = 0.01

> kpss.test(b$V1)

  KPSS Test for Level Stationarity
  data:  b$V1 
  KPSS Level = 0.0333, Truncation lag parameter = 3, p-value = 0.1

Warning message:
In kpss.test(b$V1) : p-value greater than printed p-value
> adf.test(x)

    Augmented Dickey-Fuller Test

data:  x 
Dickey-Fuller = -9.6825, Lag order = 9, p-value = 0.01
alternative hypothesis: stationary

Warning message:
In adf.test(x) : p-value smaller than printed p-value

我正在处理数千个时间序列,请告诉我如何定量检查时间序列的平稳性。

3个回答

平稳性意味着过程的边际分布不随时间变化。较弱的形式表明均值和方差随时间保持不变。因此,无论出于何种愚蠢的原因,任何违反它的东西都将被视为非固定的。例如,确定性yt=sint 是非平稳的,因为它的平均值不断变化,尽管从表面上看,这是一个非常简单且可预测的过程。

您正在考虑的所有测试都有一个特定的替代方案:随机游走过程

yt=yt1+ϵt
或对其进行一些简单的修改(例如,包括额外的滞后yt2,yt3系数小)。这是一个有效金融市场的简单模型,其中没有任何信息可用于预测价格的未来变化。大多数经济学家认为他们的时间序列来自 ARIMA 模型。这些时间序列具有明确定义的时间段(月、季度或年),因此对于它们而言,它很少会比集成的时间序列更糟糕。因此,这些测试并不是为更复杂的违反平稳性而设计的,例如均值变化、方差变化、自回归系数的变化等,尽管显然也已经开发了针对这些影响的测试。

在工程或自然科学中,您更有可能遇到具有更复杂问题的时间序列,例如长程依赖、分数积分、粉红噪声等。由于对典型时间尺度的过程描述缺乏明确的指导(气候变化的频率如何?),在频域中分析数据通常更有意义(而对于经济学家来说,频域非常清楚:有年度季节性周期,加上更长的 3-4-5 年商业周期; 否则几乎不会发生意外)。

所以基本上我告诉了你为什么你不想做你打算做的事情。如果你不了解时间序列,你最好找一个懂的人并支付咨询费,而不是因为你做了一些愚蠢的事情而把你的项目搞砸了。话虽如此,您的问题的正式解决方案是拒绝平稳序列的原假设,对于给定的序列,至少一个测试具有p-值低于0.05/(3M)在哪里M是系列的总数,3是您对它们执行的测试次数,0.05是最喜欢的 5% 显着性水平,整个表达式称为 Bonferroni 多次检验校正。输出不显示p-values 具有足够的准确性,因此您需要将它们作为返回的类成员提取,例如pp.test(x)$p.value. 无论如何,您将在循环中执行此操作,因此如果您抑制所有输出,并且仅生成无法平稳性的变量的名称,这可能就足够了。

测试一个序列是平稳还是非平稳需要您考虑一系列替代假设。每个可列出的高斯假设一个。必须了解,高斯假设都是关于误差过程的,与正在评估的观察序列无关。正如 StasK 正确总结的那样,这可能包括违反平稳性,例如均值变化、方差变化、模型参数随时间的变化。例如,一组向上趋势的值将是一个在 Y 中不是恒定的序列的初步示例,而来自合适模型的残差可能被描述为具有恒定的平均值。因此,原始序列的均值是非平稳的,但残差序列的均值是平稳的。如果残差系列中存在未缓解的平均违规,例如脉冲、电平转换、季节性脉冲和/或本地时间趋势,则残差系列(未处理)可以被描述为平均值非平稳,而一系列指标变量可能是很容易检测到并合并到模型中,以使模型残差在平均值中保持稳定。现在,如果原始序列的方差表现出非平稳方差,那么限制过滤器/模型以呈现具有恒定方差的误差过程是非常合理的。类似地,模型的残差可能具有非常量的方差,需要三种可能的补救措施之一 - 季节性脉冲和/或本地时间趋势,则残差序列(未处理)可以被表征为在平均值中是非平稳的,而一系列指标变量可以很容易地被检测到并将其合并到模型中以使模型残差在平均值中是平稳的. 现在,如果原始序列的方差表现出非平稳方差,那么限制过滤器/模型以呈现具有恒定方差的误差过程是非常合理的。类似地,模型的残差可能具有非常量的方差,需要三种可能的补救措施之一 - 季节性脉冲和/或本地时间趋势,则残差序列(未处理)可以被表征为在平均值中是非平稳的,而一系列指标变量可以很容易地被检测到并将其合并到模型中以使模型残差在平均值中是平稳的. 现在,如果原始序列的方差表现出非平稳方差,那么限制过滤器/模型以呈现具有恒定方差的误差过程是非常合理的。类似地,模型的残差可能具有非常量的方差,需要三种可能的补救措施之一 - 现在,如果原始序列的方差表现出非平稳方差,那么限制过滤器/模型以呈现具有恒定方差的误差过程是非常合理的。类似地,模型的残差可能具有非常量的方差,需要三种可能的补救措施之一 - 现在,如果原始序列的方差表现出非平稳方差,那么限制过滤器/模型以呈现具有恒定方差的误差过程是非常合理的。类似地,模型的残差可能具有非常量的方差,需要三种可能的补救措施之一 -

  1. 加权最小二乘(一些分析师普遍忽视)
  2. 将期望值与可通过 Box-Cox 检验和/或可识别的误差方差解耦的幂变换
  3. 需要一个 GARCH 模型来解释平方残差中明显的 ARIMA 结构。如果参数随时间变化或模型的形式随时间变化,则需要继续检测这一特征,并通过数据分割或使用 TAR 方法(à la Tong)对其进行补救。

如果时间序列的平均水平和方差随时间保持稳定,则时间序列是平稳的。您可以在我们的帖子中阅读有关此主题的更多信息(带有 R 中相关测试的规范)。 http://www.statosphere.com.au/check-time-series-stationary-r/