Devo usare un offset per il mio Poisson GLM?


11

Sto conducendo ricerche per esaminare le differenze nella densità dei pesci e nella ricchezza delle specie ittiche quando uso due diversi metodi di censimento visivo subacqueo. I miei dati originariamente erano dati di conteggio, ma in genere questo è cambiato in densità di pesce, ma ho ancora deciso di utilizzare un Poisson GLM, che spero sia giusto.

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

Le mie 3 variabili predittive sono metodo, sito e profondità che ho ordinato come fattori quando le ho inserite.

Le mie variabili di risposta sono la ricchezza delle specie di cernia, la densità di cernia e la stessa per altri gruppi di pesci. Sono consapevole che la densità non è un numero intero e si tratta di dati numerici, ad esempio 1.34849. Ora sto comunque ricevendo questo errore:

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

Ho letto e molte persone suggeriscono di usare un offset, è questa la cosa più consigliabile da fare?


1
Non si tratta in realtà di come utilizzare R. Questa è una domanda statistica di base mascherata da una domanda R. Dovrebbe essere in tema qui.
gung - Ripristina Monica

Risposte:


11

Ci sono diversi problemi qui:

  1. È necessario utilizzare i conteggi osservati come variabile di risposta. Non utilizzare le densità ( g_den).
  2. Se i conteggi osservati provengono da aree diverse, è necessario prendere il registro di tali aree come una nuova variabile:

    larea = log(area)
  3. Puoi controllare le diverse aree per le osservazioni in due modi diversi:

    • Usando lareacome offset. Ciò renderà effettivamente la tua risposta un tasso (anche se ciò che è elencato sul lato sinistro del tuo modello è un conteggio ).
    • Usando lareacome covariata. Questo controllerà per le diverse aree, ma non renderà la tua risposta equivalente a una frequenza. Questo è un approccio più flessibile che ti consentirà di valutare se gli aumenti lareahanno un effetto crescente o decrescente sul conteggio (ovvero se la pendenza è minore o maggiore di 1).

Ulteriori informazioni su questi problemi sono disponibili nei seguenti thread CV:


6

Sembra che tu abbia diviso i conteggi dei pesci per il volume (o forse l'area) dell'acqua rilevata. In tal caso un offset è davvero appropriato, dovresti usare il registro di qualunque cosa tu abbia diviso. Forse

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

(modificato da una versione errata precedente, manca il registro)

Il motivo del messaggio di errore è che la distribuzione di Poisson è normalmente valutata come numero intero ma la risposta non è stata un numero intero. Questo cambia quando è presente un offset; (risposta / offset) deve essere un numero intero (che ovviamente è, supponendo che i conteggi originali fossero numeri interi).


2
Dici che dovresti usare la trasformazione del log di area (poiché il modello Poisson usa il link del log) nella tua risposta ma il tuo codice non esegue la trasformazione. Non credo che offsetapplichi la trasformazione di default, ma è da un po 'che non la uso offset.
Icocobus,

3
Si noti che offset() non applica la trasformazione per impostazione predefinita; forza semplicemente il coefficiente ad essere 1. Vedi, ad esempio, qui .
gung - Ripristina Monica

1
Grazie per i commenti Quindi dovrei ripristinare i miei dati in conteggi piuttosto che in densità e includere l'area come variabile separata? Mi è stato anche consigliato su un altro forum di fare un modello gaussiano gamma o inverso e di cambiare i miei valori zero su 0,00001 se dovessi mantenere i dati come densità, pensi che sarebbe appropriato?
Vivienne,

4
@JDL Non è corretto mantenere la densità non intera poiché la risposta una volta che il registro (area) è incluso come offset. La funzione di collegamento del registro e l'offset del registro (area) equivalgono al presupposto ragionevole a priori che , ovvero proporzionalità diretta del numero previsto di pesci e delle dimensioni di ciascuna area. Ciò implica che la densità attesa è indipendente dal log ( la zona). E(count)=exp(βTx)area=exp(βTx+log(area))E(count/area)=E(count)/area=exp(βTx)
Jarle Tufto,

5
Non è possibile utilizzare le densità come risposta. È necessario utilizzare i conteggi originali come risposta. Includere l'offset renderà automaticamente la risposta di conteggio equivalente alle densità nel modo corretto.
gung - Ripristina Monica

5

Se hai intenzione di modellare usando il Poisson devi avere valori interi per la tua variabile di risposta. Hai quindi due opzioni

  • Utilizzare l'area o qualche altro denominatore adatto come offset. Questo di solito dovrebbe essere prima registrato
  • Includi area o ecc. Come variabile predittore. Ancora una volta, questo verrebbe normalmente incluso come registro perché si stanno modellando i conteggi dei registri.

Se usi l'approccio offset, stai dicendo che se raddoppi l'area mi aspetterei di raddoppiare il conteggio. Se usi l'approccio predittore stai dicendo che sai se moltiplichi l'area in cui moltiplichi i conteggi ma non necessariamente per lo stesso fattore.

È la tua chiamata.

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.