Lassen Sie uns zunächst eine einheitliche Zufallszahl generieren und deren Verteilung veranschaulichen.
#Importieren Sie eine Bibliothek für den Umgang mit Zufallszahlen.
import random
sample_size = 10 #Anzahl der generierten Zufallszahlen
#Speichern Sie einheitliche Zufallszahlen in dist (Verteilung):Verteilung)
dist = [random.random() for i in range(sample_size)]
#Überprüfen Sie den Inhalt von dist.
dist
#Importieren Sie eine Bibliothek, um Diagramme und Grafiken zu veranschaulichen.
import matplotlib.pyplot as plt
%matplotlib inline
#Zeichnen Sie ein Histogramm.
plt.hist(dist)
plt.grid()
plt.show()
Je mehr Zufallszahlen erzeugt werden, desto näher kommt die "ideale" Verteilungsform.
sample_size = 100 #Anzahl der generierten Zufallszahlen
#Speichern Sie einheitliche Zufallszahlen in dist
dist = [random.random() for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist)
plt.grid()
plt.show()
sample_size = 1000 #Anzahl der generierten Zufallszahlen
#Speichern Sie einheitliche Zufallszahlen in dist
dist = [random.random() for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist)
plt.grid()
plt.show()
sample_size = 10000 #Anzahl der generierten Zufallszahlen
#Speichern Sie einheitliche Zufallszahlen in dist
dist = [random.random() for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist)
plt.grid()
plt.show()
sample_size = 100000 #Anzahl der generierten Zufallszahlen
#Speichern Sie einheitliche Zufallszahlen in dist
dist = [random.random() for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist)
plt.grid()
plt.show()
Die Box, die zum Trennen des Papierkorbs verwendet wird, heißt bin. Beim Zeichnen eines Histogramms hängt die Anzeige davon ab, wie viele Fächer sortiert sind. Wenn Sie die Anzahl der Bins erhöhen, können Sie die feine Form der Verteilung sehen, aber die Anzahl der getrennten Daten pro Bin nimmt natürlich ab.
sample_size = 100000 #Anzahl der generierten Zufallszahlen
#Speichern Sie einheitliche Zufallszahlen in dist
dist = [random.random() for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist, bins=100) #Behälter erhöhen
plt.grid()
plt.show()
__np.random.binomial (n, p) __ gibt die Anzahl der Gewinnchancen zurück, die angezeigt werden, wenn Sie n-mal ein Roulette spielen, mit einer Wahrscheinlichkeit von p, die eine ungerade Zahl ergibt (Wahrscheinlichkeit 1-p ergibt eine gerade Zahl). Eine solche Verteilung wird als Binomialverteilung bezeichnet.
Spielen Sie 10 Roulettes mit gleicher Wahrscheinlichkeit für Gewinnchancen und zählen Sie die Anzahl der Gewinnchancen. Wiederholen Sie es 10.000 Mal. Wie hoch ist die Wahrscheinlichkeit, dass Gewinnchancen und Gewinnchancen gleich oft auftreten (Wahrscheinlichkeit, dass sie jeweils fünfmal auftreten)?
#Importieren Sie die numerische Berechnungsbibliothek.
import numpy as np
sample_size = 10000 #Anzahl der generierten Zufallszahlen
#Eine ungerade Zahl erscheint mit einer Wahrscheinlichkeit p (Wahrscheinlichkeit 1)-Wenn Sie n-mal Roulette spielen (p gibt eine gerade Zahl an)
#Verteilung der Häufigkeit, mit der eine ungerade Zahl angezeigt wird
dist = [np.random.binomial(n=10, p=0.5) for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist, bins=100)
plt.grid()
plt.show()
Wie Sie der obigen Abbildung entnehmen können, beträgt die Wahrscheinlichkeit, dass ungerade und gerade gleich oft auftreten (Wahrscheinlichkeit von jeweils 5), ungefähr 25% (ungefähr 10000 Mal), wenn Sie ein Roulette mit gleicher Wahrscheinlichkeit für ungerade und gerade spielen. 2500 mal). Möglicherweise haben Sie den Eindruck, dass es unerwartet klein ist.
Sie haben andere Gäste beim Roulette im Casino beobachtet. Dann war die Anzahl der ungeraden Zahlen so hoch, dass ich das Roulette für verrückt hielt. Wenn es kein Tintenfisch ist, sollte Roulette ungerade und gerade ungerade und gerade Chancen haben. Dieses Roulette erhielt jedoch 60 von 100 Mal eine ungerade Zahl. Ist das Roulette-Tintenfisch?
Wenn Sie ein Roulette mit gleicher Wahrscheinlichkeit von Gewinnchancen und Gewinnchancen spielen, wie wahrscheinlich ist es, dass Gewinnchancen 60 Mal oder öfter auftreten? Zeichnen wir zunächst die Verteilung.
sample_size = 10000 #Anzahl der generierten Zufallszahlen
#Eine ungerade Zahl erscheint mit einer Wahrscheinlichkeit p (Wahrscheinlichkeit 1)-Beim n-maligen Roulette-Spielen (p gibt eine gerade Zahl an)
#Verteilung der Häufigkeit, mit der eine ungerade Zahl angezeigt wird
dist = [np.random.binomial(n=100, p=0.5) for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist, bins=100)
plt.grid()
plt.show()
Berechnen wir mit der gleichen Berechnung wie oben "die Wahrscheinlichkeit, 100 Mal Roulette zu spielen und eine ungerade Zahl von 60 Mal oder mehr zu erhalten".
sample_size = 10000 #Anzahl der generierten Zufallszahlen
#Eine ungerade Zahl erscheint mit einer Wahrscheinlichkeit p (Wahrscheinlichkeit 1)-Beim n-maligen Roulette-Spielen (p gibt eine gerade Zahl an)
#Verteilung der Häufigkeit, mit der eine ungerade Zahl angezeigt wird
dist = [np.random.binomial(n=100, p=0.5) for i in range(sample_size)]
p = sum([1 for n in dist if n >= 60]) / sample_size
print("p-Wert: %(p)s " %locals())
Nachdem wir 100 Roulettes mit gleichen Chancen auf Gewinnchancen gespielt hatten, stellten wir fest, dass die Wahrscheinlichkeit von "zufälligen" 60 oder mehr Gewinnchancen weniger als 5% beträgt. Mit anderen Worten, für ein Roulette mit einer ungeraden Anzahl von 60 oder mehr von 100 scheint es gut zu sein, zu vermuten, dass das Roulette verrückt ist.
Das p zu diesem Zeitpunkt wird als p-Wert (signifikante Wahrscheinlichkeit) bezeichnet.
Für ein Roulette, das eine ungerade Zahl mehr als 60 von 100 ergibt, scheint es gut zu sein, zu vermuten, dass das Roulette verrückt ist. Wenn dann eine ungerade Zahl 6-mal oder öfter von 10-mal erscheint, ist die Wahrscheinlichkeit, dass eine ungerade Zahl erscheint, gleich 60% </ u>, aber können Sie sagen, dass das Roulette verrückt ist? Bitte berechnen Sie den p-Wert und antworten Sie.
#Herausforderung 1
Es wird geschätzt, dass 5% aller Populationen eine Infektion haben. Wenn 20 Personen zufällig aus allen Einwohnern ausgewählt würden, wie viele Personen wären in der extrahierten Bevölkerung betroffen? Eine solche Verteilung ist auch eine Binomialverteilung. Zeichnen wir eine Verteilung.
sample_size = 10000 #Anzahl der generierten Zufallszahlen
#Eine ungerade Zahl erscheint mit einer Wahrscheinlichkeit p (Wahrscheinlichkeit 1)-Beim n-maligen Roulette-Spielen (p gibt eine gerade Zahl an)
#Verteilung der Häufigkeit, mit der eine ungerade Zahl angezeigt wird
dist = [np.random.binomial(n=20, p=0.05) for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist, bins=100)
plt.grid()
plt.show()
Es wird geschätzt, dass 5% aller Populationen eine Infektion haben. Wenn 100 Personen zufällig aus allen Einwohnern ausgewählt wurden, waren mehr als 10 Betroffene in der extrahierten Bevölkerung.
(1) Ungefähre Wahrscheinlichkeit, dass dies zufällig geschieht.
(2) Wie ist das Ergebnis zu interpretieren?
#Herausforderung 2
__random.normalvariate (mu, sigma) __ ist eine Funktion, die Zufallszahlen generiert, die einer Normalverteilung folgen (mu ist der Mittelwert, Sigma ist die Standardabweichung).
Eine Normalverteilung mit einem Mittelwert von 0 und einer Standardabweichung von 1 wird als "Standardnormalverteilung" bezeichnet. Zeichnen wir eine Standardnormalverteilung.
sample_size = 10000 #Anzahl der generierten Zufallszahlen
dist = [random.normalvariate(mu=0, sigma=1) for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist, bins=100)
plt.grid()
plt.show()
Wie groß ist die Wahrscheinlichkeit, dass eine Zufallszahl, die einer Standardnormalverteilung folgt, einen Wert von 2 oder mehr ausgibt? Berechnen wir.
sample_size = 10000 #Anzahl der generierten Zufallszahlen
dist = [random.normalvariate(mu=0, sigma=1) for i in range(sample_size)]
p = sum([1 for n in dist if n >= 2]) / sample_size
print("p-Wert: %(p)s " %locals())
Es wird angenommen, dass der "Abweichungswert", der häufig in Universitätsprüfungen verwendet wird, einer Normalverteilung mit einem Durchschnitt von 50 und einer Standardabweichung von 10 folgt. Zeichnen wir eine Verteilung. Stellen Sie sich hier die Anzahl der Schüler auf der vertikalen Achse vor.
sample_size = 10000 #Anzahl der generierten Zufallszahlen
#Normalverteilung mit Mittelwert 50 und Standardabweichung 10
dist = [random.normalvariate(mu=50, sigma=10) for i in range(sample_size)]
#Zeichnen Sie ein Histogramm.
plt.hist(dist, bins=100)
plt.grid()
plt.show()
Wie viele von 10.000 Studenten haben eine Abweichung von 70 oder mehr?
#Herausforderung 3
import numpy as np #Bibliothek zur numerischen Berechnung
import scipy as sp #Wissenschaftliche Berechnungsbibliothek
from scipy import stats #Statistische Berechnungsbibliothek
Der Chi-Quadrat-Test ist eine Methode, mit der geprüft wird, ob zwei Verteilungen gleich sind.
Wenn ich die Würfel 60 Mal würfelte und zählte, wie oft jeder Wurf herauskam, wurde es wie folgt.
Würfelwurf td> | 1 | 2 | 3 | 4 | 5 | 6 |
Anzahl der Vorkommen td> | 17 | 10 | 6 | 7 | 15 | 5 |
Testen wir zu diesem Zeitpunkt, ob es der Verteilung der theoretischen Werte folgt (gleichmäßige Verteilung).
significance = 0.05
o = [17, 10, 6, 7, 15, 5] #Gemessener Wert
e = [10, 10, 10, 10, 10, 10] #Theoretischer Wert
chi2, p = stats.chisquare(o, f_exp = e)
print('Chi2-Wert ist%(chi2)s' %locals())
print('Die Wahrscheinlichkeit ist%(p)s' %locals())
if p < significance:
print('Signifikanzniveau%(significance)Es gibt einen signifikanten Unterschied in s' %locals())
else:
print('Signifikanzniveau%(significance)Es gibt keinen signifikanten Unterschied in s' %locals())
Der Chi2-Wert beträgt 12,4 Die Wahrscheinlichkeit beträgt 0,029699459203520212 Bei einem Signifikanzniveau von 0,05 gibt es einen signifikanten Unterschied
Wenn die Versandqualitäten eines bestimmten Gemüses, das nach der A-Methode und der B-Methode angebaut wird, wie in der folgenden Tabelle angegeben sind, sollten wir berücksichtigen, dass ein Zusammenhang zwischen diesen Anbaumethoden und der Produktqualität besteht?
Ausgezeichnet th> | Gut th> | Ja th> | Total th> | |
---|---|---|---|---|
Eine Methode td> | 12 | 30 | 58 | 100 |
B-Methode td> | 14 | 90 | 96 | 200 |
total td> | 26 | 120 | 154 | 300 |
#Übung 4
#Ungepaarter t-Test
significance = 0.05
X = [68, 75, 80, 71, 73, 79, 69, 65]
Y = [86, 83, 76, 81, 75, 82, 87, 75]
t, p = stats.ttest_ind(X, Y)
print('t Wert ist%(t)s' %locals())
print('Die Wahrscheinlichkeit ist%(p)s' %locals())
if p < significance:
print('Signifikanzniveau%(significance)Es gibt einen signifikanten Unterschied in s' %locals())
else:
print('Signifikanzniveau%(significance)Es gibt keinen signifikanten Unterschied in s' %locals())
Der t-Wert beträgt -3,214043146821967 Die Wahrscheinlichkeit beträgt 0,006243695014300228 Bei einem Signifikanzniveau von 0,05 gibt es einen signifikanten Unterschied
Der gleiche arithmetische Test wurde in zwei Klassen durchgeführt, der 6. Klasse 1. Klasse und der 6. Klasse 2. Klasse, und die Bewertungsergebnisse wurden erhalten. Bitte testen Sie, ob es einen Punktunterschied zwischen den beiden Klassen gibt.
6. Klasse 1 Gruppe th> | Punktzahl th> | 6. Klasse 2. Gruppe th> | Punktzahl th> |
---|---|---|---|
1 | 70 | 1 | 85 |
2 | 75 | 2 | 80 |
3 | 70 | 3 | 95 |
4 | 85 | 4 | 70 |
5 | 90 | 5 | 80 |
6 | 70 | 6 | 75 |
7 | 80 | 7 | 80 |
8 | 75 | 8 | 90 |
class_one = [70, 75, 70, 85, 90, 70, 80, 75]
class_two = [85, 80, 95, 70, 80, 75, 80, 90]
#Herausforderung 5
#Gepaarter T-Test
significance = 0.05
X = [68, 75, 80, 71, 73, 79, 69, 65]
Y = [86, 83, 76, 81, 75, 82, 87, 75]
t, p = stats.ttest_rel(X, Y)
print('t Wert ist%(t)s' %locals())
print('Die Wahrscheinlichkeit ist%(p)s' %locals())
if p < significance:
print('Signifikanzniveau%(significance)Es gibt einen signifikanten Unterschied in s' %locals())
else:
print('Signifikanzniveau%(significance)Es gibt keinen signifikanten Unterschied in s' %locals())
Der t-Wert beträgt -2,9923203754253302 Die Wahrscheinlichkeit beträgt 0,02016001617368161 Bei einem Signifikanzniveau von 0,05 gibt es einen signifikanten Unterschied
Bitte testen Sie, ob es einen Unterschied zwischen der Landessprache und der arithmetischen Punktzahl gibt.
Gruppe der 6. Klasse th> | Japanisch th> | Arithmetik th> |
---|---|---|
1 | 90 | 95 |
2 | 75 | 80 |
3 | 75 | 80 |
4 | 75 | 80 |
5 | 80 | 75 |
6 | 65 | 75 |
7 | 75 | 80 |
8 | 80 | 85 |
kokugo = [90, 75, 75, 75, 80, 65, 75, 80]
sansuu = [95, 80, 80, 80, 75, 75, 80, 85]
#Herausforderung 6
#Dispersive Analyse eines Faktors
significance = 0.05
a = [34, 39, 50, 72, 54, 50, 58, 64, 55, 62]
b = [63, 75, 50, 54, 66, 31, 39, 45, 48, 60]
c = [49, 36, 46, 56, 52, 46, 52, 68, 49, 62]
f, p = stats.f_oneway(a, b, c)
print('f Wert ist%(f)s' %locals())
print('Die Wahrscheinlichkeit ist%(p)s' %locals())
if p < significance:
print('Signifikanzniveau%(significance)Es gibt einen signifikanten Unterschied in s' %locals())
else:
print('Signifikanzniveau%(significance)Es gibt keinen signifikanten Unterschied in s' %locals())
Der f-Wert beträgt 0,09861516667148518 Die Wahrscheinlichkeit beträgt 0,9064161716556407 Signifikanzniveau 0,05, kein signifikanter Unterschied
Führen Sie eine Dispersionsanalyse mit den folgenden Daten durch.
group1 = [80, 75, 80, 90, 95, 80, 80, 85, 85, 80, 90, 80, 75, 90, 85, 85, 90, 90, 85, 80]
group2 = [75, 70, 80, 85, 90, 75, 85, 80, 80, 75, 80, 75, 70, 85, 80, 75, 80, 80, 90, 80]
group3 = [80, 80, 80, 90, 95, 85, 95, 90, 85, 90, 95, 85, 98, 95, 85, 85, 90, 90, 85, 85]
#Herausforderung 7
Wählen Sie eines der folgenden auf Twitter durchgeführten Fragebogenergebnisse aus und führen Sie einen statistischen Test durch. Betrachten Sie die Ergebnisse auch statistisch.
Recommended Posts