不等长和不等宽时间序列的功能数据分析

时间:2018-12-17 11:52:26

标签: r

我有1318个时间序列的数据。这些系列中的许多长度不相等。除此之外,还在不同的时间点观察到每个系列的相当多的时间点。例如,考虑以下四个系列

t1 <- c(24.51, 24.67, 24.91, 24.95, 25.10, 25.35, 25.50, 25.55, 25.67)
V1 <- c(-0.1710, -0.0824, -0.0419, -0.0416, -0.0216, -0.0792, -0.0656,-0.0273, -0.0589)
ser1 <- cbind(t1, V1)

t2 <- c(24.5, 24.67, 24.91, 24.98, 25.14, 25.38)
V2 <- c(-0.0280, -0.1980, -0.2556, 0.3131, 0.3231, 0.2264)
ser2 <- cbind(t2, V2)

t3 <- c(24.51, 24.67, 24.91, 24.95, 25.10, 25.35, 25.50, 25.55, 25.65, 25.88, 25.97, 25.99)
V3 <- c(0.0897, -0.0533, -0.3497, -0.5684, -0.4294, -0.1109, 0.0352, 0.0550, -0.0536, 0.0185, -0.0295, -0.0324)
ser3 <- cbind(t3, V3)

t4 <- c(24.5, 24.67, 24.71, 24.98, 25.17)
V4 <- c(-0.0280, -0.1980, -0.2556, 0.3131, 0.3231)
ser4 <- cbind(t4, V4)

在这里,t1,t2,t3,t4是时间点,而V1,V2,V3,V4是在这些时间点进行的观察。实际数据中的时间点是儒略日期,因此它们看起来像这样,只是它们是更大的十进制数字,例如2452450.6225。

我正在尝试使用功能数据方法对这些时间序列进行聚类,为此我在R中使用“ funFEM”包。目前的示例适用于等距和等长时间序列,因此我不确定如何将包用于我的数据。最初,我尝试通过将NA添加到时间序列来使所有时间序列的长度等于具有最高观察次数(此处等于ser3)的时间序列的长度。因此,按照此示例,我将ser2设置为

t2_n <- c(24.5, 24.67, 24.91, 24.98, 25.14, 25.38, 25.50, 25.55, 25.65, 25.88, 25.97, 25.99)
V2_na <- c(V2, rep(NA, 6))
ser2_na <- cbind(t2_n, V2_na)

请注意,为了使t2等于t3的长度,我抓住了t3的最后6个时间点。为了使V2的长度等于V3的长度,我添加了NA。

然后我将数据矩阵创建为

dat <- rbind(V1_na, V2_na, V3, V4_na).

我使用的代码是

require(funFEM)
basis<- create.fourier.basis(c(min(t3), max(t3)), nbasis = 25) 
fdobj <- smooth.basis(c(min(t3), max(t3)) ,dat, basis)$fd

请注意,范围是使用ser_3系列的最大和最小时间点构成的。

res <- funFEM(fdobj, K = 2:9, model = "all", crit = "bic", init = "random") 

但这给我一个错误

svd(X)中的错误:“ x”中的值无限或缺失。

有人可以告诉我如何处理此软件包的数据集吗?

0 个答案:

没有答案