Modellierung von Zähldaten, bei denen die Versatzvariable für einige Beobachtungen 0 ist

9

Ich versuche einem Studenten eines Kollegen zu helfen. Der Student beobachtete und zählte das Verhalten der Vögel (Anzahl der Anrufe) in einem Versuchsaufbau. Die Anzahl der Anrufe, die einem bestimmten beobachteten Vogel während jedes Experiments zugeordnet werden konnten, konnte nicht bestimmt werden, aber es war möglich, die Anzahl der Vögel zu zählen, die zur Anzahl der aufgezeichneten Anrufe beitrugen. Daher war mein erster Vorschlag, die Anzahl der Vögel als Offset-Term in ein Poisson GLM-Modell aufzunehmen, daher würden wir die erwartete Anzahl der Anrufe pro Vogel anpassen .

Das Problem dabei ist, dass bei vielen Beobachtungsanlässen keine Vögel (und damit keine Rufe) beobachtet wurden. Die Software (in diesem Fall R) beschwert sich, weil (R beschwert sich über das Enthalten von Daten, aber das ist nur das Ergebnis des Seins ).log(0)=infy-Infoffset(log(nbirds))-Inf

Ich vermute tatsächlich, wir brauchen ein Hürdenmodell (oder ähnliches), bei dem wir ein separates Binomialmodell für "beobachtete Anrufe?" Haben. (oder nicht) und ein abgeschnittenes Zählmodell für die Anzahl der Anrufe (pro Vogel) in Situationen, in denen Anrufe getätigt wurden, wobei der Offset-Term nur im Zählteil des Modells enthalten ist.

Nachdem ich dies mit dem pscl- Paket in R versucht habe, erhalte ich immer noch den gleichen Fehler:

mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
               offset(log(NumberCOPO)) | 1, data = Data,
               dist = "poisson")

weil derselbe R-Code ( glm.fitder intern verwendet wird hurdle(), um den Teil des Zählmodells anzupassen) überprüft wird -Inf, obwohl ich nicht glaube, dass dies die Modellanpassung für diese Beobachtungen beeinflussen würde. (Ist das eine richtige Annahme?)

Ich kann das Modell anpassen, indem ich NumberCOPO(sagen wir 0.0001) eine kleine Zahl hinzufüge, aber dies ist bestenfalls ein Fudge.

Wäre das Hinzufügen dieser kleinen Kontinuitätskorrektur in der Praxis in Ordnung? Wenn nicht, welche anderen Ansätze sollten wir beim Umgang mit Daten berücksichtigen, bei denen wir möglicherweise einen Offset in einem Poisson-Modell verwenden möchten, bei dem die Offset-Variable den Wert 0 annehmen kann? Alle Beispiele, auf die ich gestoßen bin, beziehen sich auf Situationen, in denen eine 0 für die Versatzvariable nicht möglich wäre.

Gavin Simpson
quelle
2
In diesem Fall scheint Ihr Modell zu versuchen, einer Tautologie zu entsprechen: Wenn 0 Vögel beobachtet werden, hören Sie auch 0 Vogelrufe. Ich bin nicht davon überzeugt, dass das Anpassen eines Modells an Zeilen mit dem Versatz 0 in diesem Fall angemessen ist.
Sycorax sagt Reinstate Monica
Danke, wie ich unten erwähnte, das ist auch meine Bauchreaktion. Ich habe meine Antwort auf die Antwort von Barry (Spacedman) unten ein wenig erweitert.
Gavin Simpson
2
Ich würde den Kommentaren zustimmen, die implizieren, dass das Poisson- Ratenmodell (dh mit dem Offset-Term) für diese Fälle ungeeignet ist (und Sie sagen zu Recht, dass möglicherweise ein separates Modell wie ein Binomialmodell angewendet werden sollte, um diese Fälle einzubeziehen). . Die Rate kann nicht auf dem Nenner Null basieren.
ttnphns

Antworten:

5

Die Antwort, die Sie modellieren möchten, lautet also "Anzahl der Anrufe pro Vogel", und in den problematischen Zeilen haben Sie keine Vögel beobachtet? Lass einfach diese Zeilen fallen. Sie fügen dem Objekt, das Sie modellieren möchten, keine Informationen hinzu.

Spacedman
quelle
Das ist auch meine Bauchreaktion; Ich denke wahrscheinlich darüber nach, aber ich kann mir eine Situation vorstellen, in der Vögel beobachtet, aber keine Anrufe getätigt wurden. Daher das Hürdenmodell, aber intern wird es immer noch verwendet, glm.fitwas ein Wackeln auslöst, selbst wenn diese Werte im Zählteil des Modells nicht zählen. Ich nehme an, ich könnte das Hürdenmodell von Hand machen, aber ich möchte das nicht tun, sondern nur den Schüler beraten.
Gavin Simpson
3
Wenn Sie viele Null-Anrufe von nicht-Null-beobachteten Vögeln haben, möchten Sie vielleicht ein Null-aufgeblasenes Poisson-Modell (oder ähnliches) durchführen, aber das unterscheidet sich sehr von Null-beobachteten Vögeln, wenn Sie an der Anzahl der Anrufe pro Vogel interessiert sind .
Spacedman
In diesem Fall glaube ich nicht, dass wir viele davon haben; Das Auswerfen der 0-beobachteten Vogeldaten und das Anpassen eines negativen Binomials scheint ein vernünftiger erster Schritt zu sein.
Gavin Simpson
2

In einem Poisson-GLM ist ein Offset einfach eine multiplikative Skalierung der zu modellierenden Poisson-Rate - und ein Poisson mit einer Rate von Null ist nicht hilfreich oder sogar sinnvoll ...

Deshalb ist Spacedman richtig!

Knolliger Squidge
quelle
0

Versuchen Sie es einfach (Hürde) "von Hand (für" didaktische / gymnastische "Zwecke): Teilen Sie es in Binomialteil und Cout-Teil auf und genießen Sie die getrennte Anpassung von Logit und Cout-Regression! Oder verwenden Sie Standard-Hürdenmodelle (+ Vuong-Test) Poisson / negBin / Gamma ..., GAM. Du brauchst hier nicht die "Offset" -Variante, scheint mir. ;-)

Ivan Kshnyasev
quelle