我使用glmer
中的R
函数拟合GLMM对象,并希望执行k-fold交叉验证。对于简单的GLM,我使用了CVbinary
pkg中的DAAG
函数,如下所示。
> SimpleGLM <- glm(Res ~ Var1 + Var2, data = Data, family=binomial)
> CVbinary(SimpleGLM, nfolds=10, print.details=TRUE)
Fold: 3 2 4 1 7 10 6 9 5 8
Internal estimate of accuracy = 0.828
Cross-validation estimate of accuracy = 0.827
但是,当IndID的随机项添加到模型中时,错误(下面)来自符合glmer
的模型的S4类。
GLMMod <- glmer(Res ~ Var1 + Var2 + (1|IndID), data = Data, family=binomial)
> CVbinary(GLMMod , nfolds=10, print.details=TRUE)
Error in obj$data : $ operator not defined for this S4 class
我一直在寻找在线,并且无法找到与CVbinary
类似的功能与S4对象一起使用,但是在我手动编码之前想要仔细检查。
简而言之,(假设我正确地解释了R
错误)是否有一个函数对S4对象执行k-fold交叉验证?
答案 0 :(得分:3)
建议您检查问题所依据的统计假设。当专家对此评估各个因素的p值时,他们强调需要在适当关注随机因子规范所暗示的研究设计的情况下进行自举。请参阅"draft" GLMM FAQ。 (感谢@BenBolker对该资源的创作和维护。它在去年大大扩展,现在甚至有一些kewl图形。它正在成为一本书的章节。)DAAG的作者也发表了DAAGxtras您可以在pkg:lme4
中使用新引入的预测方法后设置的compareModels函数还有混合模型在R档案资源:http://markmail.org/search/?q=+list%3Aorg.r-project.r-sig-mixed-models+cross-validation