Modelowanie danych zliczania, w których zmienna przesunięcia wynosi 0 dla niektórych obserwacji

9

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żlog(0)=inf(R narzeka na to, że yzawiera -Infdane, 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.fitużywany wewnętrznie w hurdle()celu dopasowania części modelu) sprawdza, -Infnawet 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.

Gavin Simpson
źródło
2
W tym przypadku wygląda na to, że twój model próbuje dopasować tautologię: jeśli zaobserwowano 0 ptaków, usłyszysz również 0 ptasich połączeń. Nie jestem przekonany, czy dopasowanie modelu do wierszy z przesunięciem 0 jest w tym przypadku właściwe.
Sycorax mówi Przywróć Monikę
Dzięki, jak wspomniałem poniżej, to także moja reakcja jelitowa. Rozbudowałem się trochę w odpowiedzi na poniższą odpowiedź Barry'ego (Spacedman).
Gavin Simpson
2
Zgadzam się z uwagami, które sugerują, że model stawki Poissona (to znaczy z wyrażeniem offsetowym) jest nieodpowiedni dla tych przypadków (i masz rację mówiąc, że być może należy zastosować osobny model, taki jak dwumianowy, aby uwzględnić te przypadki) . Stawka nie może być oparta na mianowniku zerowym.
ttnphns

Odpowiedzi:

5

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ć.

Spacedman
źródło
To także moja reakcja jelit; prawdopodobnie przemyślenie tego, ale mogę sobie wyobrazić sytuację, w której ptaki obserwowały, ale nie dzwoniły. Stąd model przeszkodowy, ale wewnętrznie nadal jest używany, glm.fitktó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.
Gavin Simpson
3
Jeśli masz wiele zerowych wywołań wykonanych z niezerowych obserwowanych ptaków, możesz chcieć zrobić model Poissona z nadmuchanym zerem (lub podobny), ale to bardzo różni się od zerowych obserwowanych ptaków, gdy jesteś zainteresowany liczbą połączeń na ptaka .
Spacedman
W tym przypadku nie sądzę, że mamy ich wiele; wyrzucenie danych o obserwowanych ptakach i dopasowanie do ujemnego dwumianu wydaje się rozsądnym pierwszym krokiem.
Gavin Simpson
2

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ę!

Bulwiasta kałamarnica
źródło
0

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” ;-)

Ivan Kshnyasev
źródło