Wie wende ich binomiales GLMM (glmer) auf Prozentsätze anstelle von Ja-Nein-Zählungen an?

21

Ich habe ein Experiment mit wiederholten Messungen, bei dem die abhängige Variable ein Prozentsatz ist, und ich habe mehrere Faktoren als unabhängige Variablen. Ich würde gerne glmerdas R-Paket verwenden lme4, um es als logistisches Regressionsproblem zu behandeln (indem ich es spezifiziere family=binomial), da es dieses Setup direkt zu berücksichtigen scheint.

Meine Daten sehen so aus:

 > 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

Und hier ist der R-Befehl, von dem ich gehofft hatte, dass er angemessen ist:

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

Das Problem dabei ist, dass sich der Befehl darüber beschwert, dass meine abhängige Variable keine Ganzzahl ist:

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

und die Analyse dieser (Pilot-) Daten liefert seltsame Antworten.

Ich verstehe, warum die binomialFamilie Ganzzahlen erwartet (Ja-Nein-Zahlen), aber es scheint in Ordnung zu sein, Prozentdaten direkt zu regressieren. Wie macht man das?

Dan Stowell
quelle
1
Es scheint mir nicht in Ordnung zu sein, da 5 von 10 nicht die gleichen Informationen wie 500 von 1000 sind. Drücken Sie die Antwort als eine Zählung der Nein aus. "Erfolge" & eine Zählung der Nr. "Ausfälle".
Scortchi
@ Scortchi danke, ich denke du hast vielleicht recht. Ich habe zum Teil über die Kontinuität meiner Prozentsätze nachgedacht (abgeleitet aus probabilistischen Entscheidungen), ähnlich der folgenden Frage: stats.stackexchange.com/questions/77376/…, aber ich glaube, ich kann meine Daten durch eine sinnvolle Umrechnung in ganzzahlige Zählungen ausdrücken.
Dan Stowell

Antworten:

22

Um einen Proportionsvektor als Antwortvariable mit zu verwenden glmer(., family = binomial), müssen Sie die Anzahl der Versuche festlegen, die mit dem weightsArgument zu den einzelnen Proportionen geführt haben . Verwenden Sie beispielsweise die cbppDaten aus dem lme4Paket:

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

Wenn Sie die Gesamtzahl der Versuche nicht kennen, ist ein Binomialmodell nicht geeignet, wie in der Fehlermeldung angegeben.

Steve Walker
quelle
Ich kann nicht sagen, ob die Verwendung von Gewichten dafür funktioniert oder nicht. Sie können die Daten jedoch auch als zweispaltige Matrix (Erfolge / Fehler) auf der linken Seite der Formel eingeben.
ndoogan
Aber @ndoogan, die ursprüngliche Frage betraf Proportionen, nicht Erfolge / Misserfolge. Und der obige Code funktioniert, wie ich es von der cbppHilfeseite genommen habe.
Steve Walker
Meinetwegen. Unter Erfolgen / Misserfolgen ( keine Teilung) soll jedoch verstanden werden, woher die Proportionen für ein Binomialmodell stammen.
ndoogan
+1, aber Leser möchten vielleicht die Antwort von @ BenBolker hier sehen: stats.stackexchange.com/questions/189115 über mögliche Wege, mit Überdispersion umzugehen.
Amöbe sagt Reinstate Monica
9

(0,1)

M. Berk
quelle
2
Ein Binomialmodell ist ein Modell der Proportionen. Es ist jedoch nur angebracht, wenn Sie die Anzahl der Versuche kennen. Wenn Sie nur einen Prozentsatz ohne Angabe der Anzahl der Versuche haben, dann sind Sie der Meinung, dass die Beta-Regression angemessen ist.
ndoogan
(0,1)
Danke, das ist ein guter Punkt. Ich akzeptiere die andere Antwort, weil sie die Frage so beantwortet, wie sie geschrieben wurde, aber der Punkt zur Beta-Regression ist gut formuliert, deshalb habe ich ihn positiv bewertet.
Dan Stowell