Próbuję pomóc uczniowi kolegi. Uczeń obserwował i policzył zachowanie ptaków (liczba wezwań) w układzie eksperymentalnym. Nie można było określić liczby połączeń przypisanych do konkretnego obserwowanego ptaka podczas każdego eksperymentu, ale możliwe było zliczenie liczby ptaków, które przyczyniły się do liczby zarejestrowanych połączeń. Stąd moja początkowa sugestia polegała na uwzględnieniu liczby ptaków jako terminu offset w modelu Poissona GLM, dlatego pasowalibyśmy do oczekiwanej liczby wezwań na ptaka .
Problem polega na tym, że podczas wielu okazji obserwacji nie zaobserwowano ptaków (a zatem i wezwań). Oprogramowanie (w tym przypadku R) narzeka, ponieważ(R narzeka na to, że y
zawiera -Inf
dane, ale wynika to wyłącznie z offset(log(nbirds))
bycia -Inf
).
Podejrzewam, że potrzebujemy modelu przeszkodowego (lub podobnego), w którym mamy osobny model dwumianowy dla „zaobserwowanych połączeń”? (lub nie) oraz skrócony model zliczania liczby połączeń (na ptaka) w sytuacjach, w których były połączenia, w których uwzględniamy termin przesunięcia tylko w części zliczania modelu.
Próbowałem tego za pomocą pakietu pscl w R, ale wciąż pojawia się ten sam błąd:
mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
offset(log(NumberCOPO)) | 1, data = Data,
dist = "poisson")
ponieważ ten sam kod R ( glm.fit
używany wewnętrznie w hurdle()
celu dopasowania części modelu) sprawdza, -Inf
nawet jeśli nie sądzę, że wpłynęłoby to na dopasowanie modelu do tych obserwacji. (Czy to prawidłowe założenie?)
Mogę dopasować model, dodając niewielką liczbę NumberCOPO
(powiedzmy 0.0001
), ale w najlepszym razie jest to krówka.
Czy dodanie tej małej korekty ciągłości byłoby w praktyce OK? Jeśli nie, jakie inne podejścia powinniśmy wziąć pod uwagę przy przetwarzaniu danych, w których możemy chcieć zastosować przesunięcie w modelu Poissona, w którym zmienna przesunięcia może przyjąć wartość 0? Wszystkie przytoczone przykłady dotyczą sytuacji, w których 0 nie byłoby możliwe dla zmiennej przesunięcia.
źródło
Odpowiedzi:
Więc odpowiedź, którą chcesz wymodelować, brzmi „liczba połączeń na ptaka”, a kłopotliwe linie są tam, gdzie nie zaobserwowałeś żadnych ptaków? Po prostu upuść te rzędy. Nie dodają żadnych informacji do rzeczy, którą próbujesz wymodelować.
źródło
glm.fit
który rzuca chybotanie, nawet jeśli te wartości nie liczą się w części zliczającej modelu. Przypuszczam, że mógłbym zrobić model próg wykluczający ręką, ale ja nie chcę, aby to zrobić, wystarczy poinformować ucznia.W Poissonie GLM przesunięcie jest po prostu multiplikatywnym skalowaniem modelowanej częstości Poissona - a Poisson o wartości zerowej nie jest pomocny ani nawet znaczący ...
Dlatego Spacedman ma rację!
źródło
Po prostu spróbuj zrobić to (Hurdle) ”ręcznie (dla„ dydaktycznego / gimnastycznego ”purporse): podziel na część dwumianową i część cout i ciesz się osobno dopasowaniem logit i regresji cout! Lub użyj standardowych modeli Hurdle (+ test Vuonga) Poisson / negBin / Gamma ..., GAM. Wydaje mi się, że nie potrzebujesz tutaj wariantu „offset” ;-)
źródło