[PYTHON] Grundlegende Statistik und Gaußsche Verteilung

Open In Colab

Das Jupyter-Notebook ist unten erhältlich.

https://gist.github.com/hnishi/544c77e35b98b737bbd004a1a9ac8924

Grundlegende Statistik und Gaußsche Verteilung

Zusammenfassung Statistik Zusammenfassung

Unten finden Sie ein Beispiel für eine zusammenfassende Statistik

  1. Zusammenfassende Statistiken aus Momenten --Durchschnittlich
  1. Zusammenfassende Statistiken aus der Bestellung
  1. Zusammenfassende Statistiken aus der Häufigkeit

Zusammenfassende Statistiken aus Momenten


\mu = \frac{1}{\,N\,} \sum_{i = 1}^N x_i
\mu_m = \frac{1}{\,N\,} \sum_{i = 1}^N (x_i - \mu)^m \quad\ (m = 2, 3, \cdots)

Definiert in.

durchschnittlich

Primärer Moment um den Ursprung $ \ mu $. Die Summe geteilt durch die Zahl.

\mu = \frac{1}{\,N\,} \sum_{i = 1}^N x_i

Dispersion, Standardabweichung

Statistiken aus dem zentralen Moment zweiter Ordnung. Repräsentiert die Verbreitung der Distribution.

Verteilung: $ \ sigma ^ 2 = \ mu_2 $ Standardabweichung: $ \ sigma = \ sqrt {\ mu_2} $

Schiefe

Statistiken aus dem zentralen Moment dritter Ordnung. Repräsentiert den Grad der Links-Rechts-Asymmetrie der Verteilung.

\gamma_1 = \mu_3 / \sigma^3

Kurtosis

Statistiken aus dem 4. zentralen Moment erhalten. Repräsentiert die Schärfe der Verteilungsspitzen (die Breite der Basis).

\gamma_2 = \mu_4 / \sigma^4 - 3

Es gibt jedoch einige Definitionen, die 3 nicht subtrahieren.

[1]: Der Begriff "* m * nächster zentraler Moment" wird von Kei Takeuchi (Vertreter der Redaktion) verwendet. "Statistikwörterbuch" Toyo Keizai Shinposha, Nach 1989.

Zusammenfassende Statistiken aus der Bestellung


Unten * N * Daten in aufsteigender Reihenfolge sortiert Betrachten Sie eine Statistik (Auftragsstatistik) für $ x_1 \ le x_2 \ le \ dots \ le x_N $.

Median

Median, Median Auch genannt. Daten, die genau in der Mitte der Datengröße liegen x_{(N+1)/2} .. Der Medianwert für nicht ganzzahlige Koordinaten wird jedoch durch lineare Interpolation (dh) definiert. $ X_ {N / 2} $ und $ x_ {(N + 1) / 2} $, wenn * N * gerade ist Durchschnitt sein von).

Schnittdurchschnitt (Schnittdurchschnitt)

Durchschnitt ohne Maximal- und Minimalwerte. Wenn Sie die Anzahl der Ausschlüsse erhöhen, ist der Endwert der Medianwert. Daher ist der Medianwert einer der beschnittenen Mittelwerte [^ 1].

Viertelpunkt

Wenn die Gruppe durch die Größe des Werts in vier gleiche Teile geteilt wird, wird der Wert zur Grenze. $ x_ {(N + 3) / 4} $ Der erste Quadrant $ x_ {(3N + 1) / 4} $ Wird der dritte Quadrant genannt. $ x_ {(2N + 2) / 4} $ Das heißt, der zweite Quadrant ist der Medianwert.

Minimum Maximum

Der kleinste Wert $ x_1 $ und der größte Wert $ x_N $ in der Grundgesamtheit.

Zur Visualisierung dieser Statistiken wird ein Box-Whisker-Diagramm verwendet.

Mittelpunktwert

