(p <- ncol(X)) == ncol(Y) 不是 glmer 中的 TRUE 错误

(p <- ncol(X)) == ncol(Y) is not TRUE error in glmer

我正在尝试用 glmer 拟合模型,但我不断收到错误消息:

Error : (p <- ncol(X)) == ncol(Y) is not TRUE

模型很大,8个特征,几千个点。在研究这个bug的时候,我发现可能是NA太多导致的。我查看了我的特征,只有一个特征有 NA。然后我从我的模型中排除了该功能,但我仍然遇到错误。数据太大,无法发布。

http://r.789695.n4.nabble.com/Error-from-lme4-quot-Error-p-lt-ncol-X-ncol-Y-is-not-TRUE-quot-td4712617.html

模型如下:

covariates=c("Sex", "PC1", "PC2", "PC3", "PC4", "label", "Alive")

fix.eff=paste("outcome","~",xi)

if (!is.null(covariates)) {for (covi in covariates)  fix.eff=paste(fix.eff,"+",covi) }

fix.eff=formula(paste(fix.eff, "+(1|",ind.family,")")) 

fit <- try(glmer(fix.eff,family=binomial(link='logit'), data=x))

问题出在以下行:

fix.eff=formula(paste(fix.eff, "+(1|",ind.family,")")) 

应该是

fix.eff=formula(paste(fix.eff, "+(1| ind.family)")) 

ind.family是数据集中的一列x.原来的写法,读入的是它的当前值,而不是列。因此公式中包含 (1|1) 而不是 (1|ind.family)。现在它已修复,可以使用了!

如果其他人遇到此错误,我建议您仔细查看您的公式和数据,以确保它是您认为的那样。