Comment tester / prouver que les données sont gonflées à zéro?

9

J'ai un problème qui, je pense, devrait être simple, mais je n'arrive pas à le comprendre. Je regarde la pollinisation des graines, j'ai des plantes (n = 36) qui fleurissent en grappes, j'échantillon 3 grappes de fleurs de chaque plante et 6 gousses de graines de chaque grappe (18 gousses de graines au total de chaque plante). Une gousse peut avoir entre 0 et au plus 4 graines pollinisées. Ainsi, les données sont comptées, avec une limite supérieure. Je trouve qu'en moyenne ~ 10% des graines sont pollinisées, mais entre 1 et 30% sur une plante donnée, donc sur des données dispersées, et bien sûr, il y a 4 répliques de grappes manquantes sur 3 plantes, donc pas parfaitement symétriques .

La question que je pose est de savoir si ces données soutiennent l'idée que cette plante nécessite des pollinisateurs pour la production de graines.

Je trouve que la distribution du nombre de graines dans une gousse semble être plus de 0 gousses pollinisées (6-9 gousses sur 16) et plus de 3 et 4 gousses pollinisées (2-4 pour chacune) que ne le ferait s’attendre à ce que les graines de la population soient pollinisées au hasard. Fondamentalement, je pense que c'est un exemple classique de données zéro gonflées, d'abord un insecte visite ou ne visite pas du tout la fleur (un générateur zéro) et si c'est le cas, puis pollinise 0-4 des graines dans une autre distribution. L'hypothèse alternative est que la plante est partiellement autofécondée, et on s'attendrait alors à ce que chaque graine ait la même probabilité d'être pollinisée (ces données suggèrent une chance d'environ 0,1, ce qui signifie 0,01 chance pour deux graines dans la même gousse, etc.) .

Mais je veux simplement démontrer que les données correspondent le mieux à l'une ou l'autre distribution, pas réellement FAIRE un ZIP ou un ZINB sur les données. Je pense que quelle que soit la méthode que j'utilise, elle devrait tenir compte du nombre réel de graines pollinisées et du nombre de gousses échantillonnées sur chaque plante. La meilleure chose que j'ai trouvée est de faire une sorte de sangle de démarrage où j'assigne simplement au hasard le nombre de graines pollinisées pour une plante donnée dans le nombre de gousses de graines que j'ai échantillonnées, faites-le 10000 fois et voyez combien il est probable les données expérimentales pour la plante donnée sont sorties de cette distribution aléatoire.

Je pense simplement qu'il y a quelque chose à ce sujet qui devrait être beaucoup plus facile que le bootstrap par force brute, mais après des jours de réflexion et de recherche, j'abandonne. Je ne peux pas simplement comparer à une distribution de Poisson parce que c'est la limite supérieure, ce n'est pas binomial parce que j'ai besoin de générer la distribution attendue en premier. Des pensées? Et j'utilise R, donc des conseils (en particulier sur la façon de générer le plus élégamment 10 000 distributions aléatoires de n boules dans 16 boîtes qui peuvent chacune contenir au plus 4 boules) seraient les bienvenus.

AJOUTÉ 9/07/2012 Tout d'abord, merci à tous pour tout l'intérêt et l'aide. La lecture des réponses m'a fait penser à reformuler un peu ma question. Ce que je dis, c'est que j'ai une hypothèse (que je considère pour l'instant comme nulle) selon laquelle les graines sont pollinisées au hasard entre les gousses, et mon autre hypothèse est qu'une gousse contenant au moins 1 graine pollinisée est plus susceptible de ont plusieurs graines pollinisées que l'on pourrait attendre d'un processus aléatoire. J'ai fourni des données réelles de trois usines comme exemples pour illustrer ce dont je parle. La première colonne est le nombre de graines pollinisées dans une gousse, la deuxième colonne est la fréquence des gousses avec ce nombre de graines.

plante 1 (total 3 graines: 4% de pollinisation)

num.seeds :: pod.freq

0 :: 16

1 :: 1

2 :: 1

3 :: 0

4 :: 0

plante 2 (total 19 graines: 26% de pollinisation)

num.seeds :: pod.freq

0 :: 12

1 :: 1

2 :: 1

3 :: 0

4 :: 4

plante 3 (total 16 graines: 22% de pollinisation)

num.seeds :: pod.freq

0 :: 9

1 :: 4

2 :: 3

3 :: 2

4 :: 0

Dans l'usine # 1, seulement 3 graines ont été pollinisées dans 18 gousses, une gousse avait une graine et une gousse avait deux graines. En pensant à un processus d'ajout aléatoire d'une graine aux gousses, les deux premières graines vont chacune dans leur propre gousse, mais pour la 3ème graine, il y a 6 emplacements disponibles dans les gousses qui ont déjà une graine mais 64 emplacements dans les 16 gousses sans graines, donc la probabilité la plus élevée d'une gousse avec 2 graines ici est de 6/64 = 0,094. C'est un peu faible, mais pas vraiment extrême, donc je dirais que cette plante correspond à l'hypothèse d'une pollinisation aléatoire sur toutes les graines avec une probabilité de pollinisation de ~ 4%. Mais la plante 2 me semble beaucoup plus extrême, avec 4 gousses complètement pollinisées, mais 12 gousses sans rien. Je ne sais pas exactement comment calculer les chances de cette distribution directement (d'où mon idée de bootstrap), mais je suppose que les chances que cette distribution se produise au hasard si chaque graine a environ 25% de chances de pollinisation sont assez faibles. Plant # 3 Je n'ai vraiment aucune idée, je pense qu'il y a plus de 0 et de 3 que ce à quoi on devrait s'attendre pour une distribution aléatoire mais mon instinct est que cette distribution pour ce nombre de graines est beaucoup plus probable que la distribution pour la plante # 2, et peut-être pas si improbable. Mais évidemment, je veux savoir avec certitude, et à travers toutes les usines. Je pense qu'il y a plus de 0 et de 3 que ce à quoi on devrait s'attendre pour une distribution aléatoire, mais mon intuition est que cette distribution pour ce nombre de graines est beaucoup plus probable que la distribution pour la plante # 2, et peut-être pas si improbable. Mais évidemment, je veux savoir avec certitude, et à travers toutes les usines. Je pense qu'il y a plus de 0 et de 3 que ce à quoi on devrait s'attendre pour une distribution aléatoire, mais mon intuition est que cette distribution pour ce nombre de graines est beaucoup plus probable que la distribution pour la plante # 2, et peut-être pas si improbable. Mais évidemment, je veux savoir avec certitude, et à travers toutes les usines.

En fin de compte, je cherche à écrire une déclaration comme «La distribution des graines pollinisées dans les cosses de graines correspond (ou ne correspond pas) à l'hypothèse que les plantes ne sont pas simplement partiellement auto-compatibles, mais nécessitent la visite d'un pollinisateur pour effectuer la formation de graines. (résultats du test statistique). " C'est vraiment juste une partie de ma section prospective, où je parle des expériences à mener ensuite, donc je ne veux pas désespérément que ce soit une chose ou l'autre, mais je veux savoir par moi-même, si possible. Si je ne peux pas faire ce que j'essaie de faire avec ces données, j'aimerais le savoir aussi!

J'ai posé une question assez large au début, car je suis curieux de savoir s'il existe ou non de bons tests pour montrer si les données doivent entrer dans un modèle gonflé à zéro en premier lieu. Tous les exemples que j'ai vus semblent dire - «regardez, il y a beaucoup de zéros ici, et il y a une explication raisonnable à cela, alors utilisons un modèle gonflé à zéro». C'est ce que je fais en ce moment sur ce forum, mais j'ai eu une expérience sur mon dernier chapitre où j'ai utilisé un glm de Poisson pour les données de comptage et un de mes superviseurs a dit: «Non, les glms sont trop complexes et inutiles, ces données devraient entrer dans une table de contingence ", puis m'a envoyé un vidage de données de la table de contingence massive générée par leur package de statistiques coûteux qui a donné les mêmes valeurs de p pour tous mes facteurs + interactions à trois chiffres significatifs !! Donc, j'essaie de garder les statistiques claires et simples, et assurez-vous de bien les comprendre pour défendre solidement mes choix, ce que je ne pense pas pouvoir faire pour un modèle gonflé à zéro en ce moment. J'ai utilisé à la fois un quasi-binôme (pour les plantes entières pour se débarrasser de la pesudoreplicaiton) et un modèle mixte pour les données ci-dessus pour comparer les traitements et répondre à mes principales questions expérimentales, soit semble faire le même travail, mais je vais aussi jouer avec ZINB ce soir, pour voir à quel point cela fonctionne. Je pense que si je peux démontrer explicitement que ces données sont fortement regroupées (ou gonflées à zéro) au début, puis fournir une bonne raison biologique pour que cela se produise, je serais beaucoup mieux configuré pour extraire ensuite un ZINB, que pour il suffit de comparer un à un modèle quasibinomial / mixte et de discuter car il donne de meilleurs résultats, c'est ce que je devrais utiliser. ce que je ne pense pas pouvoir faire pour un modèle gonflé zéro en ce moment. J'ai utilisé à la fois un quasi-binôme (pour les plantes entières pour se débarrasser de la pesudoreplicaiton) et un modèle mixte pour les données ci-dessus pour comparer les traitements et répondre à mes principales questions expérimentales, soit semble faire le même travail, mais je vais aussi jouer avec ZINB ce soir, pour voir à quel point cela fonctionne. Je pense que si je peux démontrer explicitement que ces données sont fortement regroupées (ou gonflées à zéro) au début, puis fournir une bonne raison biologique pour que cela se produise, je serais beaucoup mieux configuré pour extraire ensuite un ZINB, que pour il suffit de comparer un à un modèle quasibinomial / mixte et de discuter car il donne de meilleurs résultats, c'est ce que je devrais utiliser. ce que je ne pense pas pouvoir faire pour un modèle gonflé zéro en ce moment. J'ai utilisé à la fois un quasi-binôme (pour les plantes entières pour se débarrasser de la pesudoreplicaiton) et un modèle mixte pour les données ci-dessus pour comparer les traitements et répondre à mes principales questions expérimentales, soit semble faire le même travail, mais je vais aussi jouer avec ZINB ce soir, pour voir à quel point cela fonctionne. Je pense que si je peux démontrer explicitement que ces données sont fortement regroupées (ou gonflées à zéro) au début, puis fournir une bonne raison biologique pour que cela se produise, je serais beaucoup mieux configuré pour extraire ensuite un ZINB, que pour il suffit de comparer un à un modèle quasibinomial / mixte et de discuter car il donne de meilleurs résultats, c'est ce que je devrais utiliser. J'ai utilisé à la fois un quasi-binôme (pour les plantes entières pour se débarrasser de la pesudoreplicaiton) et un modèle mixte pour les données ci-dessus pour comparer les traitements et répondre à mes principales questions expérimentales, soit semble faire le même travail, mais je vais aussi jouer avec ZINB ce soir, pour voir à quel point cela fonctionne. Je pense que si je peux démontrer explicitement que ces données sont fortement regroupées (ou gonflées à zéro) au début, puis fournir une bonne raison biologique pour que cela se produise, je serais beaucoup mieux configuré pour extraire ensuite un ZINB, que pour il suffit de comparer un à un modèle quasibinomial / mixte et de discuter car il donne de meilleurs résultats, c'est ce que je devrais utiliser. J'ai utilisé à la fois un quasi-binôme (pour les plantes entières pour se débarrasser de la pesudoreplicaiton) et un modèle mixte pour les données ci-dessus pour comparer les traitements et répondre à mes principales questions expérimentales, soit semble faire le même travail, mais je vais aussi jouer avec ZINB ce soir, pour voir à quel point cela fonctionne. Je pense que si je peux démontrer explicitement que ces données sont fortement regroupées (ou gonflées à zéro) au début, puis fournir une bonne raison biologique pour que cela se produise, je serais beaucoup mieux configuré pour extraire ensuite un ZINB, que pour il suffit de comparer un à un modèle quasibinomial / mixte et de discuter car il donne de meilleurs résultats, c'est ce que je devrais utiliser.

Mais je ne veux pas trop distraire de ma question principale, comment puis-je déterminer si mes données sont vraiment plus gonflées que prévu à partir d'une distribution aléatoire? Dans mon cas, la réponse à cela est ce qui m'intéresse vraiment, l'avantage possible pour la justification du modèle étant un bonus.

Merci encore pour tout votre temps et votre aide!

À la vôtre, BWGIA

BWGIA
la source
pourquoi ne voulez-vous pas adapter le modèle binomial gonflé zéro?
atiretoo - réintègre monica
l'hypothèse du «selfing partiel» est-elle exclusive à l'hypothèse du «pollinisateur»? Si c'est le cas, alors votre 2e modèle serait simplement un modèle binomial avec une probabilité p et une taille = 4.
atiretoo - réintègre monica le

Réponses:

5

Cela me semble être un modèle mixte relativement simple (non linéaire). Vous avez des gousses de graines imbriquées dans des grappes imbriquées dans des plantes, et vous pouvez adapter un modèle binomial avec des effets aléatoires à chaque étape:

    library(lme4)
    binre <- lmer( pollinated ~ 1 + (1|plant) + (1|cluster), data = my.data, family = binomial)

ou avec des covariables si vous en avez. Si les fleurs s'auto-pollinisent, vous pouvez voir des effets bénins en raison de la variabilité naturelle de la viabilité des plantes par elles-mêmes. Cependant, si la plus grande partie de la variabilité de la réponse est due, par exemple, à la variabilité des grappes, vous auriez une preuve plus forte de pollinisation par des insectes qui pourraient ne visiter que des grappes sélectionnées sur une plante. Idéalement, vous voudriez une distribution non paramétrique des effets aléatoires plutôt que gaussienne: une masse ponctuelle à zéro, pour aucune visite d'insectes, et une masse ponctuelle à une valeur positive - c'est essentiellement le modèle de mélange auquel Michael Chernick a pensé. Vous pouvez adapter cela avec le package GLLAMM Stata, je serais surpris si cela n'était pas possible dans R.

Probablement pour une expérience propre, vous voudriez avoir les plantes à l'intérieur, ou au moins dans un endroit sans accès d'insectes, et voir combien de graines seraient pollinisées. Cela répondrait probablement à toutes vos questions d'une manière méthodologiquement plus rigoureuse.

StasK
la source
Je vais essayer ceci, je pense que cela aidera à répondre à mes propres questions, mais je ne sais pas trop comment cela convaincra les autres. Vous êtes sur place avec la deuxième partie, j'essaie de penser à la façon dont ces données informent une future expérience plus dirigée.
BWGIA
1

Il me semble qu'il s'agit d'une distribution de mélange pour chaque insecte individuel. Avec une probabilité p, l'insecte atterrit avec probabilité 1-p il atterrit et distribue 0 à 4 graines. Mais si vous ne savez pas si l'insecte atterrit sur la plante, vous ne pouvez pas distinguer les deux façons d'obtenir 0. Vous pouvez donc laisser p la probabilité de 0, puis vous avez la distribution multinomiale (p1, p2, p3, p4) où pi est la probabilité de i graines étant donné que l'insecte pollinise soumis à la contrainte p1 + p2 + p3 + p4 = 1. Le modèle a cinq inconnues p, p1, p2, p3, p4 avec la contrainte 0 = 0 pour chaque i. Avec suffisamment de données, vous devriez être en mesure d'estimer ces paramètres, peut-être en utilisant une approche de probabilité maximale restreinte.

Michael R. Chernick
la source
Je suis d'accord, mais la question n'est pas d'adapter ce modèle, mais de générer des distributions prédites sous deux hypothèses biologiques différentes. Peut-être que la réponse est d'adapter un ZIB et "un autre modèle" qui correspond à l'hypothèse de selfing, et de les comparer.
atiretoo - réintègre monica le
@atiretoo le modèle ne vous fournit-il pas une distribution estimée du nombre de graines pollinisées que vous pourriez comparer à votre distribution hypothétique?
Michael R. Chernick
D'accord - si vous avez les bons modèles pour les 2 hypothèses.
atiretoo - réintègre monica le
1

Ceci est une réponse à la dernière partie de votre question, comment générer rapidement les données que vous souhaitez pour l'hypothèse du pollinisateur:

n = 16
max = 4
p1 = 0.1
p2 = 0.9
Y1 = rbinom(10000*n,1,p1)
Y2 = matrix(Y1*rbinom(10000*n,4,p2),ncol=16)

Vous pouvez également utiliser rzibinom()dans le package VGAM. Bien que je ne sois pas sûr de ce que vous voulez en faire. Vous avez 2 paramètres libres, p1 et p2, qui doivent être estimés. Pourquoi ne pas utiliser un modèle binomial gonflé zéro pour les estimer à partir des données?

Vous devriez regarder le paquet VGAM, qui convient entre autres aux modèles ZIB. En fait, vous pouvez obtenir la distribution attendue d'un ZIB à partir de la fonction VGAM dzibinom(), que vous pouvez utiliser pour comparer votre distribution observée avec si vous connaissez les paramètres de visite et de pollinisation. Encore une fois, vous devriez vraiment adapter le modèle ZIB.

Si votre hypothèse d'autofécondation partielle est exclusive à la pollinisation par les insectes, alors la distribution attendue est simplement binomiale, et vous pouvez estimer les paramètres avec un glm de la famille binomiale ou peut-être un glmm avec l'identifiant de la plante comme effet aléatoire. Cependant, s'ils peuvent s'auto partiel ET recevoir la pollinisation par les insectes, alors vous avez de nouveau besoin d'un mélange de deux distributions binomiales. Dans ce cas, j'enquêterais en utilisant OpenBUGS ou JAGS pour adapter le modèle à l'aide de MCMC.

Une fois que vous avez les deux modèles adaptés à vos données, vous comparez ensuite les modèles pour voir celui qui correspond le mieux, en utilisant AIC ou BIC ou une autre mesure de votre choix.

atiretoo - réintégrer monica
la source
Merci pour cet atiretoo, mais l'exécution de ce code semble générer un nombre aléatoire de graines ainsi qu'une distribution aléatoire. Je pensais que je voulais que le nubmer de graines soit fixé (disons 19 graines, voir ci-dessous) et ensuite voir la probabilité d'une distribution donnée pour ce nubmer exact
BWGIA
Opps, cliquez sur le message trop tôt et je voulais dire "voir ci-dessus" car j'ai ajouté quelques informations à ma question. Je suis intrigué par votre commentaire sur l'utilisation de l'AIC pour comparer des modèles, puis-je le faire à travers des modèles (avec la même variable de réponse) avec des distributions différentes? Je pensais que la comparaison AIC n'était valide que lorsque vous ajoutez / supprimez des termes à un modèle mais avec la même famille de distribution spécifiée?
BWGIA
Non, c'est le principal avantage de l'AIC sur, par exemple, la sélection en amont. Tant que les données sont les mêmes, vous pouvez comparer l'AIC entre différents modèles même s'ils ne sont pas imbriqués. Vous devez faire attention au fait que le logiciel calcule les probabilités sans omettre les constantes, mais au sein d'une seule fonction, vous pouvez comparer facilement les modèles non imbriqués.
atiretoo - réintègre monica le