如何将二项式 GLMM(glmer)应用于百分比而不是是 - 否计数?

机器算法验证 r 物流 混合模式 咕噜咕噜 lme4-nlme
2022-01-21 16:32:08

我有一个重复测量实验,其中因变量是百分比,我有多个因素作为自变量。我想使用glmerR 包lme4将其视为逻辑回归问题(通过指定family=binomial),因为它似乎直接适应此设置。

我的数据如下所示:

 > head(data.xvsy)
   foldnum      featureset noisered pooldur dpoolmode       auc
 1       0         mfcc-ms      nr0       1      mean 0.6760438
 2       1         mfcc-ms      nr0       1      mean 0.6739482
 3       0    melspec-maxp    nr075       1       max 0.8141421
 4       1    melspec-maxp    nr075       1       max 0.7822994
 5       0 chrmpeak-tpor1d    nr075       1       max 0.6547476
 6       1 chrmpeak-tpor1d    nr075       1       max 0.6699825

这是我希望合适的 R 命令:

 glmer(auc~1+featureset*noisered*pooldur*dpoolmode+(1|foldnum), data.xvsy, family=binomial)

问题在于该命令抱怨我的因变量不是整数:

In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!

并且对这个(试点)数据的分析结果给出了奇怪的答案。

我理解为什么binomial家庭需要整数(是 - 否计数),但似乎直接回归百分比数据应该没问题。这该怎么做?

2个回答

为了使用比例向量作为响应变量glmer(., family = binomial),您需要使用参数设置导致每个比例的试验次数weights例如,使用包中的cbpp数据lme4

glmer(incidence / size ~ period + (1 | herd), weights = size,
   family = binomial, data = cbpp)

如果您不知道试验的总数,则二项式模型不合适,如错误消息中所示。

如果您的响应是只能取中的值的比例、百分比或任何类似的东西,您通常会使用 beta 回归,而不是二项式回归。(0,1)