Chi-Quadrat-Kurve aus Münzwürfen
Verfasst: Sonntag 14. Februar 2016, 01:17
Hallo Zusammen
Ich bin im Netz auf folgende Leseprobe gestoßen:
http://www.springer.com/cda/content/doc ... p176976174
Sie stammt aus dem Buch „Statistik für Anwender“ mit dem Untertitel „Statistik aus der Münze“. Die Idee, die statistischen Standardverteilungen aus Münzwürfen herzuleiten, finde ich genial. Ich habe folgenden Code zur Reproduktion der Prozedur Nr.4 (Chi-Quadrat-Kurve) ausprobiert:
Störend in der Ausgabe sind die vielen „Null“-Punkte. Zudem scheinen insgesamt die Datenpunkte nicht denen in der Abbildung 2.9 (9 Freiheitsgrade) des Buches zu entsprechen. Ich könnte entweder die Prozedur falsch verstanden oder irgendetwas falsch implementiert haben; vielleicht auch beides.
Für Eure Hilfe danke ich Euch im Voraus.
Ich bin im Netz auf folgende Leseprobe gestoßen:
http://www.springer.com/cda/content/doc ... p176976174
Sie stammt aus dem Buch „Statistik für Anwender“ mit dem Untertitel „Statistik aus der Münze“. Die Idee, die statistischen Standardverteilungen aus Münzwürfen herzuleiten, finde ich genial. Ich habe folgenden Code zur Reproduktion der Prozedur Nr.4 (Chi-Quadrat-Kurve) ausprobiert:
Code: Alles auswählen
from matplotlib import pyplot as plt
import random
n = 500000
n2 = 10
delta = 1.6
random.seed()
zw2sammlung = []
for i in range(n):
for i2 in range(n2):
x = 0
xse = []
for i3 in range(n2):
x += random.randint(0,1)
xse.append(x/n2)
zw2sammlung.append(xse)
xdds = []
for liste in zw2sammlung:
xdds.append(sum(liste)/n2)
chis = []
for i in range(len(xdds)):
sq = 0
for item in zw2sammlung[i]:
sq += (item-xdds[i])**2
chis.append(((n2-1)*(sq/(n2-1)))/(0.25/n2))
preYAchse = []
skalalevel = min(chis)
while skalalevel < max(chis):
skalalevel += delta
preYAchse.append(skalalevel)
yAchse = []
xAchse = []
for i in range(len(preYAchse)):
if i == 0:
cnt = 0
for chi in chis:
if chi < preYAchse[i]:
cnt += 1
yAchse.append((cnt/n)/delta)
xAchse.append(preYAchse[i]/2)
else:
cnt = 0
for chi in chis:
if chi > preYAchse[i-1] and chi < preYAchse[i]:
cnt += 1
yAchse.append((cnt/n)/delta)
xAchse.append(preYAchse[i-1]+((preYAchse[i]-preYAchse[i-1])/2))
plt.plot(xAchse,yAchse, color="green", marker="o", linestyle="solid")
plt.title("")
plt.show()
Für Eure Hilfe danke ich Euch im Voraus.