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.