Wie gehe ich mit einer nicht ganzzahligen Warnung von negativem Binomial-GLM um?


11

Ich versuche, die mittleren Intensitäten von Parasiten, die einen Wirt in R beeinflussen, mithilfe eines negativen Binomialmodells zu modellieren. Ich bekomme immer wieder 50 oder mehr Warnungen, die besagen:

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

Wie kann ich damit umgehen? Mein Code sieht folgendermaßen aus:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season, data=MI.df)

1
Bitte fügen Sie ein reproduzierbares Beispiel hinzu, mit dem Personen arbeiten können.
Gung - Reinstate Monica

5
Ein negatives Binomial-GLiM ist eine Art Zählmodell. Die Antwort soll zählen. Eine Zählung kann per Definition kein Bruchwert sein. Hast du solche Werte?
Gung - Reinstate Monica

1
Können Sie klarstellen, was Sie unter "Intensitäten" verstehen? Teilen Sie die Anzahl der Parasiten beispielsweise durch die Oberfläche eines Wirts?
Gung - Reinstate Monica

1
Ich habe Zähldaten, musste jedoch die Intensitäten berechnen, um unterschiedliche Stichprobenbemühungen zu berücksichtigen. Ich verstehe, dass ich dort Zähldaten benötige, habe mich aber nur gefragt, ob es eine andere Möglichkeit gibt, mit nicht ganzzahligen Zahlen mit demselben Modell zu arbeiten. Für die Intensitäten habe ich die Anzahl der Parasiten mit der Anzahl der infizierten Wirte geteilt.
Natasha

2
@ Natasha, tu es nicht. Es ist überwältigend wahrscheinlich, dass der richtige Weg, um dieses Problem zu lösen, nach Gungs Antwort mit einem Versatz ist. Wenn Sie sicher sein möchten, bearbeiten Sie Ihre Frage, um ein wenig mehr darüber zu erklären, woher die unterschiedlichen Abtastintensitäten stammen. Sind das unterschiedliche Anzahlen von Hosts? Unterschiedliche Abtastdauer oder Anzahl der Sammler?
Ben Bolker

Antworten:


9

Das negative Binomial ist eine Verteilung für Zähldaten. Sie möchten also wirklich, dass Ihre Antwortvariable zählt (dh nicht negative ganze Zahlen). Trotzdem ist es angebracht, "unterschiedliche Stichprobenbemühungen" zu berücksichtigen (ich weiß nicht genau, worauf Sie sich beziehen, aber ich verstehe das Wesentliche). Sie sollten dies jedoch nicht versuchen, indem Sie Ihre Zählungen durch eine andere Zahl teilen. Stattdessen müssen Sie diese andere Zahl als Versatz verwenden . Es gibt eine nette Diskussion über den Lebenslauf, was ein Offset hier ist: Wann sollte ein Offset in einer Poisson-Regression verwendet werden? Ich vermute, dass Ihr Modell so etwas wie:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season + offset(log(num.hosts)), 
                data=MI.df)

Vielen Dank. Ich werde es versuchen und zurückkommen, um Ihnen zu sagen, was ich getan habe.
Natasha

OT: Mir fehlt etwas. Was bedeutet es, viele Ergebnisse in einer Regression zu haben?
Bakaburg

@ Bakaburg, ich kann nicht sagen, worauf Sie sich beziehen.
Gung - Reinstate Monica

Der Teil "Larven + Nymphen + Erwachsene ~" im Code.
Bakaburg

1
@ Bakaburg, hier geht es darum, wie R funktioniert. Die Addition erfolgt elementweise. Durch Hinzufügen von 3 Vektoren erhalten Sie einen einzelnen Vektor, wobei jedes Element die Summe der 3 entsprechenden Elemente ist. Um mehrere Antwortvariablen in der LHS einer R-Formel zu haben, müssen Sie verwenden cbind().
Gung - Reinstate Monica

4

Es ist eine Warnung, kein schwerwiegender Fehler. glm.nb () erwartet Zählungen als Ergebnisvariable, bei denen es sich um Ganzzahlen handelt. Ihre Daten sind keine ganzen Zahlen: 251.529.

R sagt: "Hmmm ... vielleicht möchten Sie das überprüfen und sicherstellen, dass es in Ordnung ist, weil es möglicherweise nicht richtig aussieht." Wenn mein Gedächtnis korrekt ist, gibt SPSS keine solche Warnung aus.

Wenn Sie sicher sind, dass Sie das richtige Modell verwenden, obwohl Sie keine ganzen Zahlen haben, ignorieren Sie es und fahren Sie fort.


1
Ich weiß, dass es eine Warnung ist. Ich habe mich nur gefragt, ob es einen Ausweg gibt. Ich habe zwar Ganzzahlen, also habe ich versucht zu sehen, ob es eine Möglichkeit gibt, mit Ganzzahlen zu arbeiten, aber dasselbe Modell mit einem anderen Code zu verwenden.
Natasha

1
So unterdrücken Sie hier erläuterte Warnungen: stackoverflow.com/questions/16194212/…
kjetil b halvorsen

-2

Ich bin ein ökologischer Parasitologe. Sie sollten damit umgehen, indem Sie die parasitierten und die nicht parasitierten Wirte binden und dann eine Binomialverteilung verwenden. Siehe den folgenden Code.

Ich habe auch noch nie ein glm mit mehr als einer Variablen verwendet. Nehmen wir also an, Sie möchten sich parasitierte Larven ansehen: Sie hätten eine Anzahl von Larven, die gesund waren, und die Anzahl, die parasitiert waren.

Sagen wir: Lh und Lp

So zum Beispiel

parasitizedL = cbind (Lp, Lh) hist (parasitized) #Ich schätze, Sie können nur eine reguläre Binomialverteilung w / glm verwenden und benötigen möglicherweise kein neg.binomiales Modell PLarvae1 = glm (parasitizedL ~ B.type + Month + Season, Familie = Binomial, Daten = MI.df)

Führen Sie dann eine schrittweise Modellreduktion durch, um festzustellen, welche Ihrer Faktoren den Parasitismus signifikant beeinflussen ... siehe Link unten

http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html

Es sieht jedoch so aus, als müssten Sie zufällige Effekte haben, um wiederholte Stichproben zu berücksichtigen. Daher ist Ihr zufälliger Effekt wahrscheinlich (1 | Saison / Monat) ... aber schwer zu sagen, ohne Ihre Daten zu kennen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.