Comment ajuster une distribution discrète pour compter des données?


17

J'ai l'histogramme suivant des données de comptage. Et je voudrais y adapter une distribution discrète. Je ne sais pas comment je dois procéder.entrez la description de l'image ici

Dois-je d'abord superposer une distribution discrète, disons distribution binomiale négative, sur l'histogramme afin d'obtenir les paramètres de la distribution discrète, puis d'exécuter un test de Kolmogorov-Smirnov pour vérifier les valeurs de p?

Je ne sais pas si cette méthode est correcte ou non.

Existe-t-il une méthode générale pour résoudre un problème comme celui-ci?

Il s'agit d'un tableau de fréquence des données de comptage. Dans mon problème, je me concentre uniquement sur les nombres non nuls.

  Counts:     1    2    3    4    5    6    7    9   10 
 Frequency: 3875 2454  921  192   37   11    1    1    2 

MISE À JOUR: Je voudrais demander: j'ai utilisé la fonction fitdistr dans R pour obtenir les paramètres d'ajustement des données.

fitdistr(abc[abc != 0], "Poisson")
     lambda  
  1.68147852 
 (0.01497921)

Je trace ensuite la fonction de masse de probabilité de la distribution de Poisson en haut de l'histogramme. entrez la description de l'image ici

Cependant, il semble que la distribution de Poisson ne parvienne pas à modéliser les données de comptage. Y a-t'il quelque chose que je puisse faire?


3
Une méthode générale consiste à utiliser le maximum de vraisemblance pour ajuster une distribution candidate. Ce que vous voulez dire en superposant une distribution pour obtenir les paramètres n'est pas clair, mais si vous voulez deviner les valeurs des paramètres jusqu'à ce que vous obteniez un bon ajustement, c'est une méthode moche. Kolmogorov-Smirnov n'est pas utile ici. Vous avez besoin d'un logiciel décent qui vous donne des résultats déductifs, vous devez donc indiquer le logiciel de votre choix afin que les personnes qui l'utilisent puissent essayer de vous aider. Votre histogramme n'est pas clair, mais s'il y a des lacunes, aucune distribution n'est susceptible de bien s'adapter.
Nick Cox

3
Bien que l'utilisation d'un test KS de cette manière soit une méthode moche (et en tout cas le test KS n'est pas pour des distributions discrètes), il serait possible d'estimer les paramètres en minimisant la statistique KS sur toutes les valeurs de paramètres possibles; mais si vous allez dans ce sens (en optimisant une certaine qualité de l'ajustement), le chi carré minimum serait l'approche la plus typique. Comme Nick Cox le suggère, le ML serait la chose la plus évidente à faire, presque certainement plus efficace, plus facile à éliminer les erreurs standard et plus facilement accepté par les autres. (Il existe d'autres possibilités, comme la méthode des moments, mais le ML est l'essentiel.)
Glen_b -Reinstate Monica

J'utilise R. Lorsque vous dites estimer MLE, y a-t-il des algorithmes que vous recommanderez pour le travail? Et après avoir trouvé le ML, que dois-je faire ensuite?
user1769197

Je commencerais ici ?MASS::fitdistr, car il est déjà dans votre distribution R (voir l'exemple final en bas; voir rnegbin pour plus d'informations sur ce paramétrage du binôme négatif). .... " Et après avoir trouvé le ML, que dois-je faire ensuite? " - à ce stade, vous avez des estimations de paramètres et des erreurs standard. Au-delà de cela, que voulez-vous réaliser? - Je ne peux pas deviner.
Glen_b -Reinstate Monica

Il me vient à l'esprit que vous essayez peut-être de demander «comment puis-je évaluer l'ajustement de mon modèle?». Si tel est le cas, pourriez-vous mettre à jour votre question pour refléter cela?
Glen_b -Reinstate Monica

Réponses:


17

Méthodes d'ajustement des distributions discrètes

Il existe trois méthodes principales * utilisées pour ajuster (estimer les paramètres des) distributions discrètes.

1) Maximum de vraisemblance

Ceci trouve les valeurs des paramètres qui donnent les meilleures chances de fournir votre échantillon (compte tenu des autres hypothèses, comme l'indépendance, les paramètres constants, etc.)

2) Méthode des moments

Cela trouve les valeurs des paramètres qui font que les premiers moments de la population correspondent à vos moments d'échantillonnage. C'est souvent assez facile à faire et, dans de nombreux cas, donne des estimateurs assez raisonnables. Il est également parfois utilisé pour fournir des valeurs de départ aux routines ML.

3) Chi carré minimum

