[PYTHON] Statistiken bis zur Streuung und Standardabweichung

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 ]

durchschnittlich

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()

image

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.

Verteilt

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.

Standardabweichung

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

Schließlich

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

Recommended Posts

Statistiken bis zur Streuung und Standardabweichung
[Statistik] Erste "Standardabweichung" (um Frustrationen mit Statistiken zu vermeiden)
[Statistik für Programmierer] Dispersion, Standardabweichung und Fluktuationskoeffizient
Aktienkurs und Statistik (Mittelwert, Standardabweichung)
[Algorithmus x Python] Berechnung der Basisstatistik Teil 3 (Bereich, Varianz, Standardabweichung, Fluktuationskoeffizient)
775/664, 777/666, 755/644 usw.
Berechnen Sie den Mittelwert, den Median, die häufigste Varianz und die Standardabweichung in Python
Dekorateur zum Stummschalten der Standardausgabe
Python / Numpy / Statistik> Differenz> Standardabweichung> Grundgesamtheit / Stichprobe> unvoreingenommene englische Notation