( 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:
- Finden Sie das arithmetische Mittel (Durchschnitt) => Summe aller Werte in der Menge, geteilt durch die Anzahl der Elemente in der Menge
- Finden Sie die Summe der Quadrate aller Werte in der Menge
- Teilen Sie die Ausgabe von (2) über die Anzahl der Elemente in der Menge
- Subtrahieren Sie das Quadrat des Mittelwerts (1) von der Ausgabe von (3).
- Nimm die Quadratwurzel des Ergebnisses von (4)
Beispiel: Setze A = {1,3,4,5,7}
- (1 + 3 + 4 + 5 + 7) / 5 = 4
- (1 * 1 + 3 * 3 + 4 * 4 + 5 * 5 + 7 * 7) = 1 + 9 + 16 + 25 + 49 = 100
- 100/5 = 20
- 20 - 4 * 4 = 20-16 = 4
- 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}
.
quelle
Antworten:
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} 4 2 1 (1−4)/2∗100+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 an i (i−1/2)/n n=5 i=1,2,3,4,5 1/10,3/10,5/10,7/10,9/10 10%,30% 0 1 normales 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.
quelle
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.)
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.
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.
quelle