Der Wert, der durch Addition des Maximal- und Minimalwerts und Division durch 2 erhalten wird, wird als Mittelpunktwert bezeichnet und manchmal als repräsentativer Wert verwendet.

Reichweite

Die Differenz zwischen dem Maximalwert und dem Minimalwert wird als Bereich bezeichnet und manchmal als repräsentativer Wert verwendet. Verwenden Sie R als Symbol.

[^ 1]: Yasuo Nishioka, Mathematik-Tutorial Sanft sprechende Wahrscheinlichkeitsstatistik, Ohm, S.5, p.52013, ISBN 9784274214073

Zusammenfassende Statistik aus der Häufigkeit


Häufigster Wert

Modus, durchschnittliche Anzahl Auch genannt. Von den Daten der Wert, der die höchste Häufigkeit in der Häufigkeitsverteilung angibt, dh der Wert der Daten, der am häufigsten auftritt.

Unvoreingenommener Varianzschätzer


u^2 = \frac{1}{N-1} \sum_{i = 1}^N (x_i - \mu)^2

Unvoreingenommene Streuung $ u ^ 2 $

Die normale Populationsvarianz verwendet die normale Varianz, und die unverzerrte Varianz wird verwendet, um die Populationsvarianz aus der Stichprobe abzuleiten. Die Excel-Funktion var () berechnet die unverzerrte Verteilung.

Im Bereich des maschinellen Lernens wird häufig die oben beschriebene Dispersion anstelle der unverzerrten Dispersion verwendet. (Unabhängig davon, was Sie verwenden, können Sie ähnliche Ergebnisse erzielen und fast die gleiche Interpretation haben.)

Referenz: https://www.heisei-u.ac.jp/ba/fukui/pdf/stattext05.pdf

Versuchen Sie, zusammenfassende Statistiken mithilfe von IRIS-Daten zu finden


――Was sind IRIS-Daten?

Daten, die für maschinelles Lernen bekannt sind. IRIS bedeutet die Blume von "Ayame" und wird von der UCI (University of California, Irvine) als Daten für das Studium des maschinellen Lernens und des Data Mining verteilt.

Die Arten von Ayame sind wie folgt.

Diese Daten werden anhand der folgenden Informationen analysiert.

--Sepal Länge

Die Einheit ist cm.

image01

https://carp.cc.it-hiroshima.ac.jp/~tateyama/Lecture/AppEx/LoadCSV.html


import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
from sklearn import datasets
iris = datasets.load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df['name'] = iris.target_names[iris.target]
#Sie können die Hauptstatistiken einfach mit Pandas ausgeben.
#Natürlich kann jeder einzeln ausgegeben werden, aber hier wird er weggelassen.
iris_df.describe()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
#Bestätigung der Daten
plt.show(sns.pairplot(data=iris_df, hue='name', vars=iris.feature_names, diag_kind='hist', palette='spring'))

da_handson_basic_statistic_values_11_0.png

Kovarianz

Wenn eine Stichprobe zwei oder mehr Merkmalsmengen hat, Merkmalsmenge 1, $ x ^ {\ left (1 \ right)} $ und Merkmalsmenge 2, $ x ^ {\ left (2 \ right)} Die Kovarianz zwischen $ und wird wie folgt ausgedrückt.

cov(x^{(1)}, x^{(2)}) = \frac{1}{N} \sum_{i = 1}^N (x^{(1)}_{i} - \mu^{(1)}) (x^{(2)}_{i} - \mu^{(2)})

Wenn es eine positive Korrelation zwischen den beiden Merkmalsgrößen gibt, nimmt es einen positiven Wert an, und wenn es eine negative Korrelation gibt, nimmt es einen negativen Wert an. Die Größe des Wertes gibt die Stärke der Korrelation an. Dies ist jedoch nur dann der Fall, wenn die Einheiten (Skalen) der beiden Merkmalsgrößen gleich sind.

Die Kovarianz (Matrix) wird in der Hauptkomponentenanalyse (PCA-Analyse) verwendet, die beim nächsten Mal eingeführt wird (?).

