#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)