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?
Antworten:
Hier gibt es mehrere Probleme:
g_den
) nicht verwenden .Wenn die beobachteten Zählungen aus unterschiedlichen Bereichen stammen, müssen Sie das Protokoll dieser Bereiche als neue Variable verwenden:
Sie können die verschiedenen Bereiche für die Beobachtungen auf zwei verschiedene Arten steuern:
larea
als Offset. Dadurch wird Ihre Antwort tatsächlich zu einer Rate (obwohl auf der linken Seite Ihres Modells eine Zählung aufgeführt ist ).larea
als 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öhungenlarea
einen 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:
quelle
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).
quelle
offset
die Transformation standardmäßig angewendet wird, aber es ist eine Weile her, seit ich sie verwendet habeoffset
.offset()
nicht angewendet wird. es erzwingt lediglich den Koeffizienten auf 1. Siehe z . B. hier .Wenn Sie mit dem Poisson modellieren möchten, müssen Sie ganzzahlige Werte für Ihre Antwortvariable haben. Sie haben dann zwei Möglichkeiten
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.
quelle