您可能需要考虑可预测成分分析 (ForeCA),这是一种时间序列降维技术,专门设计用于获得比原始时间序列更容易预测的低维空间。
让我们看一个每月太阳黑子数量的例子,为了计算效率,让我们看看 20 世纪。
yy <- window(sunspot.month, 1901, 2000)
plot(yy)

太阳黑子数只是一个单变量时间序列yt=(y1,…,yT),但我们可以通过将其嵌入滞后来将其转换为多元时间序列(p+1)维特征空间Xt=(yt,yt−1,…,yt−p). 这是非线性时间序列分析中的常用技术。
XX <- embed(yy, 24)
XX <- ts(XX, end = end(yy), freq = 12)
dim(XX)
## [1] 1166 24
在 R 中,您可以使用ForeCA包进行估计。请注意,这需要 a 的多元谱K维时间序列T观测值,存储在T×K×K数组(可以使用对称/厄米特属性将大小减半)。因此,与 iid 降维技术(例如 PCA 或 ICA)相比,计算所需的时间要长得多。
因此,在这里我们采用嵌入太阳黑子数的 24 维时间序列,并尝试找到一个 6 维子空间,该子空间具有可以轻松预测的有趣模式。
library(ForeCA)
# this can take several seconds
mod.foreca <- foreca(XX, n.comp = 4,
spectrum.control = list(method = "wosa"))
mod.foreca
## ForeCA found the top 4 ForeCs of 'XX' (24 time series).
## Out of the top 4 ForeCs, 0 are white noise.
##
## Omega(ForeC 1) = 53% vs. maximum Omega(XX) = 43%.
## This is an absolute increase of 9.9 percentage points (relative: 23%) in forecastability.
##
## * * * * * * * * * *
## Use plot(), biplot(), and summary() for more details.
plot(mod.foreca)

双图显示第一个组件都指向同一方向,这告诉我们该组件将是整体/平均模式。右侧的条形图显示了可预测组件 (ForeC) 的可预测性确实如何降低,并且第一个组件比原始序列更可预测。在这个例子中,所有原始序列都具有相同的可预测性,因为我们使用了嵌入。对于一般的多元时间序列,情况并非如此。
现在这些系列看起来像什么?
mod.foreca$scores <- ts(mod.foreca$scores, start = start(XX),
freq = frequency(XX))
plot(mod.foreca$scores)

事实上,第一个分量比原始序列更可预测,因为它的噪音更小。其余系列也显示出非常有趣的图案,这些图案在原始系列中是看不到的。请注意,所有的 ForeC 都是相互正交的,即它们是不相关的。
round(cor(mod.foreca$scores), 3)
## ForeC1 ForeC2 ForeC3 ForeC4
## ForeC1 1 0 0 0
## ForeC2 0 1 0 0
## ForeC3 0 0 1 0
## ForeC4 0 0 0 1
每个系列的光谱也很好地了解了太阳黑子活动中的不同 ForeCs [原文如此!]。
spec <- mvspectrum(mod.foreca$scores, "wosa")
plot(spec)
