我试图在多次插补后预测新的观察结果。 newdata和要使用的模型都是列表对象。方法的正确性不是问题,而是在多次插补后如何使用预测函数,我们有一个新的数据列表。下面是我的代码。
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)
下面的代码只是在没有newdata的情况下测试了预测。我观察到的问题是tp被保存为1 x 32矩阵,而不是30 x 32矩阵。但是print选项可以打印出30 x 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)
}
有人可以帮助我解决这个问题吗?
答案 0 :(得分:0)
我终于找到解决问题的方法。解决方法如下:
if (someObject.getSomething() == whatever) { then do this } else { that }
我假设这在构建模型中没有使用。我打开这个#thread的目的是要解决在使用多个插补数据集构建的多个插补/使用模型后如何使用新数据预测观测值的问题。
datnew <- complete(datim,"long")# stack all the imputation data
我希望这对有类似问题的人有所帮助。我曾经遇到一个有关在多次插补后如何预测新数据的问题,我想这将回答该线程中包含的一些问题。