Come gestire l'avviso "non intero" dal GLM binomiale negativo?


11

Sto cercando di modellare le intensità medie dei parassiti che colpiscono un ospite in R usando un modello binomiale negativo. Continuo a ricevere 50 o più avvisi che dicono:

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

Come posso gestirlo? Il mio codice è simile al seguente:

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

1
Aggiungi un esempio riproducibile per le persone con cui lavorare.
gung - Ripristina Monica

5
Un GLiM binomiale negativo è una specie di modello di conteggio. La risposta dovrebbe essere conta. Un conteggio , per definizione, non può essere un valore frazionario. Hai tali valori?
gung - Ripristina Monica

1
Puoi chiarire cosa intendi per "intensità"? Stai dividendo il conteggio di un parassita per, diciamo, una quantità di superficie per un ospite?
gung - Ripristina Monica

1
Ho i dati di conteggio, tuttavia ho dovuto calcolare le intensità per tenere conto dei diversi sforzi di campionamento. Capisco che ho bisogno di contare i dati lì, tuttavia mi chiedevo solo se c'era un altro modo di lavorare con numeri non interi usando lo stesso modello. Per intensità ho diviso il numero di parassiti con il numero di ospite infetto.
Natasha,

2
@Natasha, non farlo. È estremamente probabile che il modo giusto di gestire questo problema sia secondo la risposta di Gung, con un offset. Se vuoi essere sicuro, modifica la tua domanda per spiegare un po 'di più sulla provenienza delle intensità di campionamento differenziali. Questi diversi numeri di host sono? Diverse lunghezze di tempo campionate o numero di collezionisti?
Ben Bolker,

Risposte:


9

Il binomio negativo è una distribuzione per i dati di conteggio, quindi vuoi davvero che la variabile di risposta sia conteggi (cioè numeri interi non negativi). Detto questo, è opportuno tenere conto di "diversi sforzi di campionamento" (non so esattamente a cosa ti riferisca, ma ne ho un'idea). Tuttavia, non dovresti provare a farlo dividendo i tuoi conteggi per un altro numero. Invece, devi usare quell'altro numero come offset . C'è una bella discussione sul CV di cosa sia un offset qui: quando usare un offset in una regressione di Poisson? La mia ipotesi è che il tuo modello dovrebbe essere qualcosa del tipo:

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

Grazie. Ci proverò e torno a dirti che cosa ho fatto.
Natasha,

OT: mi manca qualcosa, cosa significa avere molti risultati in una regressione ??
Bakaburg,

@ Bakakurg, non so dire a cosa ti riferisci.
gung - Ripristina Monica

La parte "Larve + Ninfe + Adulti ~" nel codice.
Bakaburg,

1
@Bakaburg, si tratta di come funziona R. L'aggiunta è elementally. L'aggiunta di 3 vettori ti dà un singolo vettore in cui ogni elemento è la somma dei 3 elementi corrispondenti. Per avere più variabili di risposta sull'LHS di una formula R, è necessario utilizzare cbind().
gung - Ripristina Monica

4

È un avvertimento, non un errore fatale. glm.nb () si aspetta conteggi come variabile di risultato, che sono numeri interi. I tuoi dati non sono numeri interi: 251.529.

R sta dicendo "Hmmm ... potresti voler dare un'occhiata e assicurarti che sia OK, perché potrebbe non sembrare giusto." Se la mia memoria è corretta, SPSS non dà questo avviso.

Se sei sicuro di utilizzare il modello giusto, anche se non hai numeri interi, ignoralo e continua.


1
So che è un avvertimento, mi stavo solo chiedendo se c'è un modo per aggirarlo. Tuttavia, ho numeri interi, quindi stavo cercando di vedere se esiste un modo di lavorare con numeri interi, ma utilizzando lo stesso modello con un codice diverso.
Natasha,

1
Come avvertimenti Sopprimere spiegato qui: stackoverflow.com/questions/16194212/...
Kjetil b Halvorsen

-2

Sono un parassitologo ecologico .. il modo in cui dovresti gestirlo è legando gli host che erano parassiti e quelli che non lo erano, e quindi usando una distribuzione binomiale .. vedi il codice qui sotto.

Inoltre non ho mai usato una glm con più di una variabile y .. quindi diciamo che vuoi guardare le larve parassite: avresti # di larve che erano sane e i # che erano parassitizzati.

Diciamo: Lh e Lp

Quindi per esempio

parasitizedL = cbind (Lp, Lh) hist (parassita) # Immagino che tu possa semplicemente usare una distribuzione binomiale regolare w / glm .. e potresti non aver bisogno del modello neg.binomial PLarvae1 = glm (parasitizedL ~ B.type + Month + Season, famiglia = binomiale, data = MI.df)

quindi fai una riduzione graduale del modello per vedere quali dei tuoi fattori influenzano significativamente il parassitismo ... vedi link sotto

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

tuttavia sembra che tu debba avere effetti casuali per tenere conto del campionamento ripetitivo .. quindi probabilmente il tuo effetto casuale sarà (1 | Stagione / Mese) ... ma difficile da dire senza conoscere i tuoi dati

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.