https://ja.wikipedia.org/wiki/%E5%85%B1%E5%88%86%E6%95%A3

Kovarianz-Kovarianz-Matrix (Kovarianzmatrix, Kovarianzmatrix)

Betrachten Sie den folgenden Spaltenvektor. $ X_1, X_2, ..., X_m $ repräsentieren m verschiedene Merkmale.

\textbf{X}= \begin{bmatrix}X_1 \\ X_2 \\ \vdots \\ X_m \end{bmatrix}

Wenn die Elemente dieses Vektors stochastische Variablen sind, deren Varianzen endlich sind, wird die Matrix Σ, deren Elemente von ('' i '', '' j '') wie folgt sind, eine verteilte mitverteilte Matrix genannt.

\Sigma_{ij} = \frac{1}{N} \sum_{i = 1}^m (X_{i} - \mu_{i}) (X_{j} - \mu_{j}) \quad\

N ist die Anzahl der Proben. Das heißt, eine Matrix, in der diagonale Komponenten dispergiert und andere Komponenten gemeinsam verteilt sind, wird als verteilte Co-Dispersionsmatrix bezeichnet.

Sie können die Kovarianz aller Merkmalspaare sehen.

Die Verteilungs-Co-Verteilungsmatrix jedes Merkmals des Iris-Datensatzes wird unten als Wärmekarte gezeigt. Diagonale Komponenten werden dispergiert und andere Komponenten werden gemeinsam dispergiert. Beispielsweise ist ersichtlich, dass eine positive Korrelation zwischen der Blütenblattlänge und der Kelchblattlänge besteht.

import numpy as np

#Erstellen Sie eine Kovarianzmatrix
cov_mat = np.cov(iris.data.T)
df = pd.DataFrame(cov_mat, index=iris.feature_names, columns=iris.feature_names)
ax = sns.heatmap(df, annot=True, center=0, vmin=-3, vmax=3)

da_handson_basic_statistic_values_15_0.png

Korrelationskoeffizient

Da der numerische Wert der Kovarianz durch die Größe des ursprünglichen Werts bestimmt wird, ist es schwierig, ihn zu interpretieren, wenn mehrere Variablen mit verschiedenen Einheiten verglichen werden. Selbst wenn Sie beispielsweise die Verteilung der Bevölkerung jeder Stadt und den Verkauf von Ramen-Läden auf kommunaler Basis berechnen, ist es schwierig, die Bedeutung der Zahlen zu verstehen.

Daher ist es bei der Betrachtung der Beziehung üblich, den Korrelationskoeffizienten zu verwenden.

Der Korrelationskoeffizient ist der Wert der Kovarianz geteilt durch das Produkt der Standardabweichungen jeder Variablen. Der Korrelationskoeffizient nimmt einen Wert von -1 bis 1 an. Bei 1 sind die Werte der beiden Variablen perfekt synchronisiert.

\rho = \frac{\sigma_{X Y}}{\sigma_X\sigma_Y}

$ \ rho $ repräsentiert den Korrelationskoeffizienten und X und Y repräsentieren unterschiedliche Merkmalsgrößen.

Der Korrelationskoeffizient kann als standardisierte Kovarianz bezeichnet werden (die Datenrelevanz anzeigt, ohne von der Einheit beeinflusst zu werden).

Normalverteilung (Gaußsche Verteilung, Gaußsche Verteilung)

f(x)=\frac{1}{\sqrt{2\pi \sigma^2}} \exp \! \left( -\frac{(x-\mu)^2}{2\sigma^2} \right) \quad(x\in \mathbb{R} )

Referenz:

Versuchen Sie, eine Gaußsche Verteilung künstlich zu erstellen

Unten finden Sie ein Histogramm von Daten, die zufällig gemäß der Gaußschen Verteilung und einer Überlagerung der Gaußschen Verteilung generiert wurden.

