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


21

我有一个重复测量实验,其中因变量是一个百分比,并且我有多个因素作为自变量。我想glmer从R包中使用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家庭期望整数(是-没有计数),但是直接对百分比数据进行回归似乎应该可以。这该怎么做?


1
在我看来,这并不好,因为十分之五的信息与1000分之500的信息不同。将响应表示为否。“成功”和一项计数。“失败”。
Scortchi-恢复莫妮卡

@Scortchi谢谢,我想你可能是对的。我部分地在思考与这个问题类似的百分比(取自概率决策)的连续性质:stats.stackexchange.com/questions/77376/…但我相信我可以通过有意义地转换为整数来表达我的数据。
Dan Stowell

Answers:


22

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

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

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


我不能说是否为此使用权重。但是您当然可以在公式的左侧以两列矩阵(成功/失败)的形式输入数据。
ndoogan 2014年

但是@ndoogan,最初的问题是关于比例,而不是成功/失败。正如我从cbpp帮助页面上获取的那样,上面的代码确实起作用。
史蒂夫·沃克

很公平。但是,我的意思是成功/失败(不是要除以除法)是二项式模型所占的比例。
ndoogan 2014年

+1,但读者可能想在这里查看@BenBolker的答案stats.stackexchange.com/questions/189115,以了解应对过度分散的可能方法。
变形虫说恢复莫妮卡

9

01个


2
二项式模型是比例模型。不过,仅当您知道试验次数时才合适。如果您所获得的只是一个百分比而没有表明试验次数,那么我相信您认为beta回归是正确的。
ndoogan

01个

谢谢,这是一个好点。我接受另一个答案,因为它按照书面形式回答了该问题,但是关于beta回归的观点很明确,因此我赞成它。
丹·斯托威尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.