Jak zastosować dwumianowy GLMM (glmer) do wartości procentowych zamiast tak-nie ma znaczenia?

21

Mam eksperyment z powtarzanymi pomiarami, w którym zmienna zależna jest procentem, i mam wiele czynników jako zmienne niezależne. Chciałbym użyć glmerpakietu R, lme4aby potraktować go jako problem z regresją logistyczną (poprzez określenie family=binomial), ponieważ wydaje się, że bezpośrednio dostosowuje się on do tej konfiguracji.

Moje dane wyglądają tak:

 > 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

a oto polecenie R, które miałem nadzieję, że będzie odpowiednie:

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

Problem polega na tym, że polecenie narzeka na to, że moja zmienna zależna nie jest liczbą całkowitą:

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

a analiza tych (pilotażowych) danych daje w rezultacie dziwne odpowiedzi.

Rozumiem, dlaczego binomialrodzina oczekuje liczb całkowitych (tak-nie ma znaczenia), ale wydaje się, że bezpośrednia regresja danych procentowych powinna być OK. Jak to zrobić?

Dan Stowell
źródło
1
Nie wydaje mi się to w porządku, ponieważ 5 na 10 nie jest tą samą informacją, co 500 na 1000. Wyraź odpowiedź jako jedną liczbę nie. „sukcesy” i jedna liczba nie. „awarie”.
Scortchi - Przywróć Monikę
@Scortchi dzięki, myślę, że masz rację. Częściowo myślałem o ciągłym charakterze moich wartości procentowych (pochodzących z decyzji probabilistycznych) podobnych do tego pytania: stats.stackexchange.com/questions/77376/... ale uważam, że mogę wyrazić moje dane poprzez znaczącą konwersję na liczby całkowite.
Dan Stowell

Odpowiedzi:

22

Aby użyć wektora proporcji jako zmiennej odpowiedzi z glmer(., family = binomial), musisz ustawić liczbę prób, które doprowadziły do ​​każdej proporcji za pomocą weightsargumentu. Na przykład za pomocącbpp danych z lme4pakietu:

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

Jeśli nie znasz całkowitej liczby prób, model dwumianowy nie jest odpowiedni, jak wskazano w komunikacie o błędzie.

Steve Walker
źródło
Nie mogę powiedzieć, czy przy użyciu wag do tego działa, czy nie. Ale z pewnością możesz wprowadzić dane jako macierz dwukolumnową (sukcesy / niepowodzenia) po lewej stronie formuły.
ndoogan
Ale @ndoogan, pierwotne pytanie dotyczyło proporcji, a nie sukcesów / porażek. Powyższy kod działa, ponieważ wziąłem go ze strony cbpppomocy.
Steve Walker
Słusznie. Chociaż miałem na myśli sukcesy / porażki (a nie podział), stąd biorą się proporcje modelu dwumianowego.
ndoogan
+1, ale czytelnicy mogą zobaczyć odpowiedź @ BenBolkera tutaj stats.stackexchange.com/questions/189115 o możliwych sposobach radzenia sobie z nadmierną dyspersją.
ameba mówi Przywróć Monikę
9

(0,1)

M. Berk
źródło
2
Model dwumianowy to model proporcji. Chociaż jest to właściwe tylko wtedy, gdy znasz liczbę prób. Jeśli masz tylko procent bez wskazania liczby prób, to uważam, że masz rację, że regresja beta jest odpowiednia.
ndoogan
@ndoogan Aby wyjaśnić, moja rada nie brzmi „używaj regresji beta, gdy twoja odpowiedź jest proporcjonalna”, ale „jeśli twoja odpowiedź może przyjmować tylko wartości (0,1) takie jak proporcje / procenty, regresja beta jest typowa ”
M. Berk
Dzięki, to dobra uwaga. Akceptuję drugą odpowiedź, ponieważ odpowiada ona na pytanie w formie pisemnej, ale kwestia regresji beta jest dobrze przemyślana, więc głosowałem za nią.
Dan Stowell