当全局模型具有优化器时,从Dredge()获取R ^ 2

时间:2019-07-24 09:39:23

标签: r optimization lme4 mumin

目标:在原始模型中使用优化程序获得R ^ 2边际和条件挖泥结果

这从以下问题出发:dredge doesnt work when specifying glmer optimizer和提供的两个解决方案。

解决方案1 ​​:更改r.squaredLR.R程序包代码

解决方案2 :在挖泥函数中添加一个函数来调用r.squaredGLMM而不是r.squaredLR

我首先尝试了解决方案2 ,该方法在模拟数据上可以很好地工作,但是当我在模型上尝试时,出现错误:

r.squaredGLMM(x,null = nullmodel)[“ delta”,]中的错误:   下标超出范围

然后我尝试了解决方案1 ​​,方法是将r.squaredLR.R的源代码更改为描述并保存为R脚本,并使用source()调用已编辑的“ null.fit”函数为了避免永久地编辑r.squaredLR.R(在提供已编辑函数之前先调用MuMIn)。但这行不通。

返回到解决方案2 ...

我尝试模拟与我的数据类似的数据,并且能够得到相同的错误(在此全局模型中忽略了lmercontrol参数,但是我得到了所需的错误,因此我没有尝试校正需要lmercontrol的数据)

#Solution 2 attempt
set.seed(101)
dd <- data.frame(x1= rnorm(1920), x2=rnorm(1920), x3=rnorm(1920), x4=rnorm(1920),
                 treatment = factor(rep(1:2, each=3)),
                 replicate = factor(rep(1:3, each=1)),
                 stage = factor(rep(1:5, each=384)),
                 country = factor(rep(1:4, each=96)),
                 plot = factor(rep(1:10, each=24)),
                 chamber = factor(rep(1:6, each=1)),
                 n = 1920)

library(lme4)
dd$y <- simulate(~ x1 + x2 + x3 + (1|plot),
                 family = binomial,
                 weights = dd$n,
                 newdata = dd,
                 newparams = list(beta = c(1,1,1,1),
                                theta = 1))[[1]]

# my real response variable 'y' has a poisson distribution, but I had difficulty figuring 
# out how to simulate a poisson distribution so I left the bionomial. 

m0 <- lmer(y~ x1 + x2 + x3 + x4 + treatment*replicate*stage + (1|chamber) + (1|country/plot),
            data=dd,
            na.action = "na.fail",
           REML = F,
            lmercontrol = glmerControl(optimizer="bobyqa"))

nullmodel <- MuMIn:::.nullFitRE(m0)
dredge(m0, m.lim = c(0,5), rank = "AIC", extra =list(R2 = function(x)     {
  r.squaredGLMM(x, null = nullmodel)["delta", ]}))

出现错误“下标超出范围”的建议原因是“放入算法中的数据格式不符合函数期望的格式。”

实际上,当我删除[“ delta”,]并获得列R21和R22时,该函数起作用,但是如果不考虑delta列,这些值可能是错误的,并且我不确定哪一个是边际的,条件R ^ 2。

如果您有任何想法,我会全力以赴!预先感谢您的所有帮助。

0 个答案:

没有答案