Erzwingen einer Reihe von Zahlen zu einer Gaußschen Glockenkurve

9

( Dies bezieht sich auf meine Programmierfrage zum Stapelüberlauf : Glockenkurven-Gauß-Algorithmus (Python und / oder C #) .)

Auf Answers.com habe ich dieses einfache Beispiel gefunden:

  1. Finden Sie das arithmetische Mittel (Durchschnitt) => Summe aller Werte in der Menge, geteilt durch die Anzahl der Elemente in der Menge
  2. Finden Sie die Summe der Quadrate aller Werte in der Menge
  3. Teilen Sie die Ausgabe von (2) über die Anzahl der Elemente in der Menge
  4. Subtrahieren Sie das Quadrat des Mittelwerts (1) von der Ausgabe von (3).
  5. Nimm die Quadratwurzel des Ergebnisses von (4)

Beispiel: Setze 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

(Dies stammt aus einem Beitrag auf wiki.answers.com .)

Wie kann ich nun die obigen Daten an eine Glockenkurve (z. B. einen Kredit-Score) zwischen 200 und 800 anpassen? Offensichtlich wäre die Zahl 5 im obigen Satz 500. Aber wie lautet dann die Formel, um zu bestimmen, was 3 sollte auf der gleichen Skala sein. Obwohl der ursprüngliche Satz Set A = {1,3,4,5,7} keine Glockenkurve ist, möchte ich ihn in eine Glockenkurve zwingen.

Stellen Sie sich vor, dies sind Punktzahlen von 5 Personen. Nächsten Monat könnten sich die Punktzahlen wie folgt ändern: Set A2={1,2,4,5,9}(ein Mann verliert einen Punkt und der Top-Mann gewinnt zwei weitere Punkte - die Reichen werden reicher und die Armen werden ärmer). Dann kommt vielleicht ein neuer Typ ins Set: Set A3={1,2,4,5,8,9}.

NealWalters
quelle
2
Wenn sich Ihr Set von Zeit zu Zeit ändert, ist es unmöglich, es an dieselbe Glockenkurve anzupassen. Angenommen, Sie haben die Menge , also sollte 4 800 sein, aber wenn eine neue Beobachtung 5 eintrifft, sollte sie 800 werden.A={1,2,3,4}
mpiktas
1
Willkommen bei CrossValidated, NealWalters. Möglicherweise stellen Sie fest, dass eine häufige Antwort auf die Frage eines Statistikers "Wie mache ich das?" "Warum möchten Sie das tun?" Lautet.
Onestop
@onestop - siehe meinen Link zum vorherigen Beitrag. In der Schule erinnere ich mich an Lehrer, die "auf der Kurve" benoteten. Egal, welche Punktzahl Sie bei einem Test erhalten haben, nur ein bestimmter Prozentsatz der Personen würde jede Note erhalten. Ich habe keine Ahnung, wie Kredit-Scores funktionieren, aber das ist sehr ähnlich zu dem, was ich simuliere. Ich gebe Leuten zum Beispiel Punkte, wenn sie einen Kredit zurückzahlen. Aber einige Leute werden Dutzende von Krediten zurückzahlen. Ich möchte meine Wild Points zu einer Reihe normalisierter Punkte verdichten.
NealWalters
Wenn ich Ihren letzten Kommentar lese, frage ich mich, welcher Ansatz am besten ist: Geben Sie z. B. 1 Punkt für jedes ausgezahlte Darlehen, andere Punkte für andere Dinge, und versuchen Sie dann, die enorme Punktzahl am Ende zu zähmen, oder machen Sie mit jeder Komponente etwas Sinnvolleres macht das Endergebnis aus? Wenn Sie beispielsweise Punkte für ausgezahlte Kredite vergeben, können Sie Ihre LPO-Punkte (Loans Paid Off) als Protokoll (1 + NumberOfLoansPaidOff) berechnen. Jemand mit null ausgezahlten Krediten erhält einen LPO von 0, jemand mit 3 ausgezahlten Krediten erhält einen LPO von 1,1, während jemand mit 100 ausgezahlten Krediten einen LPO von 4,6 erhält. Cap LPO um 5.
Wayne

Antworten:

13

Ein skalierter Bereich wie 200 bis 800 (z. B. für SATs ) ist nur eine Änderung der Maßeinheiten . (Es funktioniert genau so, als würde man die Temperaturen in Fahrenheit in Celsius ändern.)

Der Mittelwert von 500 soll dem Durchschnitt der Daten entsprechen. Der Bereich soll etwa 99,7% der Daten entsprechen, wenn die Daten einer Normalverteilung folgen ("Glockenkurve"). Es wird garantiert , dass 8/9 der Daten enthalten sind ( Chebyshevs Ungleichung ).

In diesem Fall berechnet die Formel 1-5 die Standardabweichung der Daten. Dies ist einfach eine neue Maßeinheit für die Originaldaten. Es muss 100 Einheiten in der neuen Skala entsprechen. Um einen ursprünglichen Wert in den skalierten Wert umzuwandeln,

  • Subtrahieren Sie den Durchschnitt.

  • Teilen Sie durch die Standardabweichung.

  • Mit 100 multiplizieren.

  • 500 hinzufügen.

Wenn das Ergebnis außerhalb des Bereichs , können Sie es entweder unverändert verwenden oder durch Aufrunden auf 200 auf 800 auf den Bereich "klemmen".[200,800]

In diesem Beispiel der Durchschnitt unter Verwendung von Daten und die SD . Daher wird bei Umskalierung, wird . Der gesamte neu berechnete Datensatz, der auf ähnliche Weise berechnet wird, ist .{1,3,4,5,7}421(14)/2100+500=350{350,450,500,550,650}

Wenn die Originaldaten eindeutig nicht normal verteilt werden, benötigen Sie einen anderen Ansatz . Sie berechnen keinen Durchschnitt oder keine SD mehr. Ordnen Sie stattdessen alle Punkte in der Reihenfolge vom 1. (kleinsten) bis zum ten (größten). Das sind ihre Reihen . Wandle jeden Rang in seinen Prozentsatz . (Im Beispiel sind und die Daten sind bereits in der Rangfolge . Daher sind ihre Prozentsätze , oft gleichwertig geschrieben als usw.) Entspricht einem beliebigen Prozentsatz ( notwendigerweise zwischen und ) ist ani (i1/2)/nn=5i=1,2,3,4,51/10,3/10,5/10,7/10,9/1010%,30%01normales Quantil . Es wird mit der normalen Quantilfunktion berechnet , die eng mit der Fehlerfunktion zusammenhängt . (Einfache numerische Näherungen lassen sich leicht codieren.) Die Werte, die normalerweise zwischen -3 und 3 liegen, müssen (wie zuvor) auf den Bereich neu skaliert werden . Dazu multiplizieren Sie zuerst das normale Quantil mit 100 und addieren dann 500.[200,800]

Die normale Quantilfunktion ist auf vielen Computerplattformen verfügbar, einschließlich Tabellenkalkulationen ( z. B. Excel- Normen ). Beispielsweise die normalen Quantile (oder "normal scores") für die Daten sind .{1,3,4,5,7}{372,448,500,552,628}

Dieser Ansatz mit " normaler Punktzahl " liefert immer Punkte zwischen 200 und 800, wenn Sie 370 oder weniger Werte haben. Wenn Sie 1111 oder weniger Werte haben, haben alle außer den höchsten und niedrigsten Werten zwischen 200 und 800.

whuber
quelle
+1, ich habe meine Antwort gelöscht, da deine viel besser war und meine obsolet gemacht hat :)
mpiktas
Woher bekommst du die 5 in den 1-5? 4 ist der Durchschnitt. Sollte es 1-4 sein? Ich teste heute mit Python, nochmals vielen Dank.
NealWalters
@NealWalters Sorry, das war ein Fingerabdruck. Ich habe es jetzt behoben, so dass es (1-4) / 2 * 100 + 500 lautet.
whuber
4

Sie können diesen Ansatz ausprobieren - normalisieren Sie Ihren Datensatz so, dass er zwischen den Werten -1 und +1 liegt: Dadurch wird jeder Wert in Ihrem Datensatz in einen Wert zwischen -1 und +1 konvertiert, wobei die tatsächlichen Maximal- und Minimalwerte auf +1 bzw. -1 gesetzt werden, und diese +1- und -1-Werte werden dann auf +0,9999 zurückgesetzt und -0,9999 (erforderlich für folgende Berechnungen.)

(individual_valuemin_of_all_valuesmax_of_all_valuesmin_of-all_values0.5)2.

Wenden Sie dann die Fisher-Transformation auf jeden der oben genannten normalisierten Werte an, um zu "erzwingen", dass sie ungefähr einer Normalverteilung entspricht, und "normalisieren" Sie dann jeden dieser Fisher-Transformationswerte auf einen Wert zwischen 200 und 800, also: Der maximale Fisher-Transformationswert wird auf genau 800 festgelegt, der minimale Fisher-Transformationswert wird festgelegt bis genau 200, und alle anderen Werte liegen gemäß einer ungefähren Normalverteilung zwischen diesen beiden Extremen.

Fish_valuemin_all_Fish_valuesmax_all_Fish_valuesmin_all_Fish_values600+200

Unter Bezugnahme auf Ihre ursprüngliche Frage zu SO und das Problem der Skalierbarkeit besteht der Vorteil dieses Ansatzes darin, dass Sie die obigen Berechnungen auf den neuen Datenpunkt anwenden können, sofern kein neuer Datenpunkt selbst kein neues Maximum oder Minimum für den gesamten Datensatz darstellt um eine Punktzahl zwischen 200 und 800 zu erhalten, ohne die vorhandenen Punktzahlen des Originaldatensatzes zu beeinflussen. Wenn ein neuer Datenpunkt ein neues Maximum oder Minimum ist, müssen Sie die Punktzahlen für den gesamten Datensatz mit diesem neuen "normalisierenden" Maximal- oder Minimalwert neu berechnen.

babelproofreader
quelle