Re: random Statistik

Jun 08, 2024 Last reply: 2 years ago 61 Replies

Der Erwartungswert der Summe von n mal Wuerfeln ist 3,5*n. Der Erwartungswert des Absolutbetrags der Abweichung von diesem Wert ist eine Konstante*Wurzel(n).

Das liegt daran dass diesem 3,5*n ein eindimensionaler

formatting link
ist. (man koennte sich einen um 0 symmetrischen Wuerfel denken auf dem statt 1..6 die Werte -2,5 -1,5 -0,5 0,5 1,5 2,5 stehen dann waere der Erwartungswert der Summe unabhaengig von n immer 0 d.h. man wuerde nur die Abweichung sehen)

D.h. je groesser n wird um so groesser wird auch der Erwartungswert der Abweichung. Da du aber durch n dividierst wird die Abweichung von 3.5 mit Wurzel(n)/n = 1/Wurzel(n) kleiner. D.h. um die Abweichung von 3,5 um den Faktor 10 zu verkleinern muss man n um den Faktor 100 vergroessern. Das muesste auch bei deinen Experimenten zu sehen sein.

Die 5 Freiheitsgrade beziehen sich auf den chi-quadrat test und kommen von den

6 Werten die beim Wuerfeln herauskommen. Das wird hier erklaert, ist aber leicht mathematisch belastet:

formatting link
's_chi-squared_test Vielleicht ist ja jemand hier der den Chi-Quadrat Test gut verstanden hat und erklaeren kann...

Es ist immer moeglich dass auch solche Werte zufaellig vorkommen, es ist eben nur sehr unwahrscheinlich. Statistische Tests rechnen solche Wahrscheinlichkeiten aus und wenn eine vorgegebene Unwahrscheinlichkeitsschwelle ueberschritten ist wird die Entscheidung getroffen dass der Test nicht bestanden ist.

Weil die Summe der 6 Zahlen die vorgegebene Gesamtzahl der Experimente ist, gibts nur 5 Freiheitsgrade.

Carla Schneider schrieb:

formatting link
's_chi-squared_test Das Würfelbeispiel ist explizit erwähnt.

|Chi-squared critical value for 5 degrees of freedom at 0.05 significance level is 11.070

| double expected = totalLines / 6.0; | double chi_squared = 0.0; | | for (int i = 0; i < 6; i++) { | double observed = counts[i]; | chi_squared += (observed - expected) * (observed - expected) / expected; | }

Vorstehend befindet sich die Angelegenheit. Die '5 degrees ...' sehen jedoch unabhängig von der nachfolgenden Berechnung aus. Die Berechnung des Schwellwertes 11.07 ist nicht angegeben.

In der random-test-pdf werden diese Chi-Berechnungen behandelt. Jedoch auch hier wird das Zustandekommen von Schwellwerten nicht gezeigt. Ich habe eine pdf von zwei Professoren, die den NIST-Test beschreiben. Damit könnte ich wahrscheinlich weitere Erkenntnisse erwerben.

Berechnungen dieses Typs kenne ich u.a. von Linearer Regression. Negative Werte können wegen sqrt nicht vorkommen.

Mir selbst würde es aber reichen, 500+-3..5% zu beachten. Ich neige dazu, einfach Zahlenfolgen per Skript auszugeben, weil ich daran oft in Sekunden alle Eigenschaften /sehe/.

Ja, beim NIST-Test wird darauf hingewiesen, daß die normierten Ergebniszahlen über 0.9 oder so liegen sollen.

Wikipedia does not have an article with this exact name.

-- Mit freundlichen Grüßen Helmut Schellong snipped-for-privacy@schellong.biz

formatting link
formatting link
formatting link
formatting link
formatting link
formatting link
formatting link
formatting link
formatting link
formatting link
formatting link

Da ist beim Anhaengen des Kapitels Fehler passiert:

formatting link
's_chi-squared_test

Dieser Link funktioniert.

formatting link
finde ich auch den Schwellwert 11.07 :: 0.95 ; 1 - 0.95 = 0.05 in einer Tabelle. Wie der konkret zustande kommt, steht auch dort nicht.

Das Skript aktuell:

------------------------------------------------------------ ARITH_FMT='%.3Lf' set r:025 z:025 n:020 e:020 s:025 m:025 m0:025 sa:925 z=0.0 s=0.0 m=0.0 m0=-1.0 sa=0.0

for n from 1 to 10000000 repeat do let "r= random(6)+1" let "s+=$r.0" "m=s/$n.0" "sa+=m-3.5" echo $n $r $s $m $sa done

------------------------------------------------------------ Variable sa beinhaltet die aufaddierte Abweichung von 3.5.

formatting link
befindet sich die Datei random.out (ca. 370 MB).

Ich habe inzwischen einige Dateien.html gelesen und bin weitergekommen.

