如何在R中使用随机效应的gamlss模型进行bootstrappingcross-validation?

时间:2016-08-12 02:39:49

标签: r cross-validation

我想对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

如何在我的模型上应用交叉验证?任何帮助表示赞赏!非常感谢!

0 个答案:

没有答案