Modélisation des données de comptage où la variable de décalage est 0 pour certaines observations

9

J'essaie d'aider un étudiant d'un collègue. L'élève a observé et compté le comportement des oiseaux (nombre d'appels) dans une configuration expérimentale. Le nombre d'appels attribuables à un oiseau observé spécifique au cours de chaque expérience n'a pas pu être déterminé, mais il était possible de compter le nombre d'oiseaux ayant contribué au nombre d'appels enregistrés. Par conséquent, ma suggestion initiale était d'inclure le nombre d'oiseaux en tant que terme de décalage dans un modèle GLM de Poisson, donc nous ajusterions le nombre attendu d'appels par oiseau .

Le problème avec cela est que pendant de nombreuses occasions d'observation, aucun oiseau (et donc aucun cri) n'a été observé. Le logiciel (R dans ce cas) se plaint parce que (R se plaint de contenir des données mais c'est purement le résultat de l' être ).log(0)=infy-Infoffset(log(nbirds))-Inf

Je soupçonne en fait que nous avons besoin d'un modèle d'obstacle (ou similaire) où nous avons un modèle binomial séparé pour les "appels observés?" (ou non) et un modèle de comptage tronqué pour le nombre d'appels (par oiseau) dans les situations où il y a eu des appels, où nous n'incluons le terme de décalage que dans la partie comptage du modèle.

Après avoir essayé cela en utilisant le package pscl dans R, mais je reçois toujours la même erreur:

mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
               offset(log(NumberCOPO)) | 1, data = Data,
               dist = "poisson")

parce que le même code R ( glm.fitutilisé en interne par hurdle()pour ajuster la partie du modèle de comptage) vérifie -Infmême si je ne pense pas que cela affecterait l'ajustement du modèle pour ces observations. (Est-ce une hypothèse correcte?)

Je peux adapter le modèle en ajoutant un petit nombre à NumberCOPO(par exemple 0.0001), mais c'est au mieux un fudge.

Est-ce que l'ajout de cette petite correction de continuité serait OK en pratique? Sinon, quelles autres approches devrions-nous envisager lors de la manipulation de données où nous pourrions vouloir utiliser un décalage dans un modèle de Poisson où la variable de décalage peut prendre la valeur 0? Tous les exemples que j'ai rencontrés concernent des situations où un 0 ne serait pas possible pour la variable de décalage.

Gavin Simpson
la source
2
Dans ce cas, il semble que votre modèle tente de s'adapter à une tautologie: s'il n'y a pas d'oiseaux observés, vous entendrez également 0 appels d'oiseaux. Je ne suis pas convaincu que l'ajustement d'un modèle aux lignes avec décalage 0 est approprié dans ce cas.
Sycorax dit Réintégrer Monica le
Merci, comme je l'ai mentionné ci-dessous, c'est aussi ma réaction intestinale. J'ai développé un peu dans ma réponse à la réponse de Barry (Spacedman) ci-dessous.
Gavin Simpson
2
Je suis d'accord avec les commentaires qui impliquent que le modèle de taux de Poisson (c'est-à-dire avec le terme de décalage) est inapproprié pour ces cas (et vous avez raison de dire qu'un modèle séparé, tel que binomial, devrait être appliqué pour incorporer ces cas) . Le taux ne peut pas être basé sur un dénominateur nul.
ttnphns

Réponses:

5

La réponse que vous souhaitez modéliser est donc "Nombre d'appels par oiseau" et les lignes gênantes sont celles où vous n'avez observé aucun oiseau? Déposez simplement ces rangées. Ils n'ajoutent aucune information à la chose que vous essayez de modéliser.

Spacedman
la source
C'est aussi ma réaction intestinale; sans doute y penser trop, mais je peux envisager une situation où des oiseaux ont été observés mais aucun appel n'a été fait. D'où le modèle d'obstacle, mais en interne, il utilise toujours glm.fitce qui lance une oscillation même si ces valeurs ne comptent pas dans la partie comptage du modèle. Je suppose que je pourrais faire le modèle d'obstacle à la main mais je ne veux pas le faire, conseille simplement l'élève.
Gavin Simpson
3
Si vous avez beaucoup d'appels à zéro effectués à partir d'oiseaux observés non nuls, vous voudrez peut-être faire un modèle de poisson gonflé à zéro (ou similaire), mais c'est très différent de zéro oiseaux observés lorsque vous êtes intéressé par le nombre d'appels par oiseau .
Spacedman
Dans ce cas, je ne pense pas que nous en ayons beaucoup; jeter les données des oiseaux observés à 0 et ajuster avec un binôme négatif semble être une première étape raisonnable.
Gavin Simpson
2

Dans un GLM de Poisson, un décalage est simplement une mise à l'échelle multiplicative du taux de Poisson en cours de modélisation - et un Poisson avec un taux de zéro n'est ni utile ni significatif ...

C'est pourquoi Spacedman a raison!

Squidge bulbeux
la source
0

Essayez simplement de le faire (Hurdle) "à la main (pour l'achat" didactique / gymnastique "): divisez en partie binomiale et partie cout et anjoy ajustez logit et régression cout séparément! Ou utilisez des modèles Standart Hurdle (+ test Vuong) Poisson / negBin / Gamma ..., GAM. Vous n'avez pas besoin du var "offset" ici, me semble-t-il. ;-)

Ivan Kshnyasev
la source