mu ist der Durchschnittswert (Verteilungszentrum) Sigma ist die Standardabweichung (Verteilungsbreite)

import numpy as np

#Zufällige Erzeugung nach Gaußscher Verteilung
mu, sigma = 0, 1 # mean and standard deviatin
np.random.seed(1)
s = np.random.normal(mu, sigma, 1000)
import matplotlib.pyplot as plt

#Histogramm erstellen
count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
               np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
         linewidth=2, color='r')
plt.show()

da_handson_basic_statistic_values_20_0.png

Sie können bestätigen, dass sich die Verteilung ändert, indem Sie die Werte von mu und sigma ändern. Da es sich um eine Wahrscheinlichkeitsdichtefunktion handelt, kann man sich außerdem aus dem Wert auf der vertikalen Achse vorstellen, dass er 1 wird, wenn er über den gesamten Abschnitt auf der horizontalen Achse integriert wird.


Übrigens wird bei der Standardisierung, die durchgeführt wird, um die Skalen der Merkmalsmengen auszurichten, die folgende Verarbeitung durchgeführt.

x_{i_{std}} = \frac{x_i-\mu}{\sigma}

$ x_ {i_ {std}} $: Standardisierter Funktionsbetrag $ x_i $ $ \ mu $: Durchschnittswert $ \ sigma $: Standardabweichung

Dieser Prozess wandelt den Mittelwert in 0 und die Standardabweichung in 1 um. Mit anderen Worten kann gesagt werden, dass die Verteilung jedes Merkmals so transformiert wird, dass sie einer Gaußschen Verteilung mit einem Zentrum von 0 und einer Verteilungsbreite derselben Skala folgt, wobei eine Normalverteilung angenommen wird.

Diese Methode ist praktischer, da sie weniger von Ausreißern betroffen ist als die Min-Max-Skalierung (häufig als Normalisierung bezeichnet), bei der die Daten auf einen begrenzten Wertebereich skaliert werden. Ich kann sagen.


(Wörter wie Normalisierung und Standardisierung werden in einigen Bereichen häufig recht vage verwendet, und es ist notwendig, je nach Situation auf ihre Bedeutung zu schließen. Außerdem wird die Operation von $ x_i- \ mu $ als mittlere Normalisierung bezeichnet, und die Operation von $ 1 / \ sigma $ wird als Merkmalsskalierung bezeichnet. )


Das Obige ist eine künstlich erzeugte Gaußsche Verteilung, daher ist es natürlich, dass die Verteilung dem Histogramm ähnlich ist.

Wenden Sie die Gaußsche Verteilung auf den Iris-Datensatz an

Jetzt sieht es so aus, als ob die Gaußsche Funktion gut in die natürlichen Daten passt. Schauen wir uns das also anhand des Iris-Datensatzes an.

#Anpassung des Iris-Datensatzes mit der Gaußschen Funktion

import matplotlib.pyplot as plt

for i_column in iris_df.columns:
  if i_column == 'name':
    continue
  print(i_column)
  mu = iris_df[i_column].mean()
  sigma = iris_df[i_column].std()

  #Histogramm erstellen
  count, bins, ignored = plt.hist(iris_df[i_column], 30, density=True)
  plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
                np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
          linewidth=2, color='r')
  plt.show()
sepal length (cm)

da_handson_basic_statistic_values_23_1.png

sepal width (cm)

da_handson_basic_statistic_values_23_3.png

petal length (cm)

da_handson_basic_statistic_values_23_5.png

petal width (cm)

da_handson_basic_statistic_values_23_7.png

Es scheint, dass nur die Sepalbreite eine Gaußsche Verteilung hat, andere Merkmale jedoch keine Gaußsche Verteilung. Ausgehend von diesen Ergebnissen scheint die Gaußsche Verteilung bei Betrachtung des gesamten Iris-Datensatzes nicht zur Darstellung dieser Verteilung geeignet zu sein.

