Forcer un ensemble de nombres à une courbe en cloche gaussienne


9

( Cela concerne ma question de programmation sur Stack Overflow : Bell Curve Gaussian Algorithm (Python et / ou C #) .)

Sur Answers.com, j'ai trouvé cet exemple simple:

  1. Trouver la moyenne arithmétique (moyenne) => Somme de toutes les valeurs de l'ensemble, divisée par le nombre d'éléments de l'ensemble
  2. Trouver la somme des carrés de toutes les valeurs de l'ensemble
  3. Diviser la sortie de (2) sur le nombre d'éléments dans l'ensemble
  4. Soustrayez le carré de la moyenne (1) de la sortie de (3)
  5. Prenez la racine carrée du résultat de (4)

Exemple: définir A = {1,3,4,5,7}

  1. (1 + 3 + 4 + 5 + 7) / 5 = 4
  2. (1 * 1 + 3 * 3 + 4 * 4 + 5 * 5 + 7 * 7) = 1 + 9 + 16 + 25 + 49 = 100
  3. 100/5 = 20
  4. 20 - 4 * 4 = 20-16 = 4
  5. SQRT (4) = 2

(Cela provient d'un article sur wiki.answers.com .)

Maintenant, étant donné tout cela, comment puis-je adapter les données ci-dessus à une courbe en cloche (comme un pointage de crédit) allant de 200 à 800. Évidemment, le nombre 5 dans l'ensemble ci-dessus serait 500. Mais alors quelle est la formule pour déterminer ce 3 devrait être à la même échelle. Même si l'ensemble d'origine Set A = {1,3,4,5,7} n'est pas une courbe en cloche, je veux le forcer en une courbe en cloche.

Imaginez que ce sont des dizaines de 5 personnes. Le mois prochain, les scores pourraient changer comme suit: Set A2={1,2,4,5,9}(un gars perd un point, et le meilleur joueur gagne deux points de plus - les riches s'enrichissent et les pauvres s'appauvrissent). Alors peut-être qu'un nouveau type entre dans le set: Set A3={1,2,4,5,8,9}.


2
Si votre appareil change dans le temps, il est impossible de l'adapter à la même courbe en cloche. Supposons que vous ayez l'ensemble , donc 4 devrait être 800, mais si une nouvelle observation 5 arrive, alors elle devrait devenir 800.A={1,2,3,4}
mpiktas

1
Bienvenue à CrossValidated, NealWalters. Vous trouverez peut-être qu'une réponse courante à la question d'un statisticien "Comment faire ceci" est "Pourquoi voulez-vous faire cela?"
2010 à 11h37

@onestop - voir mon lien vers la publication précédente. À l'école, je me souviens avoir entendu parler d'enseignants qui se sont classés "sur la courbe". Donc, peu importe le score que vous avez obtenu à un test, seul un certain pourcentage de personnes obtiendrait chaque note. Je n'ai aucune idée du fonctionnement des cotes de crédit, mais c'est très similaire à ce que je simule. Je donne des points aux gens par exemple lorsqu'ils remboursent un prêt. Mais certaines personnes rembourseront des dizaines de prêts. Je veux condenser mes points sauvages en un ensemble de points normalisés.
NealWalters

en lisant votre dernier commentaire, je me demande quelle est la meilleure approche: donner, par exemple, 1 point pour chaque prêt remboursé, d'autres points pour d'autres choses, puis essayez d'apprivoiser l'énorme score à la fin, ou peut-être faire quelque chose de plus significatif avec chaque composante qui compose le score final? Par exemple, si vous donnez des points pour les prêts remboursés, vous pouvez calculer vos points de prêts remboursés (LPO) sous forme de journal (1 + NumberOfLoansPaidOff). Ainsi, quelqu'un avec zéro prêt remboursé obtient une LPO de 0, quelqu'un avec 3 prêts remboursés obtient une LPO de 1,1, tandis que quelqu'un avec 100 prêts remboursés obtient une LPO de 4,6. Cap LPO à 5.
Wayne

Réponses:


13

Une plage mise à l'échelle , comme 200 à 800 (pour les SAT, par exemple ), n'est qu'un changement d'unités de mesure . (Cela fonctionne exactement comme changer les températures en degrés Fahrenheit à celles en degrés Celsius.)

La valeur moyenne de 500 est censée correspondre à la moyenne des données. La plage est censée correspondre à environ 99,7% des données lorsque les données suivent une distribution normale ("courbe de Bell"). Il est garanti d'inclure 8/9 des données ( l'inégalité de Chebyshev ).

Dans ce cas, la formule 1-5 calcule l'écart type des données. Il s'agit simplement d'une nouvelle unité de mesure pour les données d'origine. Il doit correspondre à 100 unités dans la nouvelle échelle. Par conséquent, pour convertir une valeur d'origine en valeur mise à l'échelle,

  • Soustrayez la moyenne.

  • Divisez par l'écart-type.

  • Multipliez par 100.

  • Ajoutez 500.

Si le résultat se situe au-delà de la plage vous pouvez soit l'utiliser tel quel, soit le "fixer" à la plage en arrondissant à 200, jusqu'à 800.[200,800]

{1,3,4,5,7}421(14)/2100+500=350{350,450,500,550,650}

ni (i1/2)/nn=5i=1,2,3,4,51/10,3/10,5/10,7/10,9/1010%,30%01[200,800]

{1,3,4,5,7}{372,448,500,552,628}

Cette approche de « notation normale » donnera toujours des scores entre 200 et 800 lorsque vous avez 370 ou moins de valeurs. Lorsque vous avez 1111 ou moins de valeurs, toutes les valeurs sauf les plus élevées et les plus faibles auront des scores entre 200 et 800.


+1, j'ai supprimé ma réponse, car la vôtre était bien meilleure et a rendu la mienne obsolète :)
mpiktas

Où obtenez-vous le 5 dans le 1-5? 4 est la moyenne. Doit-il être 1-4? Je teste aujourd'hui avec Python, merci encore.
NealWalters

@NealWalters Désolé, c'était un bout de doigt. Je l'ai corrigé maintenant pour qu'il indique (1-4) / 2 * 100 + 500.
whuber

4

(valeur_individuelle-min_of_all_valuesmax_of_all_values-min_of-all_values-0,5)2.

Fish_value-min_all_Fish_valuesmax_all_Fish_values-min_all_Fish_values600+200

En faisant référence à votre question d'origine sur SO et à la question de l'évolutivité, cette approche a l'avantage que, à condition que tout nouveau point de données ne soit pas en soi un nouveau maximum ou minimum pour l'ensemble de données dans son ensemble, vous pouvez appliquer les calculs ci-dessus au nouveau point de données pour obtenir son score entre 200 et 800 sans affecter aucun des scores existants de l'ensemble de données d'origine. Si un nouveau point de données est un nouveau maximum ou minimum, vous devrez recalculer les scores pour l'ensemble des données avec cette nouvelle valeur maximum ou minimum de «normalisation».

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.