Gestern erläuterte den "Mehrheitssatz" und den "Satz der zentralen Polbegrenzung", die wichtige Wahrscheinlichkeitssätze beim Umgang mit großen Datenmengen sind. ..
Verwenden wir heute tatsächlich einen Computer, um die Verteilung einer großen Anzahl stochastischer Versuche zu simulieren.
Mit einem Computer können Sie keine echten Zufallszahlen erstellen. Daher verwenden wir Pseudozufallszahlen. (Es wird gesagt, dass Pseudozufallszahlen offiziell "Pseudo" ohne Verzerrung sind.) Zufallszahlen sind sehr tief und es gibt kein Ende, sie zu verfolgen.
Hier verwenden wir numpy.random.randint, das mit NumPy verknüpft ist. Es gibt eine Ganzzahl aus einer gleichmäßig diskreten Verteilung zurück.
Ich erklärte gestern, dass 40.000 Münzwürfe nicht 20.400 Mal erscheinen, wenn Sie die Qualifikation für den zentralen Pol anwenden. Obwohl dies durch den Satz bewiesen wurde, kann es für einen Ingenieur schwierig sein, es zu verstehen, ohne es tatsächlich auf einem Computer auszuführen.
Wir werden also mit dem folgenden Code simulieren.
def coin_toss(lim):
"""Münzwurf simulieren"""
#Speichert 1, wenn die Vorderseite angezeigt wird, und 0, wenn die Rückseite angezeigt wird
_randomized = np.random.randint(2, size=lim)
#Aggregieren Sie die Gesamtzahl der Aufrufe der Tabelle
_succeed = [i for i in _randomized if i == 1]
#Gibt das Aggregationsergebnis zurück
return len(_succeed)
X = []
Y = []
lim = 10000
# 40,000 Münzwurf 10,Mach 000 mal
for i in range(lim):
X.append(i)
Y.append(coin_toss(lim = 40000))
print (X)
print (Y)
_over_lim = [i for i in Y if i >= 20400]
# 20,Anzahl der Male über 400
print( len(_over_lim) )
_under_lim = [i for i in Y if i <= 19600]
# 19,Anzahl der Male 600 oder weniger
print( len(_under_lim) )
Dies bedeutet 400 Millionen Münzwürfe in einem einzigen Experiment.
Erstens ist das Ergebnis des ersten Experiments.
Wenn Sie mit 40.000 Münzen einfach denken, sollten Sie eine Tabelle mit 20.000 Mal erhalten, aber dies ist eine Grafik, die diese 10.000 Mal wiederholt.
Es ist fast zentriert. Diesmal war die Häufigkeit, mit der die Tabelle erschien, weder mehr als 20.400 noch weniger als 19.600.
Als ich erneut experimentierte, gab es nur 1 von 10.000 Fällen, in denen die Häufigkeit des Auftretens der Tabelle 19.600 oder weniger betrug.
Ich denke, man kann es irgendwie aus der Grafik lesen.
Dies ist das Ergebnis des dritten Experiments.
Es gab nur einen Fall, in dem die Häufigkeit, mit der die Tabelle kaum angezeigt wurde, 20.400 nicht überschritt. Darüber hinaus gab es nur einen Fall, der weniger als 19.600 Mal auftrat.
Dies ist das Ergebnis des 4. Experiments.
Immerhin hat es 20.400 Mal nicht überschritten.
Als Folgetest habe ich das gleiche Experiment an einem anderen Tag erneut versucht.
Es gab einen Fall, in dem die Tabelle mehr als 20.400 Mal erschien, und einen Fall, in dem die Tabelle weniger als 19.600 Mal erschien.
Lassen Sie uns nun statistisch untersuchen, ob die Hypothese, dass 40.000 Münzwurf 20.400 Tische ergeben, richtig ist.
Der Weg, eine Hypothese zu erstellen, ist wie folgt.
Hypothese | Erläuterung |
---|---|
Nullhypothese | 40,20 mit 000 Münzwurf,400 mal Tabelle erscheint |
Konflikthypothese | 40,20 mit 000 Münzwurf,400-malige Tabelle wird nicht angezeigt(20,000 mal Tabelle erscheint) |
** Pearsons Chi-Quadrat-Test ** ist der Chi-Quadrat-Test (http://en.wikipedia.org/wiki/%E3%82%AB%E3%82%A4%E4) % BA% 8C% E4% B9% 97% E5% 88% 86% E5% B8% 83) ist die grundlegendste und am weitesten verbreitete Methode. Die Formel sieht folgendermaßen aus:
X^2 = \sum\frac {(O-E)^2} {E}
Der Chi-Quadrat-Test ist mit SciPy einfach zu implementieren.
Lassen Sie uns zunächst herausfinden, ob Sie mit 400 Münzwürfen einen 204-fachen Tisch erhalten. Um herauszufinden, ob die Hypothese, dass die Ergebnisse von 204 Fronten und 196 Rückseiten aus 400 Münzwürfen stammen, signifikant ist.
# -*- coding:utf-8 -*-
import numpy as np
import scipy.stats
s = 204 #Häufigkeit, mit der die Tabelle angezeigt wird
f = 196 #Häufigkeit, mit der der Rücken herauskommt
e = 200 #Erwartete Anzahl von Malen
#Nullhypothese(204:196)
observed = np.array([s,f])
#Konflikthypothese(200:200)
expected = np.array([e,e])
#Führen Sie einen Chi-Quadrat-Test durch
x2, p = scipy.stats.chisquare(observed, expected)
print("Der Chi-Quadrat-Wert ist%(x2)s" %locals() )
print("Die Wahrscheinlichkeit ist%(p)s" %locals() )
#Statistisches Signifikanzniveau 0.Finden Sie heraus, ob es höher als 05 ist
if p > 0.05:
print("Von Bedeutung")
else:
print("Nicht signifikant")
Das Ergebnis ist so. 0,68 ist höher als 0,05, also signifikant. Man kann sagen, dass es genug passieren kann.
Der Chi-Quadrat-Wert ist 0.16
Wahrscheinlichkeit ist 0.689156516779
Von Bedeutung
Betrachten wir dies als 2.040-mal vorne und 1.960-mal hinten.
Der Chi-Quadrat-Wert ist 1.6
Wahrscheinlichkeit ist 0.205903210732
Von Bedeutung
Klingt so, als wäre es immer noch bedeutsam. Es kann genug passieren.
Was ist dann mit 20.400 Mal vorne und 19.600 Mal hinten?
Der Chi-Quadrat-Wert beträgt 16.0
Wahrscheinlichkeit ist 6.33424836662e-05
Nicht signifikant
Es war nur ein sehr niedriger Wert (Gleitkommazahlen beachten). Es kann gesagt werden, dass dies unwahrscheinlich ist.
Was ist, wenn Sie 40.000 Münzen werfen und 20.100 Mal einen Tisch bekommen?
Der Chi-Quadrat-Wert ist 1.0
Wahrscheinlichkeit ist 0.317310507863
Von Bedeutung
Es ist bedeutend. Es stellte sich heraus, dass es durchaus möglich ist, dass die Tabelle angezeigt wird, wenn es ungefähr 20.100 Mal ist.
Mithilfe eines Computers können Sie eine Vielzahl von Berechnungen durchführen, diese simulieren und die Ergebnisse visualisieren. Es wurde auch gefunden, dass der Hypothesentest testen kann, ob die relative Häufigkeit der beobachteten Ereignisse einer bestimmten Häufigkeitsverteilung folgt.