如何比较 2 个非平稳时间序列以确定相关性?

机器算法验证 时间序列 相关性 状态
2022-03-03 18:05:57

我有两个数据系列,它们绘制了死亡时的中位年龄随时间的变化。这两个系列都表明随着时间的推移死亡年龄增加,但一个比另一个低得多。我想确定下样本的死亡年龄增加是否与上样本显着不同。

以下是按年份排序的数据(从 1972 年到 2009 年),四舍五入到小数点后三位:

Cohort A    70.257  70.424  70.650  70.938  71.207  71.263  71.467  71.763  71.982  72.270  72.617  72.798  72.964  73.397  73.518  73.606  73.905  74.343  74.330  74.565  74.558  74.813  74.773  75.178  75.406  75.708  75.900  76.152  76.312  76.558  76.796  77.057  77.125  77.328  77.431  77.656  77.884  77.983
Cohort B    5.139   8.261   6.094   12.353  11.974  11.364  12.639  11.667  14.286  12.794  12.250  14.079  17.917  16.250  17.321  18.182  17.500  20.000  18.824  21.522  21.500  21.167  21.818  22.895  23.214  24.167  26.250  24.375  27.143  24.500  23.676  25.179  24.861  26.875  27.143  27.045  28.500  29.318

两个系列都是非固定的 - 请问如何比较两者?我正在使用 STATA。任何建议将不胜感激。

数据图

4个回答

这是一个简单的情况;让我们保持这样。 关键是要专注于重要的事情:

  • 获取有用的数据描述。

  • 评估与该描述的个体偏差。

  • 评估机会在解释中的可能作用和影响。

  • 保持知识完整性和透明度。

仍然有许多选择,许多形式的分析将是有效和有效的。让我们在这里说明一种方法,可以推荐它遵守这些关键原则。

为了保持完整性,让我们将数据分成两半:从 1972 年到 1990 年的观察结果和从 1991 年到 2009 年的观察结果(每个数据 19 年)。我们将模型拟合到前半部分,然后看看拟合在预测后半部分时的效果如何。这具有额外的优势,可以检测到下半年可能发生的重大变化。

为了获得有用的描述,我们需要 (a) 找到一种方法来衡量变化,并 (b) 拟合适合这些变化的最简单模型,对其进行评估,然后迭代地拟合更复杂的模型以适应与简单模型的偏差。

(a) 您有很多选择:您可以查看原始数据;你可以看看他们的年度差异;你可以用对数做同样的事情(评估相对变化);您可以评估失去的生命年数或相对预期寿命 (RLE);或许多其他事情。经过一番思考,我决定考虑 RLE,定义为队列 B 的预期寿命与(参考)队列 A 的比率。幸运的是,如图所示,队列 A 的预期寿命在稳定的情况下定期增加随着时间的流逝,RLE 中的大部分看起来随机的变化将是由于 Cohort B 的变化。

(b) 最简单的可能模型是线性趋势。让我们看看它的效果如何。

图1

该图中的深蓝色点是为拟合而保留的数据;浅金色点为后续数据,不用于拟合。黑线是拟合,斜率为 0.009/年。虚线是各个未来值的预测区间。

总体而言,拟合看起来不错:残差检查(见下文)显示,随着时间的推移(在 1972-1990 数据期间),它们的大小没有重要变化。(有一些迹象表明,当预期寿命较低时,它们在早期往往更大。我们可以通过牺牲一些简单性来处理这种复杂情况,但估计趋势的好处不太可能很大。)只有最微小的暗示序列相关性(表现为一些正残差和负残差运行),但显然这并不重要。没有异常值,这将由预测带之外的点指示。

令人惊讶的是,在 2001 年,这些值突然下降到较低的预测范围并保持在那里:相当突然和大的事情发生并持续存在。

这是残差,它们是与前面提到的描述的偏差

图 2

因为我们想要将残差与 0 进行比较,所以将垂直线绘制到零水平作为视觉辅助。同样,蓝点显示用于拟合的数据。浅金色是 2000 年后接近预测下限的数据的残差。

从这个数字我们可以估计2000-2001年变化的影响约为-0.07这反映了队列 B 整个生命周期中突然下降 0.07 (7%)。在那次下降之后,残差的水平模式显示之前的趋势仍在继续,但处于新的较低水平。这部分分析应该被认为是探索性的:它不是特别计划的,而是由于保留数据(1991-2009)与其余数据的拟合之间的惊人比较而产生的。

