“在单个时间序列上执行 PCA”是什么意思/做什么?

机器算法验证 时间序列 主成分分析
2022-04-06 09:09:33

是的,我已经看过这里了,但这对我谦虚的头脑来说太高调了(这并不是我想要的)。

想象一下,我们有一个时间进程,x 轴上有时间,y 轴上有一些值(例如信号)。现在我可以对这个时间过程进行采样以获得多维向量空间中的向量。

我的问题:如果我对此数据执行 PCA 意味着什么?什么是单个向量(例如时间序列)的 PCA,如何解释生成的特征向量?

3个回答

在单变量时间序列(或更一般地说,单个向量)上运行 PCA 没有意义。要对时间序列数据运行 PCA,您需要有一个多变量时间序列或多个单变量时间序列。有多种方法可以将单变量时间序列转换为多变量时间序列(例如小波或时频变换、时间延迟嵌入等)。例如,单变量时间序列的频谱图为您提供每个频率、每个时刻的功率。

假设我们有一个具有维/变量的多元时间序列。或者,我们可能有一组个单变量时间序列,其中每个时间点在时间序列中具有一些共同的含义(例如,相对于某个事件的时间)。在这两种情况下,都有时间点。有几种方法可以运行 PCA:ppn

  1. 将每个时间点视为一次观察。维度对应于多变量时间序列的变量,或者对应于不同的单变量时间序列。维空间中个点。在这种情况下,特征向量对应于跨维度/时间序列的瞬时模式。在每个时刻,我们将跨维度/时间序列的幅度表示为这些模式的线性组合。np

  2. 将多元时间序列(或每个单变量时间序列)的每个变量视为一个观察值。尺寸对应于时间点。维空间中个点。在这种情况下,特征向量对应于时间基函数,我们将每个时间序列表示为这些基函数的线性组合。pn

鉴于上述情况,很明显为什么 PCA 对于单个单变量时间序列没有意义。要么你有观察和 1 个维度(在这种情况下,PCA 没有什么可做的),要么你有一个具有维度的观察(在这种情况下,问题完全不确定,所有解决方案都是等价的)。nn

当然,可以对单个时间序列进行 PCA。结果将是一个主成分,与原始系列相同。因此,从技术上讲,它会起作用,但毫无意义:您将在输出中获得输入序列。

这是一个 MATLAB 示例。我得到了一个随机序列的 PCA,然后将唯一的主成分与原始序列进行对比,以表明它是同一件事。我还向您展示了系列之间的差异(针对均值进行了调整)为零。

x=randn(10,1);
[~,score,~,~,~,mu]=pca(x);
scatter(x,score);
max(abs(x-score-mu))

ans =

   4.4409e-16

在此处输入图像描述

也许,“在单个时间序列上执行 PCA”意味着应用奇异谱分析 (SSA),有时也称为时间序列的 PCA。在 SSA 中,多元数据由初始时间序列的滞后(移动)子序列构成。然后将 PCA(通常是 SVD,即没有居中/标准化的 PCA)应用于获得的多变量数据。

R中的示例:

library(Rssa)
s <- ssa(co2)
# Plot eigenvectors
plot(s, type = "vectors")
# Reconstruct the series, grouping elementary series.
r <- reconstruct(s, groups = list(Trend = c(1, 4), Season1 = c(2,3), Season2 = c(5, 6)))
plot(r)