Я пытаюсь предсказать новые наблюдения после многократного вменения.И новые данные, и используемая модель являются объектами списка.Правильность подхода не в этом, а в том, как использовать функцию прогнозирования после многократного вменения, у меня есть новые данные, представляющие собой список.Ниже мой код.
library(betareg)
library(mice)
library(mgcv)
data(GasolineYield)
dat1 <- GasolineYield
dat1 <- GasolineYield
dat1$yield <- with(dat1,
ifelse(yield > 0.40 | yield < 0.17,NA,yield)) # created missing values
datim <- mice(dat1,m=30) #imputing missing values
mod1 <- with(datim,gam(yield ~ batch + emp,family=betar(link="logit"))) #fit models using gam
создание набора данных, который будет использоваться для прогнозирования
datnew <- complete(datim,"long")
datsplit <- split(datnew,datnew$.imp)
код, приведенный ниже, просто проверяет прогноз без новых данных.Проблема, которую я наблюдал, состояла в том, что tp сохраняется как матрица 1 на 32 вместо 30 на 32.Но опция печати печатает 30 на 32, но тогда я не смог сохранить его как таковой.
tot <- 0
for(i in 1:30){
tot <- mod1$analyses[[i]]
tp <- predict.gam(tot,type = "response")
print(tp)
}
код ниже, я пытаюсь предсказать новое наблюдение, используя newdata.Здесь я просто заблудился, я не уверен, как это сделать.
datnew <- complete(datim,"long")
datsplit <- split(datnew,datnew$.imp)
tot <- 0
for(i in 1:30){
tot <- mod1$analyses[[i]]
tp <- predict.gam(tot,newdata=datsplit[[i]], type = "response")
print(tp)
}
Может ли кто-нибудь помочь мне, как лучше это сделать?