时间序列的邻接矩阵的特征函数?

机器算法验证 时间序列 矩阵分解 svd
2022-01-29 15:27:46

考虑一个简单的时间序列:

> tp <- seq_len(10)
> tp
 [1]  1  2  3  4  5  6  7  8  9 10

我们可以计算这个时间序列的邻接矩阵,表示样本之间的时间链接。在计算这个矩阵时,我们在时间 0 添加一个虚构的站点,并且这个观察和时间 1 的第一个实际观察之间的链接称为链接 0。在时间 1 和时间 2 之间,链接是链接 1,依此类推。因为时间是一个定向过程,所以站点连接到站点“上游”的链接(受其影响)。因此,每个站点都连接到链接 0,但链接 9 仅连接到站点 10;它在除站点 10 之外的每个站点之后临时发生。由此定义的邻接矩阵创建如下:

> adjmat <- matrix(0, ncol = length(tp), nrow = length(tp))
> adjmat[lower.tri(adjmat, diag = TRUE)] <- 1
> rownames(adjmat) <- paste("Site", seq_along(tp))
> colnames(adjmat) <- paste("Link", seq_along(tp)-1)
> adjmat
        Link 0 Link 1 Link 2 Link 3 Link 4 Link 5 Link 6 Link 7
Site 1       1      0      0      0      0      0      0      0
Site 2       1      1      0      0      0      0      0      0
Site 3       1      1      1      0      0      0      0      0
Site 4       1      1      1      1      0      0      0      0
Site 5       1      1      1      1      1      0      0      0
Site 6       1      1      1      1      1      1      0      0
Site 7       1      1      1      1      1      1      1      0
Site 8       1      1      1      1      1      1      1      1
Site 9       1      1      1      1      1      1      1      1
Site 10      1      1      1      1      1      1      1      1
        Link 8 Link 9
Site 1       0      0
Site 2       0      0
Site 3       0      0
Site 4       0      0
Site 5       0      0
Site 6       0      0
Site 7       0      0
Site 8       0      0
Site 9       1      0
Site 10      1      1

SVD 将该矩阵分解为不同时间尺度的变化特征函数。下图显示了提取的函数(来自SVD$u

> SVD <- svd(adjmat, nu = length(tp), nv = 0)

特征函数

特征函数是各种时间尺度上的周期性分量。尝试tp <- seq_len(25)(或更长)比我上面展示的更短的示例更好地显示了这一点。

这种分析在统计学中有合适的名称吗?这听起来类似于奇异谱分析,但它是嵌入式时间序列的分解(一个矩阵,其列是时间序列的滞后版本)。

背景: 我通过修改空间生态学中的一个称为非对称特征向量图 (AEM) 的想法提出了这个想法,该想法考虑了具有已知方向的空间过程,并在包含 1 的样本空间阵列之间形成邻接矩阵,其中样本可以连接在链接只能“下游”连接的约束下,连接到链接和不能连接的 0 - 因此分析的不对称性。我上面描述的是 AEM 方法的一维版本。如果您有兴趣,可以在这里找到 AEM 方法的重印版。

该图是用以下方法制作的:

layout(matrix(1:12, ncol = 3, nrow = 4))
op <- par(mar = c(3,4,1,1))
apply(SVD$u, 2, function(x, t) plot(t, x, type = "l", xlab = "", ylab = ""),
      t = tp)
par(op)
layout(1)
1个回答

这看起来像是“主成分分析”的变体。 http://mathworld.wolfram.com/PrincipalComponentAnalysis.html

在结构分析中,系统的特征值用于观察线性变形,即叠加仍然有效的地方。该方法称为“模态分析”。 http://macl.caeds.eng.uml.edu/macl-pa/modes/modal2.html