考虑一个简单的时间序列:
> 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))提出了这个想法,该想法考虑了具有已知方向的空间过程,并在包含1s的可连接样本的样本空间阵列之间形成邻接矩阵。限制为只能在“下游”连接的约束条件下,将其链接到一个链接,将其链接为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)