(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
。然后我从我的模型中排除了该功能,但我仍然遇到错误。数据太大,无法发布。
模型如下:
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)
。现在它已修复,可以使用了!
如果其他人遇到此错误,我建议您仔细查看您的公式和数据,以确保它是您认为的那样。
我正在尝试用 glmer
拟合模型,但我不断收到错误消息:
Error : (p <- ncol(X)) == ncol(Y) is not TRUE
模型很大,8个特征,几千个点。在研究这个bug的时候,我发现可能是NA
太多导致的。我查看了我的特征,只有一个特征有 NA
。然后我从我的模型中排除了该功能,但我仍然遇到错误。数据太大,无法发布。
模型如下:
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)
。现在它已修复,可以使用了!
如果其他人遇到此错误,我建议您仔细查看您的公式和数据,以确保它是您认为的那样。