如何统计比较两个时间序列?

机器算法验证 r 时间序列
2022-01-23 03:03:26

我有两个时间序列,如下图所示:

时间序列图

该图显示了两个时间序列的全部细节,但如果需要,我可以轻松地将其简化为仅重合的观察结果。

我的问题是:我可以使用哪些统计方法来评估时间序列之间的差异?

我知道这是一个相当广泛和模糊的问题,但我似乎在任何地方都找不到太多关于此的介绍性材料。正如我所看到的,有两个不同的事情需要评估:

1. 价值观一样吗?

2. 趋势是否相同?

您建议使用哪种统计测试来评估这些问题?对于问题 1,我显然可以评估不同数据集的均值并寻找分布的显着差异,但是有没有一种方法可以考虑到数据的时间序列性质?

对于问题 2 - 是否有类似 Mann-Kendall 测试的东西来寻找两种趋势之间的相似性?我可以对两个数据集进行 Mann-Kendall 测试并进行比较,但我不知道这是否是一种有效的方法,或者是否有更好的方法?

我在 R 中做所有这些,所以如果你建议测试有一个 R 包,那么请告诉我。

4个回答

正如其他人所说,您需要有一个共同的测量频率(即观察之间的时间)。有了这些,我将确定一个可以合理地分别描述每个系列的通用模型。这可能是一个 ARIMA 模型或一个具有可能水平移位的多趋势回归模型或一个集成了内存 (ARIMA) 和虚拟变量的复合模型。这个通用模型可以针对两个系列中的每一个进行全局和单独估计,然后可以构建一个 F 检验来检验一组通用参数的假设。

考虑lmtestgrangertest()中的。

这是一项测试,看看一个时间序列是否可用于预测另一个时间序列。

一些帮助您入门的参考资料:

https://spia.uga.edu/faculty_pages/monogan/teaching/ts/

https://spia.uga.edu/faculty_pages/monogan/teaching/ts/Kgranger.pdf

http://en.wikipedia.org/wiki/Granger_causality

刚遇到这个。您的第一个答案是我们绘制 g 两组相同的比例(时间)以直观地查看差异。您已经这样做了,并且可以很容易地看到存在一些明显的差异。下一步是使用简单的相关分析...并使用相关系数 (r) 查看它们的相关程度。如果 r 很小,您的结论将是它们之间的相关性较弱,因此没有理想的比较,如果 r 表明两个系列之间有良好的比较 s,则值较大。具有良好相关性的第三步是检验 r 的统计显着性。在这里,您可以使用 Shapiro Welch 检验,假设这两个系列是正态分布的(零假设)或非正态分布(替代假设)。您可以进行其他测试,但希望我的回答对您有所帮助。

我想提出另一种方法。这是为了测试两个时间序列是否相同。这种方法仅适用于自相关性较低的不经常采样的数据。

如果时间序列 x 与时间序列 y 相似,则 xy 的方差应该小于 x 的方差。我们可以使用单边 F 检验来检验这一点。如果比率 var(xy)/var(x) 显着小于 1,则 y 解释了 x 方差的很大一部分。

我们还需要检查 xy 是否与 0 没有显着差异。这可以通过一个样本双面 t.test 来完成。

x <- cumsum(runif(10)-0.5)
t <- seq_along(x)
y <- x + rnorm(10, 0, 0.2)
# y <- x + rnorm(10, 0.2, 0.2)
plot(t,x, "b", col = "red")
points(t,y, "b", col = "blue")

var.test(x-y, x, alternative = "less") # does y improve variance of x?
#> 
#>  F test to compare two variances
#> 
#> data:  x - y and x
#> F = 0.27768, num df = 9, denom df = 9, p-value = 0.03496
#> alternative hypothesis: true ratio of variances is less than 1
#> 95 percent confidence interval:
#>  0.0000000 0.8827118
#> sample estimates:
#> ratio of variances 
#>           0.277679
t.test(x-y) # check that x-y does not have an offset
#> 
#>  One Sample t-test
#> 
#> data:  x - y
#> t = -0.0098369, df = 9, p-value = 0.9924
#> alternative hypothesis: true mean is not equal to 0
#> 95 percent confidence interval:
#>  -0.1660619  0.1646239
#> sample estimates:
#>     mean of x 
#> -0.0007189834

reprex 包于 2021-09-02 创建 (v2.0.0 )

我认为应该可以扩展这种方法来测试两个时间序列是否线性相关,使用 x-lm(x ~ y) 而不是 xy。

编辑:我认为可以通过为测试找到合适的有效自由度来处理自相关,参见https://doi.org/10.1016/j.neuroimage.2019.05.011