J'ai un tas d'ensembles de données (entre 50 et 500 points, chacun d'eux peut prendre une valeur intégrale positive) et doit déterminer quelle distribution les décrit le mieux. Je l'ai fait manuellement pour plusieurs d'entre eux, mais j'ai besoin d'automatiser cela à l'avenir. P>
Certains des ensembles sont complètement modaux (chaque donnée a la valeur de 15), certaines sont fortement modales ou bimodales, certaines sont des courbes de cloche (souvent biaisées et de degrés de kertose / pointe différents), certains sont à peu près plat, Et il y a un certain nombre d'autres distributions possibles (possion, droit d'énergie, etc.). J'ai besoin d'un moyen de déterminer quelle distribution décrit le mieux les données et (idéalement) me fournit également une métrique de fitness afin que je sache à quel point je suis confiant dans l'analyse. P>
Les bibliothèques open-source existantes seraient idéales, suivies d'algorithmes bien documentés que je peux me mettre en œuvre. P>
7 Réponses :
À la recherche d'une distribution qui convient à ce qui est peu susceptible de vous donner de bons résultats en l'absence de connaissances em> a priori em>. Vous pouvez trouver une distribution que coïncidemment em> est un bon ajustement, mais il est peu probable que la distribution sous-jacente. P>
Avez-vous des métadonnées disponibles qui indiqueraient à quoi les données signifie em>? Par exemple, "Ceci est des données ouvertes échantillonnées d'une population naturelle, c'est donc une sorte de distribution normale", contre "Ces données sont intrinsèquement bornées à 0 et discrètes, alors vérifiez le meilleur poisson". P >
Je ne connais aucun solveur de distribution pour Java au sommet de ma tête, et je n'en savais aucun qui devinera quelle distribution à utiliser. Vous pouvez examiner certaines propriétés statistiques (Skew / etc.) et faire des suppositions ici - mais vous êtes plus susceptible de vous retrouver avec un bon ajustement accidentel qui ne représente pas de manière adéquate la distribution sous-jacente. Les données réelles sont bruyantes et il y a juste trop de degrés de liberté si vous ne savez même pas quelle répartition c'est. P>
J'ai une bonne idée pour chacun de ces ensembles de données de ce que la distribution "devrait" être, ainsi que quelques distributions alternatives qu'il pourrait être. Par exemple, mon cas d'utilisation le plus courant s'attendra à ce qu'il soit normal, mais si ce n'est pas le cas, il est très probable modal ou plat.
Pour ceux qui sont assez faciles. Un STDEV vous dira s'il est modal ou plat. Normaliser les données (à une amplitude unitaire et à la moyenne zéro) et mesurez sa condition physique à une distribution standard. Il devient plus compliqué pour les distributions avec plus de 2 variables (par exemple, Gaussien, qui ajoute de la largeur).
Qu'est-ce que vous cherchez vient sous l'en-tête général de "bonté de l'ajustement". Vous pouvez rechercher sur "bonté du test d'ajustement". P>
Donald Knuth décrit un couple de bonté populaire des tests d'ajustement dans des algorithmes séminumériques: le test chi-carré et le test Kolmogorov-Smirnov. Mais vous devez d'abord avoir une idée de la distribution que vous souhaitez tester. Par exemple, si vous avez des données de courbe de Bell, vous pouvez essayer des distributions normales ou Cauchy. P>
Cela peut être au-delà de ce que vous voulez faire, mais il semble que l'approche la plus complète (et permet d'accéder à la richesse des connaissances statistiques disponibles à l'intérieur R): P>
J'ai entendu parler d'un colis appelé EUREQA qui pourrait remplir la facture gentiment. Je l'ai seulement téléchargé; Je ne l'ai pas encore essayé moi-même. P>
Eureqa est maintenant un produit propriétaire. Si vous êtes toujours intéressé, vous pouvez trouver plus d'informations ici: NUTONIAN.COM/PRODUCTS/EUREQA a>
Si tout ce que vous avez besoin vraiment de la distribution est de modéliser les données que vous avez échantillonnées, vous pouvez effectuer votre propre distribution basée sur les données que vous avez: p>
1. Créer un histogramme de votre échantillon: B> Une méthode de sélection de la taille de la corbeille est Ici . Il existe d'autres méthodes de sélection de la taille des bacs, que vous préférez préférer. P>
2. Dériver l'échantillon CDF : B> Pensez à l'histogramme comme pdf, et simplement calculer l'intégrale. Il est probablement préférable d'élaborer la hauteur des bacs afin que le CDF ait les bonnes caractéristiques ... à savoir que la valeur du CDF AT + Infinity est de 1,0. P>
Pour utiliser la distribution à des fins de modélisation: P>
3. Dessinez X de votre distribution: B> Faire un dessin Y de U (0,1). Utilisez une recherche inversée sur votre CDF de la valeur Y pour déterminer le X tel que CDF (x) = Y. Étant donné que le CDF est inversible, X est unique. P>
Vous pouvez procéder à une approche de trois étapes, à l'aide du bibliothèque SSJ : P >