2

glmer我有一个使用in 函数拟合的 GLMM 对象,R并且想要执行 k 折交叉验证。对于简单的 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 的随机项添加到模型中时,模型的 S4 类会导致错误(如下)glmer

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 折交叉验证的函数?

4

1 回答 1

3

建议您检查问题背后的统计假设。当专家对此进行评估以评估单个因素的 p 值时,他们强调需要在适当注意随机因素规范所暗示的研究设计的情况下进行引导。请参阅“草案”GLMM 常见问题解答。(感谢@BenBolker 对该资源的作者身份和维护。它在去年有了很大的扩展,现在甚至有一些kewl 图形。它正在成为一本书的章节。)DAAG 的作者还出版了 DAAGxtras,它有使用 pkg:lme4 中新引入的预测方法后可以设置的 compareModels 函数

还有混合模型在 R 档案中的资源:http ://markmail.org/search/?q=+list%3Aorg.r-project.r-sig-mixed-models+cross-validation

于 2013-12-19T16:16:18.237 回答