Freiheitsgrad df = (Anzahl Variablenstufen Region – 1) x (Anzahl Variablenstufen Kaufmenge – 1) df = (rows – 1) x (columns – 1)

Schwellenwerte Chi_x^2

----------------------------------- Freiheitsgrade Wahrscheinlichkeit . 5% 1%

----------------------------------- . 1 3.84 6.63 . 2 5.99 9.21 . 3 7.81 11.34 . 4 9.48 13.27 . 5 11.07 15.08

-----------------------------------

Dieses Thema scheint nirgendwo im Netz vollständig erklärt zu sein. Man liest beispielsweise eine recht gute und ausführliche Beschreibung und stößt dann plötzlich auf den Wert 7.81 (Tabelle), der aus dem Nichts kommt! Später wird er anhand eines Kurvendiagramms erklärt - jedoch ohne Formeln für die Graphen. Da steht dann "Dies ist schwer zu berechnen." - es wird nur das Konzept gezeigt.

Für mich selbst ist es lohnender, mein extrem simples Skript zu erweitern. In [10.06.2024, 15:13] zeige ich einen Ansatz dafür. Ich kann dann damit 10 Mio. Ereignisse in ungefähr 15 Sekunden generieren und anschließend innerhalb von Minuten heuristisch zu diversen Erkenntnissen gelangen. Daß der random() sehr gut arbeitet, ist bereits jetzt belegt.

Das erklaert es zwar auch nicht vollstaendig, aber man erfaehrt warum das so ist:

formatting link
Das ganze ist reine Mathematik, d.h, die Formeln die dort angegeben sind, sind alle bewiesen, aber der Beweis ist nicht trivial und kann in der mathematischen Fachliteratur nachgelesen werden wobei aber der Entdecker bzw. Erfinder das wohl noch nicht konnte, denn er war Statistiker. Die Mathematiker haben sich erst danach der Sache angenommen - ist meine Vermutung.

Er kommt aus der Tabelle. Das ist oft so in der Statistik.

Die Formeln stehen in dem Wikipedia-Artikel die ich oben zitiert habe, sie helfen aber nicht viel das ganze zu verstehen. Aber du kannst mit deinen Zufallszahlen diese Verteilungsfunktionen approximieren ohne die Formeln zu kennen.

Wenn man die Zahl der Stichproben einer Statistik beliebig erhoehen kann, wird vieles einfacher...

formatting link
: chi_thres.jpg

Das Diagramm erklärt das Zustandekommen des Wertes 7.81, allerdings ohne Formeln. Die Kurve ist offenbar eine Variante der Glockenkurve (Normalverteilung) rechte Hälfte. Ich kann da ja einfach numerische Integration für die Flächen unter der Kurve betreiben. Sobald ich die Kurvenfunktionen habe.

999999 6 3500258.000 3.500 -266.878 1000000 1 3500259.000 3.500 -266.878

167086 166292 166273 166831 166662 166856 420 -374 -393 165 -4 190

Ich zähle nun die Häufigkeit der Zufallszahlen 1..6. Ich gebe diese und die Abweichungen von n/6 am Ende an. Die maximale Abweichung vom erwarteten Wert beträgt 0,25%. Auch dieser Wert ist exzellent.

Die Chi-Berechnungen braucht man da gar nicht bemühen, denn es würde nicht nur die Schwelle 11.07, sondern wohl sogar 2.5 unterschritten, die es in Tabellen gar nicht gibt.

Wir kommen vorwärts. Einige Sachen fallen sofort auf:

Die Datei random.out zeigt eine andere Zahlenfolge als die, die du hier zuerst gezeigt hast. (nicht weiter wichtig)

Die Kommastellen bei der totalen Augenzahl sind überflüssig.

Diese Kommastellen hätte man besser beim Durchschnitt angefügt. SQRT(1E6) ist 1000, so ist es kein Wunder, dass ab einige Millionen die letzte dargestellte Ziffer nicht mehr wackelt. Richtig dargestellt pendelt der Wert immer weiter.

Die totale Abweichung ist, numerisch stabiler berechnet, gleich die Gesamtzahl der Augen minus Zahl Würfe mal 3.5. Das Resultat ist immer eine Zahl mit Raster 0.5. Sie wird immer weiter weg wandern, wenngleich oszillierend. Was deine letzte Spalte angibt weiss ich nicht.

Ich hatte beschrieben, daß der random() automatisch alle 4000 Aufrufe einen Seed macht, und der Seed ist jedes Mal anders.

Ja, da wird Integer aufaddiert.

