[PYTHON] Prophezeiungstheorie und ihre Simulation (2)

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.

Pseudozufallszahlengenerierung

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.

Streuen Sie die Ergebnisse von 40.000 Münzwürfen

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.

Ergebnisse des ersten Experiments

Erstens ist das Ergebnis des ersten Experiments.

image2.png

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.

Ergebnisse des zweiten Experiments

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.

image3.png

Ich denke, man kann es irgendwie aus der Grafik lesen.

Ergebnisse des dritten Experiments

Dies ist das Ergebnis des dritten Experiments.

image4.png

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.

Ergebnisse des 4. Experiments

Dies ist das Ergebnis des 4. Experiments.

image5.png

Immerhin hat es 20.400 Mal nicht überschritten.

Ergebnisse des 5. Experiments

Als Folgetest habe ich das gleiche Experiment an einem anderen Tag erneut versucht.

image.png

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.

Hypothesentest

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)

Chi-Quadrat-Test

** 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}

Implementierung des Chi-Quadrat-Tests

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.

Erwägung

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.

Recommended Posts

Prophezeiungstheorie und ihre Simulation (2)
Störungsentwicklung und Simulation Störungsmethode
Normalisierung der Strömungstheorie und -implementierung
Einfache Theorie und Implementierung des neuronalen Netzes
Python 2-Minuten-Suche und ihre Ableitungen