Анализ функциональных данных для неравных длин и неодинаковых временных рядов ширины - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть данные по 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'.

Может кто-нибудь сказать мне, как бороться с этим набором данных для этого пакета?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...