объединение или объединение двух или более функциональных данных класса .fd в R

#r

Вопрос:

Я новичок в области функционального анализа данных (FDA).

 library(fda)

set.seed(151)

I1 <- matrix(rnorm(20*20,mean=0,sd=1),20,20)
I2 <- matrix(rnorm(15*20,mean=0.5,sd=1),15,25)

data1 <- t(I1)
data2 <- t(I2)
minutetime1 <- seq(from = 1, to = 25, length.out = 20)
minutetime2 <- seq(from = 1, to = 25, length.out = 25)

minutebasis <- create.bspline.basis(rangeval=c(0,25),nbasis=10)

fd1<- Data2fd(data1, minutetime1, basisobj=minutebasis)
is.fd(fd1)
# [1] TRUE
fd2<- Data2fd(data2, minutetime2, basisobj=minutebasis)
is.fd(fd2)
# [1] TRUE
 

Я хотел бы объединить или объединить fd1 и fd2 ( например, объединить два вектора), и результатом также будет класс .fd. Я использовал c(fd1,fd2) , merge(fd1,fd2) и modifyList(fd1,fd2) и т. Д.

Ответ №1:

Поскольку ваши данные представлены на одной и той же основе, вы должны иметь возможность создать комбинированный объект fd, объединив коэффициенты базовой функции из fd1 и fd2 .

Коэффициенты хранятся в матрицах. Строки соответствуют базовым функциям, а столбцы соответствуют наблюдениям (см. ?fd ), поэтому мы можем связать столбцы для объединения наблюдений.

 merged_coefs <- cbind(fd1$coefs, fd2$coefs)
merged_fd <- fd(coef = merged_coefs, basisobj = minutebasis)
is.fd(merged_fd)