如何完全基于曲线的形状进行时间序列(纵向)聚类?

机器算法验证 时间序列 聚类 面板数据 k-均值
2022-04-01 02:42:15

我有一个纵向(面板)数据集,涵盖 1960-2008 年期间 120 个国家的投资增长。本质上,它被视为 120 个时间序列。

我感兴趣的是根据国家随时间增长曲线的形状对它们进行分组。因此,它们是否具有相似的曲线形状是我对这些国家进行分组所需的唯一标准。

我已经尝试过 KmL 包(K-means for Longitudinal Data),但似乎(如果我错了,请纠正我)这种方法产生的结果是,组国家表现出相似的(投资增长)平均值(或幅度),不完全是根据类似的形状。例如,KmL 倾向于将具有高投资增长、平均投资增长中值、投资增长低等的国家分组。这些组中的国家随着时间的推移可能具有非常不同的曲线形状。

我要找的是不管投资增长的绝对值。只要这两个国家在时间曲线上表现出相似的增长模式,就应该将它们归为一组。

谁能告诉我一种实现这种集群的方法?我从以前的帖子中注意到协整检验可能有效。任何建议将不胜感激!

4个回答

如果您对每个系列进行 z 标准化,即先统一系列​​的水平,然后再统一系列的摆动,那么唯一剩下的区别就是形状的不同. 计算 120 系列之间的欧式距离(或类似度量)并执行层次聚类。您可能还希望(也许)首先对曲线进行温和的平滑处理。(XiX¯)/σ

到目前为止,所有建议都依赖于标准的基于矩的时间序列分析方法,并且都是一种 HAC 模型。不过,这个问题专门询问了数据中的模式或形状。马克斯普朗克研究所的 Andreas Brandmaier 开发了一种基于非矩的信息和复杂性理论模式分析时间序列模型,他称之为置换分布分析他编写了一个 R 模块来测试形状的相似性。PDC 作为研究两组相似性的方法,在生物统计学方面有着悠久的历史。Brandmaier 的论文是关于 PDC 和结构方程建模树的。

pdc:用于基于复杂性的时间序列聚类的 R 包,J Stat Software,Andreas Brandmaier

排列分布聚类和结构方程模型树, Brandmaier 论文 PDF

此外,还有 Eamon Keogh 的机器学习iSax方法。

http://www.cs.ucr.edu/~eamonn/

您应该首先区分您的时间序列,即考虑然后,基于相关性的聚类将执行此操作。您应该使用 Spearman 相关性而不是 Pearson 相关性,因为它更通用且对强变化具有鲁棒性。如果您怀疑变异的强度在某种程度上很重要,您可以使用相关性+分布聚类,即每个时间序列都可以视为一个随机变量,其变异的值是实现。Sklar 定理断言,假设的 iid 采样,整个信息可以通过“纯相关”和单独分布来捕获,参见。本文通过对金融时间序列进行聚类来说明该方法,并最终Xt=StSt1XtXt这个链接是一段 Python 代码

或者(暂定建议!!!):对于每个时间点 t=0 ... t=n,您能否创建一个新变量 delta.growth,即 t=i 时的增长 - t=i-1 时的增长. 我不确定这与 Z 分数评估有何不同。发现会很有趣!

您还可以使用联合轨迹解释来模拟绝对增长和 delta.growth。这应该给形状和价值都赋予权重,尽管我对这种方法很幼稚。