¿Cómo lidiar con la advertencia "no entera" de GLM binomial negativo?

11

Estoy tratando de modelar las intensidades medias de parásitos que afectan a un huésped en R usando un modelo binomial negativo. Sigo recibiendo 50 o más advertencias que dicen:

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

¿Cómo puedo lidiar con esto? Mi código se ve así:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season, data=MI.df)
Natasha
fuente
1
Agregue un ejemplo reproducible para que las personas trabajen.
gung - Restablece a Monica
55
Un GLiM binomial negativo es una especie de modelo de conteo. Se supone que la respuesta es recuento. Un recuento , por definición, no puede ser un valor fraccionario. ¿Tienes esos valores?
gung - Restablece a Monica
1
¿Puedes aclarar lo que quieres decir con "intensidades"? ¿Está dividiendo un recuento de un parásito por, por ejemplo, una cantidad de área de superficie para un huésped?
gung - Restablece a Monica
1
Tengo datos de conteo, sin embargo, tuve que calcular las intensidades para tener en cuenta los diferentes esfuerzos de muestreo. Entiendo que necesito datos de conteo allí, sin embargo, me preguntaba si había otra forma de trabajar con números no enteros utilizando el mismo modelo. Para intensidades, dividí el recuento de parásitos con el número de huéspedes infectados.
Natasha
2
@ Natasha, no lo hagas. Es abrumadoramente probable que la forma correcta de manejar este problema sea de acuerdo con la respuesta de Gung, con un desplazamiento. Si quiere estar seguro, edite su pregunta para explicar un poco más sobre el origen de las intensidades de muestreo diferencial. ¿Son estos diferentes números de hosts? ¿Diferentes períodos de tiempo muestreados o número de recolectores?
Ben Bolker

Respuestas:

9

El binomio negativo es una distribución de datos de recuento, por lo que realmente desea que su variable de respuesta sea recuento (es decir, números enteros no negativos). Dicho esto, es apropiado tener en cuenta "diferentes esfuerzos de muestreo" (no sé exactamente a qué se refiere, pero entiendo lo esencial). Sin embargo, no debe intentar hacerlo dividiendo sus cuentas por otro número. En cambio, debe usar ese otro número como compensación . Hay una buena discusión sobre el CV de lo que es un desplazamiento aquí: ¿ Cuándo usar un desplazamiento en una regresión de Poisson? Supongo que su modelo debería ser algo como:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season + offset(log(num.hosts)), 
                data=MI.df)
gung - Restablece a Monica
fuente
Gracias. Intentaré esto y volveré para contarte lo que hice.
Natasha
OT: me falta algo, ¿qué significa tener muchos resultados en una regresión?
Bakaburg
@Bakaburg, no puedo decir a qué se refiere.
gung - Restablece a Monica
La parte "Larvas + Ninfas + Adultos ~" del código.
Bakaburg
1
@Bakaburg, se trata de cómo funciona R. La adición es por elementos. Agregar 3 vectores le da un solo vector donde cada elemento es la suma de los 3 elementos correspondientes. Para tener múltiples variables de respuesta en el LHS de una fórmula R, debe usar cbind().
gung - Restablece a Monica
4

Es una advertencia, no un error fatal. glm.nb () espera contar como su variable de resultado, que son enteros. Sus datos no son enteros: 251.529.

R dice "Hmmm ... es posible que desee comprobar esto y asegurarse de que está bien, porque puede que no parezca correcto". Si mi memoria es correcta, SPSS no da tal advertencia.

Si está seguro de que está utilizando el modelo correcto, aunque no tenga enteros, ignórelo y continúe.

Jeremy Miles
fuente
1
Sé que es una advertencia, me preguntaba si hay alguna forma de evitarlo. Sin embargo, tengo enteros, así que estaba tratando de ver si hay una manera de trabajar con enteros pero usando el mismo modelo con un código diferente.
Natasha
1
Cómo suprimir las advertencias explicadas aquí: stackoverflow.com/questions/16194212/…
kjetil b halvorsen
-2

Soy un parasitólogo ecológico ... la forma en que debe manejar esto es uniendo los hosts que fueron parasitados y los que no lo fueron, y luego usando una distribución binomial ... vea el código a continuación.

Tampoco he usado nunca un glm con más de una variable y ... así que digamos que quieres mirar las larvas parasitadas: tendrías # de larvas sanas y las # que estaban parasitadas.

Digamos: Lh y Lp

Así por ejemplo

parasitizedL = cbind (Lp, Lh) hist (parasitized) # Supongo que puede usar una distribución binomial regular w / glm ... y puede que no necesite el modelo binomial negativo PLarvae1 = glm (parasitizedL ~ B.type + Month + Season, familia = binomio, datos = MI.df)

luego haga una reducción gradual del modelo para ver cuáles de sus factores afectan significativamente el parasitismo ... vea el siguiente enlace

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

sin embargo, parece que necesita tener efectos aleatorios para tener en cuenta el muestreo repetitivo ... por lo que es probable que su efecto aleatorio sea (1 | Temporada / Mes) ... pero difícil de saber sin conocer sus datos

JULIE HOPPER
fuente