bitmuncher
Senior-Nerd
Bin gerade dabei mich in Statistiken einzulernen. Mein aktuelles Thema: Standardabweichung berechnen (bzw. Korrelationen, aber dafür brauch ich die ja). Um mir das besser zu veranschaulichen, setze ich die im Lehrstoff vorgegebenen Aufgaben in Code um.
Ich nutze dabei numpy und pandas:
Gegeben ist folgender Datensatz :
Von diesem soll die Standard-Abweichung berechnet werden. Ich mache also folgendes:
1. Ich berechne den Durchschnitt der Daten.
average_workers = 21.3
2. Bei jedem Datum muss dann der Durchschnitt vom Datum subtrahiert werden, das Ergebnis dann jeweils quadriert:
Ergibt:
3. Dann brauche ich den Durchschnitt der quadrierten Differenzen:
Ergibt: 37.81
5. Und zum Schluss muss daraus die Wurzel gezogen werden.
Ergibt: 6.1489836558572826
Mein Problem ist nun, dass es laut Lehrstoff 6.48 sein sollte. Mir stellt sich die Frage: Ist mein Code falsch (was übersehe ich), ist meine Vorgehensweise falsch oder ist der Lehrstoff falsch?
Ich nutze dabei numpy und pandas:
Code:
import numpy as np
from pandas import Series,DataFrame
import pandas as pd
Gegeben ist folgender Datensatz :
Code:
dframe_relations = DataFrame([12,30,15,24,14,18,28,26,19,27],
index=[1,2,3,4,5,6,7,8,9,10],columns=['workers'])
Von diesem soll die Standard-Abweichung berechnet werden. Ich mache also folgendes:
1. Ich berechne den Durchschnitt der Daten.
Code:
total = i = 0.0
for item in dframe_relations['workers']:
total += item
i+=1
average_workers = total / i
2. Bei jedem Datum muss dann der Durchschnitt vom Datum subtrahiert werden, das Ergebnis dann jeweils quadriert:
Code:
ser_calculated = Series(range(10),index=[1,2,3,4,5,6,7,8,9,10],dtype=float)
i = 1
for workers in dframe_relations['workers']:
ser_calculated[i] = np.square((workers - average_workers))
i+=1
Ergibt:
Code:
1 86.49
2 75.69
3 39.69
4 7.29
5 53.29
6 10.89
7 44.89
8 22.09
9 5.29
10 32.49
dtype: float64
3. Dann brauche ich den Durchschnitt der quadrierten Differenzen:
Code:
calc = i = 0.0
for item in ser_calculated:
i+=1
calc += item
variance = calc / i
Ergibt: 37.81
5. Und zum Schluss muss daraus die Wurzel gezogen werden.
Code:
std_dev = np.sqrt(variance)
Ergibt: 6.1489836558572826
Mein Problem ist nun, dass es laut Lehrstoff 6.48 sein sollte. Mir stellt sich die Frage: Ist mein Code falsch (was übersehe ich), ist meine Vorgehensweise falsch oder ist der Lehrstoff falsch?