999989 4 3500097 3.500136 -3148.478199 999990 1 3500098 3.500133 -3148.478066 999991 5 3500103 3.500135 -3148.477931 999992 6 3500109 3.500137 -3148.477794 999993 4 3500113 3.500138 -3148.477656 999994 2 3500115 3.500136 -3148.477520 999995 3 3500118 3.500136 -3148.477384 999996 1 3500119 3.500133 -3148.477251 999997 4 3500123 3.500134 -3148.477117 999998 3 3500126 3.500133 -3148.476984 999999 2 3500128 3.500132 -3148.476852

Ich habe die Nachkommastellen ab der vierten Stelle als irrelevant betrachtet. Das Ausgabeformat als erste Anweisung im Skript wirkt global. Die weiteren Nachkommastellen sehen wirklich irrelevant aus.

3.50000000000000000 wird man eh nie sehen.

Die letzte Spalte zeigt die totale Abweichung. Das ist im Skript erkennbar, das ich postete (Variable sa).

Das Skript ist noch längst nicht fertig. In der Regel mache ich Feinarbeit erst, wenn es im Grunde fertig ist.

formatting link
hat neuen Inhalt.

Ganz offenbar nicht, denn die Kurve faengt am Punkt x=0 y=0 an auch wenn der Text das verdeckt. Die halbe Gausskurve haette bei x=0 ihr Maximum. Es koennte die Dichtefunktion einer Chi-Quadrat Verteilung sein, aber eher nicht der fuer 5 Freiheitsgrade. Denn da steht "Nur 5% der Verteilung unter der Kurve liegt rechts von 7.815 Mit dem online rechner:

formatting link
man leicht verfizieren dass das die Verteilung fuer 3 Freiheitsgrade ist, denn da kommt genau dieser Wert heraus. (Probability 0.95 angeben)

Steht in dem Wikipedia-Artikel, da steht aber auch die Funktion fuer das Integral drin, naemlich die Verteilungsfunktion.

Ich habe irgendwo gelesen, daß sie von der Normalverteilung stammt. Oben schrieb ich "rechte Hälfte", und die beginnt mit 0.

formatting link
: |Sie ist eine der Verteilungen, die aus der Normalverteilung abgeleitet werden kann: | |Dichtefunktion |Die Summe quadrierter Größen kann keine negativen Werte annehmen. |Deshalb hat die Dichte für x<0 den Wert null.

Ja, in der Tabelle, die ich postete, steht 7.81 in der Zeile für Freiheitsgrad 3.

formatting link
ist die türkis-Kurve k=3 diejenige in chi_thres.jpg.

chi_thres.jpg zeigt offenbar die Dichtefunktion.

formatting link
der Verteilungsfunktion unten kann bei 7.81 nach oben und nach links zu etwa 0.95 gepeilt werden. Die Leute von chi_thres.jpg haben 7.81 anhand der Dichtefunktion erklärt.

Irgendwie schon, aber sie sieht ganz anders aus.

In der Mitte ist doch die Gauss-Funktion am hoechsten und geht dann zu beiden seiten nach Null. Wenn man nur eine Haelfte betrachtet beginnt die am Maximum.

Nur Leider ist die Kurve fuer 5 Freiheitsgrade dort ueberhaupt nicht dabei.

Ich sehe darin eine stark verzerrte rechte Hälfte der Normalverteilung.

Starke Verzerrung. Es gibt keine y-Skale und die x-Skale geht bis über 20.

Ich sprach von Abstammung und Variante von der Normalverteilung. Wikipedia schreibt von einer Ableitung von der Normalverteilung. Eine Definition ist das nicht. Du siehst das als Zerschneiden wie mit einer Schere. Ich meine das nicht, sondern irgend etwas, zu dem die Wörter 'Abstammung' und 'Variante' passen.

Wenn man eine Haelfte will muss man etwas ganzes zerschneiden, wie soll man das sonst verstehen.

Die Normalverteilung hat zwei Parameter, den Mittelwert und die Varianz, damit kann man verschiedene Normalverteilungen beschreiben. Die Chi-Quadrat-Verteilung ist keine davon.

Rein vom aussehen aehnelt letztere eher der Poisson Verteilung. Der wichtigste Unterschied: Bei der Normalverteilung steht -x^2 im exponent von e bei der Chi-Quadrat ist steht dort -x .

Der Zusammenhang zur Normalverteilung ist dass man sie aus einer bestimmten Kombinantion von mehreren normalverteilten Zufallsgroessen erzeugen kann.

Ganz einfach, indem man definiert, daß Eingaben < 0 eine Ausgabe von 0 ergeben. Schon hat man eine Zerschneidung.

Wikipedia schreibt, daß die Chi-Quadrat-Verteilung von der Normalverteilung abgeleitet ist. |Sie ist eine der Verteilungen, die aus der Normalverteilung 𝑁(𝜇,𝜎^2) abgeleitet werden kann. Ich habe das schon mehrmals gepostet.

Richtig, da müßte man weiter recherchieren oder selbst berechnen oder ein Buch kaufen.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required