Cela minimise la qualité du khi carré de la statistique d'ajustement sur la distribution discrète, bien que parfois avec des ensembles de données plus importants, les catégories finales puissent être combinées pour plus de commodité. Il fonctionne souvent assez bien, et il a même sans doute certains avantages sur le ML dans des situations particulières, mais généralement il doit être réitéré à la convergence, auquel cas la plupart des gens ont tendance à préférer le ML.

Les deux premières méthodes sont également utilisées pour les distributions continues; le troisième n'est généralement pas utilisé dans ce cas.

Ceux-ci ne constituent en aucun cas une liste exhaustive, et il serait tout à fait possible d'estimer des paramètres en minimisant la statistique KS par exemple - et même (si vous vous ajustez pour la discrétion), d'en obtenir une région de consonance commune , si vous étiez si incliné. Puisque vous travaillez en R, l'estimation ML est assez facile à réaliser pour le binôme négatif. Si votre échantillon était xdedans, c'est aussi simple que library(MASS);fitdistr (x,"negative binomial"):

> library(MASS) 
> x <- rnegbin(100,7,3)
> fitdistr (x,"negative binomial")
     size         mu    
  3.6200839   6.3701156 
 (0.8033929) (0.4192836)

Ce sont les estimations des paramètres et leurs erreurs standard (asymptotiques).

Dans le cas de la distribution de Poisson, MLE et MoM estiment tous deux le paramètre de Poisson à la moyenne de l'échantillon.

Si vous souhaitez voir des exemples, vous devez publier quelques chiffres réels. Notez que votre histogramme a été fait avec des bacs choisis afin que les catégories 0 et 1 soient combinées et nous n'avons pas les décomptes bruts.

Autant que je puisse deviner, vos données sont à peu près les suivantes:

    Count:  0&1   2   3   4   5   6  >6    
Frequency:  311 197  74  15   3   1   0

Mais les grands nombres seront incertains (cela dépend fortement de la précision avec laquelle les décomptes bas sont représentés par les décomptes de pixels de leurs hauteurs de barre) et il pourrait s'agir de plusieurs de ces nombres, comme le double de ces nombres (les décomptes bruts affectent les erreurs standard, il importe donc qu'elles concernent ces valeurs ou deux fois plus grandes)

La combinaison des deux premiers groupes le rend un peu gênant (c'est possible, mais moins simple si vous combinez certaines catégories. Beaucoup d'informations sont dans ces deux premiers groupes, il est donc préférable de ne pas laisser l'histogramme par défaut les regrouper ).


* D'autres méthodes d'ajustement de distributions discrètes sont bien sûr possibles (on peut faire correspondre des quantiles ou minimiser d'autres statistiques d'ajustement par exemple). Celles que je mentionne semblent être les plus courantes.


+1, belle info. Par simple curiosité, pourquoi semblez-vous souvent utiliser 1), au lieu de la numérotation de balisage prise en charge par CV (c'est-à-dire, 1.--qui conduit à l'indentation)?
gung - Rétablir Monica

