我想对gamlss模型进行自举交叉验证。解释变量(moipro)是beta分布,因此我使用gamlss包而不是lme4或hglm。这个模型具有随机效果,并且会引起麻烦。
我尝试使用简化的数据集来发布我的问题,但它会产生不同的错误。所以我把原始数据改为。
数据是一个表格,您可以从dropbox下载:https://dl.dropboxusercontent.com/u/89852837/sample.csv
当使用没有随机效果的公式时,它可以工作。
sample<-read.csv("sample.csv",header=T)
library(gamlss)
frml<- moipro ~ Trip + kuse + spp + Water + BwkRain + Trip:spp + BioR:spp + Trip:kuse + Water:Trip
Nruns <- 100
r2_ps <- rep(NA, Nruns)
r_sq <- rep(NA, Nruns)
aic <- rep(NA, Nruns)
data<-sample
N <- dim(data)[1]
for (i in 1:Nruns){
testSet <- sample(1:N, size = floor(N/2))
learndata <- data[-testSet,]
testdata <- data[testSet,]
cv_mod1 <-gamlss(formula=frml,data=na.omit(learndata), family = BE)
pred <-predict(cv_mod1,newdata=testdata,type="response")
r2_ps[i] <- Rsq(cv_mod1,"Cox Snell")
r_sq[i]<-cor(pred,testdata$moipro)^2
aic[i] <- cv_mod1$aic
}
Results<- cbind(r2_ps, r_sq, aic)
使用具有随机效果的公式时,&#34;预测&#34;:
会出现错误sample<-read.csv("sample.csv",header=T)
library(gamlss)
frml1_re<- moipro ~ Trip + kuse + spp + Water + BwkRain + Trip:spp + BioR:spp + Trip:kuse + Water:Trip+re(random=~1|Site)
Nruns <- 100
r2_ps <- rep(NA, Nruns)
r_sq <- rep(NA, Nruns)
aic <- rep(NA, Nruns)
data<-sample
N <- dim(data)[1]
for (i in 1:Nruns){
testSet <- sample(1:N, size = floor(N/2))
learndata <- data[-testSet,]
testdata <- data[testSet,]
cv_mod1 <-gamlss(formula=frml_re,data=na.omit(learndata), family = BE)
pred <-predict(cv_mod1,newdata=testdata,type="response")
r2_ps[i] <- Rsq(cv_mod1,"Cox Snell")
r_sq[i]<-cor(pred,testdata$moipro)^2
aic[i] <- cv_mod1$aic
}
new prediction
Error in eval(expr, envir, enclos) : object 'fix.formula' not found
如何在我的模型上应用交叉验证?任何帮助表示赞赏!非常感谢!