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ć glmer
pakietu R, lme4
aby 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 binomial
rodzina oczekuje liczb całkowitych (tak-nie ma znaczenia), ale wydaje się, że bezpośrednia regresja danych procentowych powinna być OK. Jak to zrobić?
Odpowiedzi:
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ąweights
argumentu. Na przykład za pomocącbpp
danych zlme4
pakietu:Jeśli nie znasz całkowitej liczby prób, model dwumianowy nie jest odpowiedni, jak wskazano w komunikacie o błędzie.
źródło
cbpp
pomocy.źródło