Soll ich für meinen Poisson GLM einen Offset verwenden?

11

Ich forsche, um Unterschiede in der Fischdichte und im Fischartenreichtum zu untersuchen, wenn ich zwei verschiedene visuelle Unterwasserzählungsmethoden verwende. Meine Daten waren ursprünglich Zähldaten, aber normalerweise wird dies in Fischdichte geändert, aber ich habe mich immer noch für die Verwendung eines Poisson GLM entschieden, was hoffentlich richtig ist.

model1 <- glm(g_den ~ method + site + depth, poisson)

Meine 3 Prädiktorvariablen sind Methode, Ort und Tiefe, die ich bei der Eingabe als Faktoren bestellt habe.

Meine Antwortvariablen sind der Artenreichtum der Zackenbarsche, die Zackenbarschdichte und das Gleiche für andere Fischgruppen. Mir ist bewusst, dass die Dichte keine ganze Zahl ist und es sich um numerische Daten handelt, z. B. 1.34849. Ich erhalte jetzt jedoch diesen Fehler:

In dpois(y, mu, log = TRUE) : non-integer x = 0.037500

Ich habe nachgelesen und viele Leute schlagen vor, einen Offset zu verwenden. Ist dies die ratsamste Vorgehensweise?

Vivienne
quelle
1
Hier geht es nicht wirklich darum, wie man R verwendet. Dies ist eine grundlegende statistische Frage, die als R-Frage getarnt ist. Es sollte hier zum Thema sein.
Gung - Reinstate Monica

Antworten:

11

Hier gibt es mehrere Probleme:

  1. Sie müssen die beobachteten Zählungen als Antwortvariable verwenden. Sie sollten die Dichten ( g_den) nicht verwenden .
  2. Wenn die beobachteten Zählungen aus unterschiedlichen Bereichen stammen, müssen Sie das Protokoll dieser Bereiche als neue Variable verwenden:

    larea = log(area)
  3. Sie können die verschiedenen Bereiche für die Beobachtungen auf zwei verschiedene Arten steuern:

    • Durch Verwendung lareaals Offset. Dadurch wird Ihre Antwort tatsächlich zu einer Rate (obwohl auf der linken Seite Ihres Modells eine Zählung aufgeführt ist ).
    • Durch die Verwendung lareaals Kovariate. Dadurch werden die unterschiedlichen Bereiche gesteuert, Ihre Antwort entspricht jedoch nicht einer Rate. Dies ist ein flexiblerer Ansatz, mit dem Sie beurteilen können, ob Erhöhungen lareaeinen zunehmenden oder abnehmenden Effekt auf die Anzahl haben (dh ob die Steigung kleiner oder größer als 1 ist).

Weitere Informationen zu diesen Problemen finden Sie in den folgenden CV-Threads:

gung - Monica wieder einsetzen
quelle
6

Es sieht so aus, als hätten Sie die Anzahl der Fische durch das Volumen (oder vielleicht die Fläche) des untersuchten Wassers geteilt. In diesem Fall ist ein Versatz in der Tat angemessen. Sie sollten das Protokoll von allem verwenden, durch das Sie geteilt haben. Vielleicht

model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)

(bearbeitet von früherer falscher Version, Protokoll fehlt)

Der Grund für die Fehlermeldung ist, dass die Poisson-Verteilung normalerweise einen ganzzahligen Wert hat, die Antwort jedoch keine Ganzzahl war. Dies ändert sich, sobald ein Offset vorhanden ist. (Antwort / Offset) muss eine Ganzzahl sein (was natürlich der Fall ist, vorausgesetzt, die ursprünglichen Zählungen waren Ganzzahlen).

JDL
quelle
2
Sie erwähnen, dass Sie in Ihrer Antwort die Protokolltransformation des Bereichs verwenden sollten (da das Poisson-Modell den Protokolllink verwendet), aber Ihr Code führt die Transformation nicht durch. Ich glaube nicht, dass offsetdie Transformation standardmäßig angewendet wird, aber es ist eine Weile her, seit ich sie verwendet habe offset.
Iacobus
3
Beachten Sie, dass die Transformation standardmäßig offset() nicht angewendet wird. es erzwingt lediglich den Koeffizienten auf 1. Siehe z . B. hier .
Gung - Reinstate Monica
1
Danke für die Kommentare. Sollte ich meine Daten wieder auf Anzahl anstatt auf Dichte ändern und den Bereich als separate Variable einschließen? In einem anderen Forum wurde mir auch geraten, ein Gamma- oder inverses Gauß-Modell zu erstellen und meine Nullwerte auf 0,00001 zu ändern, wenn ich die Daten als Dichten beibehalten würde. Halten Sie das auch für angemessen?
Vivienne
4
@JDL Es ist nicht richtig, die nicht ganzzahlige Dichte als Antwort beizubehalten, sobald log (area) als Offset enthalten ist. Die Log-Link-Funktion und der Log (Area) Offset entsprechen der a priori vernünftigen Annahme, dassE.(cÖunt)=exp(βT.x)einreein=exp(βT.x+Log(einreein))das heißt, direkte Verhältnismäßigkeit der erwarteten Anzahl von Fischen und der Größe jedes Gebiets. Dies impliziert, dass die erwartete DichteE.(cÖunt/.einreein)=E.(cÖunt)/.einreein=exp(βT.x)ist unabhängig von log (Bereich).
Jarle Tufto
5
Sie können die Dichten nicht als Antwort verwenden. Sie müssen die ursprünglichen Zählungen als Antwort verwenden. Einschließlich der Offset wird automatisch die machen Zahl Antwort entspricht Dichten in der richtigen Art und Weise.
Gung - Reinstate Monica
5

Wenn Sie mit dem Poisson modellieren möchten, müssen Sie ganzzahlige Werte für Ihre Antwortvariable haben. Sie haben dann zwei Möglichkeiten

  • Verwenden Sie einen Bereich oder einen anderen geeigneten Nenner als Versatz. Dies muss normalerweise zuerst protokolliert werden
  • Bereich oder usw. als Prädiktorvariable einschließen. Auch dies wird normalerweise als Protokoll aufgenommen, da Sie die Protokollanzahl modellieren.

Wenn Sie den Offset-Ansatz verwenden, sagen Sie, dass ich bei einer Verdoppelung der Fläche eine doppelte Anzahl erwarten würde. Wenn Sie den Prädiktor-Ansatz verwenden, sagen Sie, dass Sie wissen, wenn Sie den Bereich multiplizieren, multiplizieren Sie die Zählungen, aber nicht unbedingt mit demselben Faktor.

Es ist dein Anruf.

mdewey
quelle