У меня есть данные по 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.
Я пытаюсь сгруппировать эти временные ряды, используя функциональный подход к данным, для которого я используюпакет «funFEM» в R. Приведенные примеры предназначены для равноотстоящих и равных по длине временных рядов, поэтому я не уверен, как использовать пакет для моих данных.Сначала я попытался сделать все временные ряды равными по длине временным рядам, имеющим наибольшее количество наблюдений (здесь равных ser3), добавив NA к временному ряду.Поэтому, следуя этому примеру, я сделал 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, я взял последние 6 временных точек из t3.Чтобы сделать 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'.
Может кто-нибудь сказать мне, как бороться с этим набором данных для этого пакета?