Dies liegt vermutlich daran, dass Daten aus mehreren Gruppen (Iristypen) im Datensatz gemischt werden. Zeichnen Sie daher für jedes Etikett (setosa, versicolor, virginica) eine Gaußsche Verteilung.

Zeichnen Sie eine Gaußsche Verteilung für jedes Etikett (Iris-Typ).

#Schauen wir uns die Verteilung für jeden Typ an

for i_name in iris_df['name'].unique():
  print(i_name)
  df_tmp = iris_df[iris_df['name'] == i_name]
  print(df_tmp.shape)

  for i_column in df_tmp.columns:
    if i_column == 'name':
      continue
    print(i_column)
    mu = df_tmp[i_column].mean()
    sigma = df_tmp[i_column].std()

    #Histogramm erstellen
    count, bins, ignored = plt.hist(df_tmp[i_column], 10, density=True)
    plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
                  np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
            linewidth=2, color='r')
    plt.show()
setosa
(50, 5)
sepal length (cm)

da_handson_basic_statistic_values_25_1.png

sepal width (cm)

da_handson_basic_statistic_values_25_3.png

petal length (cm)

da_handson_basic_statistic_values_25_5.png

petal width (cm)

da_handson_basic_statistic_values_25_7.png

versicolor
(50, 5)
sepal length (cm)

da_handson_basic_statistic_values_25_9.png

sepal width (cm)

da_handson_basic_statistic_values_25_11.png

petal length (cm)

da_handson_basic_statistic_values_25_13.png

petal width (cm)

da_handson_basic_statistic_values_25_15.png

virginica
(50, 5)
sepal length (cm)

da_handson_basic_statistic_values_25_17.png

sepal width (cm)

da_handson_basic_statistic_values_25_19.png

petal length (cm)

da_handson_basic_statistic_values_25_21.png

petal width (cm)

da_handson_basic_statistic_values_25_23.png

Da die Datenmenge für jeden Typ gering ist (50), wird die Anzahl der Fächer (Trennzeichen für die Tabellierung) beim Erstellen eines Histogramms ungefähr auf 10 reduziert.

Bei Betrachtung für jeden Typ ist ersichtlich, dass die Verteilung aller Merkmalsgrößen grob durch die Gaußsche Verteilung dargestellt werden kann.

Die Gaußsche Verteilung für jeden Typ und jede Merkmalsmenge wird durch den Mittelwert und die Standardabweichung definiert. Aus der auf diese Weise erhaltenen Gaußschen Verteilung ist es möglich, sie als Klassifikator zu verwenden, da es möglich ist, eine Wahrscheinlichkeit für einen unbekannten Satz von Merkmalsgrößen zu erhalten (ich möchte dies erklären, wenn ich über die Erkennung von Anomalien spreche).

Referenz

Recommended Posts

Grundlegende Statistik und Gaußsche Verteilung
Gemischte Gaußsche Verteilung und logsumexp
Fuzzing und Statistiken
Verteilung und Test
OS- und Linux-Distribution
Grundbegriffe für CLI und Linux
Python-Installation und grundlegende Grammatik
EM der gemischten Gaußschen Verteilung
[Statistik] Lassen Sie uns die Beziehung zwischen der Normalverteilung und der Chi-Quadrat-Verteilung visualisieren.
Hypothesentest und Wahrscheinlichkeitsverteilung
Python (Python 3.7.7) Installation und grundlegende Grammatik
Grundkenntnisse in Linux und Grundbefehle
Vergleich der grundlegenden Grammatik zwischen Java und Python
Basisauthentifizierung, Digest-Authentifizierung mit Flask
Python-Grundkurs (14 Module und Pakete)
1. Mit Python 1-1 gelernte Statistiken. Grundlegende Statistiken (Pandas)
[Einführung in Datenwissenschaftler] Grundlagen der Wahrscheinlichkeit und Statistik ♬ Wahrscheinlichkeits- / Wahrscheinlichkeitsvariable und Wahrscheinlichkeitsverteilung