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?
Réponses:
Il y a plusieurs problèmes ici:
g_den
).Si les dénombrements observés proviennent de zones différentes, vous devez prendre le journal de ces zones comme une nouvelle variable:
Vous pouvez contrôler les différentes zones des observations de deux manières différentes:
larea
comme 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 ).larea
comme 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 augmentationslarea
ont 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:
la source
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).
la source
offset
la transformation soit appliquée par défaut, mais cela fait un moment que je ne l'ai pas utiliséoffset
.offset()
n'applique pas la transformation par défaut; il force simplement le coefficient à 1. Voir, par exemple, ici .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
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.
la source