Erstellen Sie zunächst zwei Datentypen mit unterschiedlichen Verteilungen.
Datengenerierung
import numpy as np
np.random.seed(seed=32)
groupA = np.random.normal(100, 20, 100000) #Durchschnitt 100,Generieren Sie 100.000 Zufallswerte mit einer Standardabweichung von 20
groupB = np.random.normal(100, 50, 100000) #Durchschnitt 100,Generieren Sie 100.000 Zufallswerte mit einer Standardabweichung von 50
print("GruppeA Probe: {}".format(groupA[0:5]))
print("GruppeA Probe: {}".format(groupB[0:5]))
GruppeA Probe: [ 93.02211098 119.67406867 111.61845661 101.40568882 115.55065353]
GruppeA Probe: [ 122.71129387 134.76068077 88.52182502 92.52887435 107.2470646 ]
Wenn man den Durchschnitt betrachtet, wie unten gezeigt, liegen die Werte beider Gruppen im Durchschnitt bei etwa 100 (dies ist natürlich, da im Durchschnitt 100 angegeben sind).
mean
meanA, meanB = np.mean(groupA), np.mean(groupB)
print("Gruppe A Durchschnitt= {},= {}".format(meanA, meanB))
Gruppe A Durchschnitt= 100.0881959959255,Durchschnitt der Gruppe B.= 100.13663565328969
Wenn Sie jedoch ein Histgramm wie folgt schreiben, ist die Verteilung deutlich unterschiedlich. Gruppe B hat einen breiteren Saum als Gruppe A und fühlt sich sanft an (dies ist natürlich, da der Standardabweichungswert unterschiedlich ist).
import seaborn as sns
sns.distplot(groupA, bins=100, label='groupA', kde=False)
sns.distplot(groupB, bins=100, label='groupB', kde=False)
plt.legend()
plt.show()
Auf diese Weise scheinen Gruppe A und Gruppe B beim Vergleich nur des Durchschnitts äquivalente Gruppen zu sein, aber tatsächlich wird die Information verworfen, dass Gruppe B eine größere Wertschwankung aufweist als Gruppe A. Zusammenfassende Statistiken, die diese Abweichungen in Zahlen ausdrücken, sind Abweichungen und Standardabweichungen.
Die Varianz kann nach folgender Formel berechnet werden
S^2 = \frac{1}{n}{\sum_{i=1}^n(x_i-\bar{x})^2}
Mit anderen Worten, es wird "(jeder Wert-Durchschnittswert) quadriert, addiert und durch die Anzahl der Daten geteilt". Durch Subtrahieren des Durchschnittswerts von jedem Wert scheint es sich um einen Index zu handeln, der angibt, wie stark er vom Durchschnitt abweicht. Es kann sich jedoch um einen negativen Wert handeln, sodass er quadriert wird. Danach kann durch Addition und Division durch die Anzahl der Daten der Variationsgrad der Daten ausgedrückt werden. Übrigens ist das Ergebnis jedes Wertmittelwerts die Abweichung, und der Wert, der durch Quadrieren und Addieren aller Werte erhalten wird, wird als Summe der quadratischen Abweichungen bezeichnet.
Das Schreiben in Python sieht so aus.
Abweichung
groupA[0] - groupA.mean()
Summe der Abweichungsquadrate
s = np.sum((xi - groupA.mean())**2 for xi in groupA)
print(s)
40178555.707617663
Verteilt
var = sum / len(groupA)
print(var)
401.78555707618096
groupA,B Versuchen Sie, die Dispersion von beiden zu erhalten
a = ((groupA - groupA.mean())**2).sum()/len(groupA)
b = ((groupB - groupB.mean())**2).sum()/len(groupB)
print("Verteilung von Gruppe A.:{:.2f}\ngroupB-Verteilung:{:.2f}".format(a, b))
Verteilung von Gruppe A.:401.79
Verteilung der Gruppe B.:2496.21
Wir können also die Varianz jeder Gruppe sehen, Gruppe B hat eine größere Varianz als A, und die numerischen Werte sind nicht in der Nähe des Durchschnittswerts konzentriert. Mit anderen Worten ist ersichtlich, dass es Variationen gibt.
Ich fand, dass B variabler war, aber ich bin mir nicht sicher, ob gesagt wurde, dass "die Varianz 2496 ist" eine Reihe von Zahlen mit einem Durchschnitt von etwa 100 sowohl für Gruppe A als auch für Gruppe B war. In einem solchen Fall ist es besser, die Standardabweichung anzugeben.
S=\sqrt{S^2}
Die Standardabweichung ist die Quadratwurzel der Varianz. Da es bei der Berechnung der Varianz quadriert wurde, kehrt es zur ursprünglichen Dimension zurück, indem hier die Quadratwurzel gezogen wird. Daher wird es einfacher zu verstehen, wie stark die Zahlen variieren.
Standardabweichung
print("Standardabweichung der Gruppe A.:{:.2f}\Standardabweichung von ngroupB:{:.2f}".format(math.sqrt(a), math.sqrt(b)))
Standardabweichung der Gruppe A.:20.04
Standardabweichung von Gruppe B.:49.96
Da numpy praktisch ist, können Sie den Mittelwert, die Varianz und die Standardabweichung leicht berechnen.
mean = groupA.mean()
var = groupA.var()
std = groupA.std()
print("durchschnittlich:{:.2f}Verteilt:{:.2f}Standardabweichung:{:.2f}".format(mean, var, std))
durchschnittlich:100.09 Dispersion:401.79 Standardabweichung:20.04