Dois-je utiliser un décalage pour mon Poisson GLM?

11

Je mène des recherches pour examiner les différences de densité et de richesse en espèces de poissons lorsque j'utilise deux méthodes de recensement visuel sous-marin différentes. Mes données étaient à l'origine des données de comptage, mais elles sont généralement modifiées en densité de poisson, mais j'ai toujours décidé d'utiliser un GLM de Poisson, ce qui, je l'espère, a raison.

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

Mes 3 variables prédictives sont la méthode, le site et la profondeur que j'ai commandés comme facteurs lorsque je les saisis.

Mes variables de réponse sont la richesse en espèces de mérous, la densité de mérous et la même chose pour les autres groupes de poissons. Je suis conscient que la densité n'est pas un entier et qu'il s'agit de données numériques, par exemple 1,34849. Je reçois maintenant cependant cette erreur:

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

J'ai lu et beaucoup de gens suggèrent d'utiliser un décalage, est-ce la chose la plus recommandée à faire?

Vivienne
la source
1
Il ne s'agit pas vraiment de savoir comment utiliser R. C'est une question statistique de base déguisée en question R. Cela devrait être sur le sujet ici.
gung - Rétablir Monica

Réponses:

11

Il y a plusieurs problèmes ici:

  1. Vous devez utiliser les nombres observés comme variable de réponse. Vous ne devez pas utiliser les densités ( g_den).
  2. Si les dénombrements observés proviennent de zones différentes, vous devez prendre le journal de ces zones comme une nouvelle variable:

    larea = log(area)
  3. Vous pouvez contrôler les différentes zones des observations de deux manières différentes:

    • En utilisant lareacomme décalage. Cela fera de votre réponse un taux (même si ce qui est indiqué sur le côté gauche de votre modèle est un décompte ).
    • En utilisant lareacomme covariable. Cela contrôlera les différents domaines, mais ne rendra pas votre réponse équivalente à un taux. Il s'agit d'une approche plus flexible qui vous permettra d'évaluer si les augmentations lareaont un effet croissant ou décroissant sur le dénombrement (c.-à-d. Si la pente est inférieure ou supérieure à 1).

Il y a plus d'informations sur ces problèmes dans les fils de discussion suivants:

gung - Réintégrer Monica
la source
6

Il semble que vous ayez divisé le nombre de poissons par le volume (ou peut-être la superficie) d'eau étudiée. Dans ce cas, un décalage est en effet approprié, vous devez utiliser le journal de ce que vous avez divisé par. Peut-être

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

(modifié à partir d'une version antérieure incorrecte, il manque le journal)

La raison du message d'erreur est que la distribution de poisson a normalement une valeur entière mais que la réponse n'était pas un entier. Cela change une fois qu'un décalage est présent; (réponse / décalage) doit être un entier (ce qui bien sûr est le cas, en supposant que les comptages d'origine étaient des entiers).

JDL
la source
2
Vous mentionnez que vous devez utiliser la transformation logarithmique de l'aire (comme le modèle de Poisson utilise le lien logarithmique) dans votre réponse, mais votre code ne fait pas la transformation. Je ne pense pas que offsetla transformation soit appliquée par défaut, mais cela fait un moment que je ne l'ai pas utilisé offset.
iacobus
3
Notez que offset() n'applique pas la transformation par défaut; il force simplement le coefficient à 1. Voir, par exemple, ici .
gung - Rétablir Monica
1
Merci pour les commentaires. Dois-je donc modifier mes données en nombres plutôt qu'en densités et inclure l'aire comme variable distincte? On m'a également conseillé sur un autre forum de faire un modèle gamma ou gaussien inverse et de changer mes valeurs nulles à 0,00001 si je devais conserver les données sous forme de densités, pensez-vous que ce serait également approprié?
Vivienne
4
E(count)=exp(βTx)area=exp(βTx+log(area))E(count/area)=E(count)/area=exp(βTx)
5
Vous ne pouvez pas utiliser les densités comme réponse. Vous devez utiliser les décomptes d'origine comme réponse. L'inclusion du décalage rendra automatiquement la réponse de comptage équivalente aux densités de la bonne manière.
gung - Rétablir Monica
5

Si vous allez modéliser en utilisant le Poisson, vous devez avoir des valeurs entières pour votre variable de réponse. Vous avez alors deux options

  • Utilisez une zone ou un autre dénominateur approprié comme décalage. Cela devrait généralement être enregistré en premier
  • Inclure la zone ou etc. comme variable prédictive. Encore une fois, cela serait généralement inclus dans un journal, car vous modélisez le nombre de journaux.

Si vous utilisez l'approche offset, vous dites que si je double la zone, je m'attends à ce que le nombre soit double. Si vous utilisez l'approche prédictive, vous dites que vous savez que si vous multipliez la zone, vous multipliez les comptes, mais pas nécessairement par le même facteur.

C'est ton appel.

mdewey
la source