另一件事——即使只使用最早的 19 年数据,斜率的标准误差也很小:它只有 0.0009,仅为 0.009 估计值的十分之一。对应的 t 统计量为 10,自由度为 17,非常显着(p 值小于107); 也就是说,我们可以确信趋势不是偶然的。 这是我们评估机会在分析中的作用的一部分。其他部分是残差的检查。

似乎没有理由为这些数据拟合更复杂的模型,至少不是为了估计 RLE 随着时间的推移是否存在真正的趋势:有一个。我们可以更进一步,将数据拆分为 2001 年之前的值和 2000 年之后的值,以改进我们的估计趋势,但进行假设检验并不完全诚实。p 值会人为地降低,因为没有提前计划拆分测试。但作为一项探索性练习,这样的估计是可以的。从您的数据中学习一切!请注意不要用过度拟合(如果您使用超过六个左右的参数或使用自动拟合技术,这几乎肯定会发生)或数据窥探来欺骗自己:请注意正式确认和非正式确认之间的区别(但有价值的)数据探索。

让我们总结一下:

  • 通过选择适当的预期寿命测量(RLE),保留一半数据,拟合一个简单模型,并根据剩余数据测试该模型,我们非常有信心地确定: 有一个一致的趋势;它在很长一段时间内一直接近线性;2001 年,RLE 突然持续下降。

  • 我们的模型非常简洁:它只需要两个数字(斜率和截距)就可以准确地描述早期数据。它需要三分之一(中断日期,2001 年)来描述明显但出乎意料的背离这种描述。这个三参数描述没有异常值。通过描述序列相关性(通常是时间序列技术的重点)、试图描述所展示的小个体偏差(残差)或引入更复杂的拟合(例如添加二次时间分量),该模型不会得到实质性改进或对残差大小随时间的变化进行建模)。

  • 趋势是每年 0.009 RLE这意味着随着时间的推移,队列 B 中的预期寿命增加了完整预期正常寿命的 0.009(几乎 1%)。在研究过程中(37 年),这相当于 37*0.009 = 0.34 = 整个生命周期改善的三分之一。2001 年的挫折将这一收益减少到从 1972 年到 2009 年整个生命周期的 0.28 倍(尽管在此期间总体预期寿命增加了 10%)。

  • 尽管可以改进此模型,但它可能需要更多参数,并且改进不太可能很大(正如残差的近随机行为所证明的那样)。因此,总的来说,我们应该满足于以如此少的分析工作获得如此紧凑、有用、简单的数据描述。

我认为 whuber 的答案直截了当,对于像我这样的非时间序列的人来说是一个简单的答案。我的基础是他的。我的答案是 R 而不是 Stata,因为我不太了解 stata。

我想知道这个问题是否实际上是要我们看看两个队列的绝对同比增长是否相同(而不是相对)。我认为这很重要,并说明如下。考虑以下玩具示例:

a <- 21:40
b <- 41:60
x <- 1:20
plot(y = a, x = x, ylim = c(0, 60))
points(y = b, x = x, pch = 2)

在此处输入图像描述

在这里,我们有 2 个队列,每个队列的中位生存率每年都稳定增长 1 年。因此,本示例中的两个队列每年都会增加相同的绝对数量,但 RLE 给出以下信息:

rle <-  a / b
plot(rle)

在此处输入图像描述

其中明显有上升趋势,而p值用来检验线0的梯度为2.2e-16的假设。拟合的直线(让我们忽略这条线看起来是弯曲的)的梯度为 0.008。因此,即使两个队列在一年内的绝对增幅相同,RLE 也有上升的斜率。

因此,如果您在寻找绝对增加时使用 RLE,那么您将不恰当地拒绝原假设。

使用提供的数据,计算我们得到的群组之间的绝对差异: 在此处输入图像描述

这意味着中位生存期之间的绝对差异正在逐渐减小(即生存期较差的队列逐渐接近生存期较好的队列)。

这两个时间序列似乎具有确定性趋势。这是您在进一步分析之前显然要删除的一种关系。就个人而言,我将按照以下方式进行:

1)我会针对常数和时间对每个时间序列进行回归,并计算每个时间序列的残差。

2) 取上面步骤中计算的两个残差序列,我将运行一个简单的线性回归(没有常数项)并查看 t 统计量、p 值,并确定两者之间是否存在进一步的依赖关系两个系列。

此分析假设您在线性回归中所做的假设相同。