1
@gung Surtout, je n'y pense pas - je préfère que mes listes ressemblent à la façon dont je les tape; mais quand j'y pense, je trouve que la modification par Markdown des chiffres que je tape correspond à ce qu'ils pensent qu'ils devraient être très ennuyeux (si j'ai tapé "36", je ne voulais vraiment pas dire "1") ... alors quand il m'est venu à l'esprit d'utiliser "1". plutôt que "1)", je finis souvent par taper "1 \". explicitement pour l' empêcher de le reconnaître et de faire des choses que je n'avais pas l'intention. Je me suis tellement familiarisé avec ce comportement après 5 ans de reddit que je n'y pense même pas - je finirais par interférer automatiquement avec lui par la force de l'habitude.
Glen_b -Reinstate Monica

1
@gung Si le retrait était beaucoup plus petit, je serais probablement enclin à accepter le risque de renumérotation et à l'utiliser. En l'état, je trouve généralement cela distrayant quand je le vois. Mais dans ce cas particulier, je cherchais à les faire ressembler davantage à des sous-titres, donc je l'aurais probablement évité même si je n'étais pas rebuté par le comportement. (D'un autre côté, à l'occasion où d'autres personnes ont décidé de modifier mes listes pour qu'elles fassent le retrait, je les laisse généralement se faire plaisir. S'ils veulent que cela ressemble à une certaine manière, ils peuvent ne modifie pas le sens.)
Glen_b -Reinstate Monica

Je vais essayer de me retenir ;-).
gung - Rétablir Monica

2

Dans un montage, vous avez donné quelques données et ajouté une nouvelle question:

"Il s'agit d'un tableau de fréquence des données de comptage. Dans mon problème, je me concentre uniquement sur les comptages non nuls.

   Counts:     1    2    3    4    5    6    7    9   10 
Frequency:  3875 2454  921  192   37   11    1    1    2 

Quelqu'un peut-il me donner un exemple de la façon dont vous effectueriez le test de qualité d'ajustement du chi carré ici? "

Cela conduit à d'autres commentaires:

  1. Avoir des zéros mais vouloir les ignorer peut avoir du sens, mais en général, les gens de la statistique et du sujet voudraient voir une bonne raison.

  2. Si vous choisissez d'ignorer les zéros, vous vous placez dans un territoire difficile, car vous ne pouvez pas simplement lancer des routines pour, par exemple, Poisson ou un binôme négatif si vous omettez les zéros. Eh bien, vous pouvez, mais les réponses seraient fausses. Vous avez besoin de fonctions ou de commandes spéciales pour des distributions telles que le Poisson tronqué zéro ou le binôme négatif tronqué zéro. Ce sont des choses difficiles et nécessitent une lecture dédiée pour être clair sur ce que vous faites.

  3. Demander comment faire un test du chi carré me suggère que vous n'avez pas vraiment compris ce que j'ai dit très brièvement et @Glen_b l'a dit beaucoup plus en détail (et, à mon avis, très clairement). Diviser cela en deux:

    • Il ne peut y avoir de test du chi carré sans fréquences attendues et il ne peut y avoir de fréquences attendues sans estimation des paramètres. Il se peut que vous soyez plus familier avec les routines de test khi-deux dans lesquelles l'indépendance des lignes et des colonnes dans une table bidirectionnelle est testée. Bien qu'il s'agisse du test du chi carré le plus rencontré dans les cours d'introduction, il est en fait très inhabituel parmi les tests du chi carré en général en ce sens que le logiciel habituel effectue en fait l'estimation des paramètres pour vous et obtient ainsi les fréquences attendues. Au-delà de cela, dans les problèmes les plus complexes, comme le vôtre, vous devez d'abord obtenir les estimations des paramètres.

    • Un test du chi carré n'est pas faux, mais si vous estimez les paramètres par maximum de probabilité, il n'est pas pertinent car la routine d'ajustement vous donne des estimations et des erreurs standard et permet des tests dans leur sillage. @Glen_b a déjà donné un exemple dans sa réponse.

Un problème secondaire est qu'il serait plus clair de modifier vos histogrammes pour respecter la discrétion de la variable et afficher les probabilités, pas les densités. Les lacunes apparentes ne sont que des artefacts du choix de bac par défaut ne respectant pas le caractère discret de la variable.

MISE À JOUR: La question supplémentaire sur un test du chi carré a été supprimée. Pour le moment, je laisse le numéro 3 au-dessus, au cas où quelqu'un d'autre suivrait le même chemin en voulant un test du khi carré.


Je dois ignorer les zéros, car j'essaie de modéliser les comptes actifs. Le nombre = 0 est appelé nombre inactif.
user1769197

C'est un choix de fond. Notez que dans de nombreux domaines, il existe ce que l'on appelle des modèles en deux parties, dans lesquels vous modélisez (selon vos termes) actif par rapport à inactif, puis dans quelle mesure.
Nick Cox

J'ai essayé de modifier les histogrammes en faisant "plot (table (abc), type =" h ")". Mais, je ne sais pas comment puis-je faire pour montrer les probabilités
user1769197

Je n'utilise pas R, mais vous pouvez obtenir des conseils à ce sujet. Vous devrez peut-être demander séparément.
Nick Cox
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.