我需要引导我的混合模型二进制逻辑回归。该模型本身工作正常(并由专家朋友批准和纠正),但引导版本是错误的。引导版本以前是由另一位专家朋友批准的(在CrossValidated中,但后来的mod删除了我的帖子,说它不属于CrossValidated)。但是相同的代码碰巧适用于简单的固定效应多逻辑回归(尽管在这种情况下也有很多类似于此处警告的警告[除了这个用于lmer()函数的单一警告:“在mer_finalize中( ans):false convergence(8)“)。
您能告诉我错误的位置以及如何调试吗?
非常感谢。
我的代码是(我暂时保留了重复数字太低而不能调试代码):
library(boot)
library(lme4)
mixedGLM <- function(formula, data, indices) {
d <- data[indices, ]
(fit <- lmer(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
+ (1 | PatientID) + (0 + Trt | PatientID)
, family=binomial(logit), d))
return(coef(fit))
}
results <- boot(data=MixedModelData4 , statistic = mixedGLM, R= 2, formula= DV~Demo1 +Demo2 +Demo3 +Demo4 +Trt)
。 。 。 我的错误是:
Error in t.star[r, ] <- res[[r]] :
incorrect number of subscripts on matrix
In addition: Warning messages:
1: In mer_finalize(ans) : false convergence (8)
2: glm.fit: algorithm did not converge
3: glm.fit: fitted probabilities numerically 0 or 1 occurred
4: glm.fit: fitted probabilities numerically 0 or 1 occurred
5: In mer_finalize(ans) : false convergence (8)
。 。 。 还有,请你告诉我如何使boot()函数也给P值?它只提供beta和SE以及偏差和CI,但我也需要P值。
非常感谢。
----------------------------------------------- ----开发故事-------------------------------------------- ---------
好的,我很高兴地运行了Henrik的漂亮代码。但是代码并没有完全运行。首先它给出了这个错误:
Fitting 17 lmer() models:
[...
Error: pwrssUpdate did not converge in 30 iterations
In addition: Warning message:
In mixed(DV ~ (Demo1 + Demo2 + Demo3 + Demo4 + Trt)^2 + (1 | PatientID) + :
Due to missing values, reduced number of observations to 90
> (results2 <- mixed(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
+ results3 <- mixed(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
然后我删除了第一个括号块并将语法修改为:
results3 <- mixed(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
+ (0 + Trt | PatientID),
family=binomial(logit), data = MixedModelData4,
method = "PB", args.test = list(nsim = 2))
这次测试通过了第一步(拟合模型),但未能获得P值,同样给出相同的错误和警告:
Fitting 17 lmer() models:
[.................]
Obtaining 16 p-values:
[....
Error: pwrssUpdate did not converge in 30 iterations
In addition: Warning messages:
1: In mixed(DV ~ (Demo1 + Demo2 + Demo3 + Demo4 + Trt)^2 + (0 + Trt | :
Due to missing values, reduced number of observations to 90
2: In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, :
failure to converge in 10000 evaluations
3: In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, :
failure to converge in 10000 evaluations
4: In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, :
failure to converge in 10000 evaluations
5: In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, :
failure to converge in 10000 evaluations
6: In (function (fn, par, lower = rep.int(-Inf, n), upper = rep.int(Inf, :
failure to converge in 10000 evaluations
我不知道如何调试它,或者问题是我的数据集?我应该补充一点,我的数据集完全以中心为中心(所有变量)。 DV只是被否定了(因为平均居中不允许R工作,而否定会对二元结果做同样的事情。)
----------------------------------------------- -----------更新-------------------------------------- -----------------------
我将METHOD的PB值更改为LRT(正如Henrik推荐的那样),并且完成了模型的拟合过程,但是没有开始获得P值的过程:
> results4 <- mixed(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
+ + (0 + Trt | PatientID),
+ family=binomial(logit), data = MixedModelData4,
+ method = "LRT", args.test = list(nsim = 2))
Fitting 17 lmer() models:
[.................]
Warning message:
In mixed(DV ~ (Demo1 + Demo2 + Demo3 + Demo4 + Trt)^2 + (0 + Trt | :
Due to missing values, reduced number of observations to 90
事实证明,当使用LRT时,不能通过自举获得P值。因此,结果已经准备就绪(虽然没有自举)。
答案 0 :(得分:4)
如果您希望GLMM
的p值带参数化引导程序,您可以使用程序包mixed
中的afex
函数,该函数通过pbkrtest::PBmodcomp
获取它们:
library(afex)
results <- mixed(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
+ (1 | PatientID) + (0 + Trt | PatientID),
family=binomial(logit), data = d,
method = "PB", args.test = list(nsim = 1000))
您甚至可以先定义本地群集(即使用多个核心):
cl <- makeCluster(rep("localhost", 4))
results <- mixed(DV ~ (Demo1 +Demo2+Demo3 +Demo4 +Trt)^2
+ (1 | PatientID) + (0 + Trt | PatientID),
family=binomial(logit), data = d,
method = "PB", args.test = list(nsim = 1000, cl = cl))
安装所有三个软件包的开发版本可能是最好的(因为pbkrtest
的当前版本是为lme4
1.0而设计的,但尚未开发):
afex
:install.packages("afex", repos="http://R-Forge.R-project.org")
pbkrtest
来自:http://people.math.aau.dk/~sorenh/software/pbkrtest/devel/ lme4
:https://github.com/lme4/lme4