在某些情况下,人们知道可以用来检验您的假设的理论模型。在我的世界里,“知识”通常是不存在的,人们必须求助于统计技术,这些技术可以归类为探索性数据分析,总结以下内容。在分析非平稳的时间序列数据时,即具有自相关属性的简单互相关测试是经常误导,因为很容易发现误报。对此的最早分析之一是在 Yule, GU, 1926 年,“为什么我们有时会在时间序列之间得到无意义的相关性?抽样研究和时间序列的性质”,皇家统计学会杂志 89, 1– 64 . 或者,当一个或多个系列本身受到异常活动的影响时(参见 whuber “ 队列 B 在 2001 年的突然挫折)可以有效地隐藏重要的关系。现在检测时间序列之间的关系不仅可以检查同时期的关系,还可以检查可能的滞后关系。继续,如果任一序列受到异常(一次性事件)的影响,那么我们必须通过调整这些一次性扭曲来加强我们的分析。时间序列的文献指出了如何通过预白化来识别关系,以便更清楚地识别结构。预白化在识别相互关联结构之前调整内部关联结构。请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:现在检测时间序列之间的关系不仅可以检查同时期的关系,还可以检查可能的滞后关系。继续,如果任一序列受到异常(一次性事件)的影响,那么我们必须通过调整这些一次性扭曲来加强我们的分析。时间序列的文献指出了如何通过预白化来识别关系,以便更清楚地识别结构。预白化在识别相互关联结构之前调整内部关联结构。请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:现在检测时间序列之间的关系不仅可以检查同时期的关系,还可以检查可能的滞后关系。继续,如果任一序列受到异常(一次性事件)的影响,那么我们必须通过调整这些一次性扭曲来加强我们的分析。时间序列的文献指出了如何通过预白化来识别关系,以便更清楚地识别结构。预白化在识别相互关联结构之前调整内部关联结构。请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:如果任何一个系列都受到异常(一次性事件)的影响,那么我们必须通过调整这些一次性扭曲来加强我们的分析。时间序列的文献指出了如何通过预白化来识别关系,以便更清楚地识别结构。预白化在识别相互关联结构之前调整内部关联结构。请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:如果任何一个系列都受到异常(一次性事件)的影响,那么我们必须通过调整这些一次性扭曲来加强我们的分析。时间序列的文献指出了如何通过预白化来识别关系,以便更清楚地识别结构。预白化在识别相互关联结构之前调整内部关联结构。请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:请注意,关键词是识别结构。这种方法很容易导致以下“有用的模型”:

Y(T) = -194.45
+[X1(T)][(+ 1.2396+ 1.6523B** 1)]

   +[X2(T)][(- 3.3924)]                :PULSE          3

   +[X3(T)][(- 2.4760)]                :LEVEL SHIFT   30 reflecting persistant  unusal activity

   +[X4(T)][(+ 1.1453)]                :PULSE         29

   +[X5(T)][(- 2.7249)]                :PULSE         11

   +[X6(T)][(+ 1.5248)]                :PULSE         27

   +[X7(T)][(+ 2.1361)]                :PULSE          4

   +[X8(T)][(+ 1.6395)]                :PULSE         13

   +[X9(T)][(- 1.6936)]                :PULSE         12

   +[X10(T)[(- 1.6996)]                :PULSE         19

   +[X11(T)[(- 1.2749)]                :PULSE         10

   +[X12(T)[(- 1.2790)]                :PULSE         17

  +       [A(T)]

这表明 1.2936 的当代关系和 1.6523 的滞后效应。请注意,有很多年发现了异常活动,即。(1975、2001、1983、1999、1976、1985、1984、1991 和 1989)。这些年的调整让我们更清楚地评估这两个系列之间的关系。

在做出预测方面

模型表示为 XARMAX
Y[t] = a[1]Y[t-1] + ... + a[p]Y[tp]
+ w[0]X[t-0] + ... + w [r]X[tr]
+ b[1]a[t-1] + ... + b[q]a[tq]
+ 常数

右手边常数是:-194.45

COHORTA 0 1.239589 X(39) * 78.228616 = 96.971340

COHORTA 1 1.652332 X(38) * 77.983000 = 128.853835

I~L00030 0 -2.475963 X( 39 ) * 1.000000 = -2.475963

      NET PREDICTION FOR Y(    39 )=                     28.894826 

从 Cohorta 的 ARIMA 模型获得的时间段 39 (78.228616) 的 CohortA 预测当然需要四个系数。