Le cahier jupyter est disponible ci-dessous.
https://gist.github.com/hnishi/544c77e35b98b737bbd004a1a9ac8924
--Une statistique récapitulative est une valeur statistique qui résume généralement les caractéristiques de la distribution d'un échantillon et qui est un type de statistique.
Voici un exemple de statistique récapitulative
Défini dans.
Moment primaire autour de l'origine $ \ mu $. La somme divisée par le nombre.
Statistiques obtenues à partir du moment central du second ordre. Représente la répartition de la distribution.
Distribution: $ \ sigma ^ 2 = \ mu_2 $ Écart type: $ \ sigma = \ sqrt {\ mu_2} $
Statistiques obtenues à partir du moment central du troisième ordre. Représente le degré d'asymétrie gauche-droite de la distribution.
Statistiques obtenues à partir du 4e moment central. Représente la netteté des pics de distribution (la largeur de la base).
Cependant, certaines définitions ne soustraient pas 3.
[1]: Le terme "* m * prochain moment central" est utilisé par Kei Takeuchi (représentant du comité de rédaction) "Dictionnaire des statistiques" Toyo Keizai Shinposha, D'après 1989.
Ci-dessous, * N * données triées par ordre croissant Considérons une statistique (statistique d'ordre) pour $ x_1 \ le x_2 \ le \ dots \ le x_N $.
Médiane, médiane
Aussi appelé. Données qui sont juste au centre de la taille des données
Moyenne hors valeurs maximales et minimales. Si vous augmentez le nombre d'exclusions, la valeur finale sera la valeur médiane. Par conséquent, la valeur médiane est l'une des moyennes élaguées [^ 1].
Lors de la division d'un groupe en quatre parties égales par la taille de la valeur, la valeur qui devient la limite. $ x_ {(N + 3) / 4} $ Le premier quadrant, $ x_ {(3N + 1) / 4} $ Est appelé le troisième quadrant. $ x_ {(2N + 2) / 4} $ Autrement dit, le deuxième quadrant est la valeur médiane.
La plus petite valeur $ x_1 $ et la plus grande valeur $ x_N $ dans la population.
Un diagramme de moustaches de boîte est utilisé pour visualiser ces statistiques.
La valeur obtenue en ajoutant la valeur maximale et la valeur minimale et en divisant par 2 est appelée valeur médiane et est parfois utilisée comme valeur représentative.
La différence entre la valeur maximale et la valeur minimale est appelée plage et est parfois utilisée comme valeur représentative. Utilisez R comme symbole.
[^ 1]: Yasuo Nishioka, Tutoriel de mathématiques Parler doucement des statistiques de probabilité, Ohm, p.5, p.52013, ISBN 9784274214073
Mode, nombre moyen Aussi appelé. Parmi les données, la valeur indiquant la fréquence la plus élevée dans la distribution de fréquence, c'est-à-dire la valeur des données qui apparaît le plus fréquemment.
Dispersion impartiale $ u ^ 2 $
La variance normale de la population utilise la variance normale et la variance sans biais est utilisée pour déduire la variance de la population à partir de l'échantillon. La fonction Excel var () calcule la distribution non biaisée.
Dans le domaine de l'apprentissage automatique, la dispersion décrite ci-dessus est souvent utilisée à la place de la dispersion non biaisée. (Quoi que vous utilisiez, vous pouvez obtenir des résultats similaires et avoir presque la même interprétation.)
Référence: https://www.heisei-u.ac.jp/ba/fukui/pdf/stattext05.pdf
――Qu'est-ce que les données IRIS?
Données réputées pour l'apprentissage automatique. IRIS signifie la fleur de "Ayame" et est distribué par l'UCI (Université de Californie, Irvine) comme données pour l'étude de l'apprentissage automatique et de l'exploration de données.
Les types d'Ayame sont les suivants.
--Setosa --Versicolore --Virginica
Ces données sont analysées à partir des informations suivantes.
L'unité est le cm.
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]
#Vous pouvez facilement sortir les principales statistiques avec les pandas.
#Bien sûr, chacun peut être sorti individuellement, mais il est omis ici.
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 |
#Confirmation des données
plt.show(sns.pairplot(data=iris_df, hue='name', vars=iris.feature_names, diag_kind='hist', palette='spring'))
Lorsqu'un échantillon a deux ou plusieurs quantités d'entités, la quantité d'entités 1, $ x ^ {\ left (1 \ right)} $ et la quantité d'entités 2, $ x ^ {\ left (2 \ right)} La covariance entre $ et est exprimée comme suit.
cov(x^{(1)}, x^{(2)}) = \frac{1}{N} \sum_{i = 1}^N (x^{(1)}_{i} - \mu^{(1)}) (x^{(2)}_{i} - \mu^{(2)})
S'il existe une corrélation positive entre les deux quantités de caractéristiques, il prend une valeur positive et s'il existe une corrélation négative, il prend une valeur négative. L'amplitude de la valeur indique la force de la corrélation. Cependant, ce n'est que lorsque les unités (échelles) des deux quantités d'entités sont identiques.
La covariance (matrice) sera utilisée dans l'analyse en composantes principales (analyse ACP), qui sera introduite la prochaine fois (?).
https://ja.wikipedia.org/wiki/%E5%85%B1%E5%88%86%E6%95%A3
Considérez le vecteur de colonne suivant. $ X_1, X_2, ..., X_m $ représentent m caractéristiques différentes.
Lorsque les éléments de ce vecteur sont des variables stochastiques dont les variances sont finies, la matrice Σ dont les éléments de («i», «j») sont les suivants est appelée matrice co-distribuée distribuée.
N est le nombre d'échantillons. Autrement dit, une matrice dans laquelle les composants diagonaux sont dispersés et d'autres composants sont co-distribués est appelée matrice de co-dispersion distribuée.
Vous pouvez voir la covariance de toutes les paires d'entités.
La matrice de distribution de co-distribution de chaque caractéristique de l'ensemble de données d'iris est présentée ci-dessous sous forme de carte thermique. Les composants diagonaux sont dispersés et les autres composants sont co-dispersés. Par exemple, on peut voir qu'il existe une corrélation positive entre la longueur des pétales et la longueur des sépales.
import numpy as np
#Créer une matrice de covariance
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)
Puisque la valeur numérique de la covariance est déterminée par la taille de la valeur d'origine, il est difficile de l'interpréter lors de la comparaison de plusieurs variables avec des unités différentes. Par exemple, même si vous calculez la co-distribution de la population de chaque ville et les ventes de magasins de ramen sur une base municipale, il est difficile de comprendre la signification des chiffres.
Par conséquent, lorsque l'on examine la relation, il est courant d'utiliser le coefficient de corrélation.
Le coefficient de corrélation est la valeur de la covariance divisée par le produit des écarts-types de chaque variable. Le coefficient de corrélation prend une valeur de -1 à 1. Si 1, les valeurs des deux variables sont parfaitement synchronisées.
$ \ rho $ représente le coefficient de corrélation, et X et Y représentent différentes quantités d'entités.
Le coefficient de corrélation peut être considéré comme une covariance normalisée (indiquant la pertinence des données sans être affectée par l'unité).
La distribution gaussienne est la fonction de densité de probabilité la plus courante (une fonction dont l'intégration est une probabilité).
La moyenne $ \ mu $ représente le centre de la distribution et l'écart type $ \ sigma $ représente la largeur de la distribution.
Prenant un échantillon aléatoire x de la distribution normale N (μ, $ \ sigma ^ 2 $), la probabilité que x soit inclus dans la plage où l'écart par rapport à la moyenne μ est de ± 1σ ou moins est de 68,27%, et ± 2σ ou moins. S'il est de 95,45% et ± 3σ, il sera de 99,73%.
La distribution normale n'est pas seulement la base de l'idée de diverses distributions telles que la distribution t et la distribution F, mais est également utilisée dans diverses situations telles que le test d'hypothèse et l'estimation d'intervalle dans l'estimation statistique réelle.
référence:
Vous trouverez ci-dessous un histogramme de données générées aléatoirement selon la distribution gaussienne et une superposition de la distribution gaussienne.
mu est la valeur moyenne (centre de distribution) sigma est l'écart type (largeur de distribution)
import numpy as np
#Génération aléatoire selon la distribution gaussienne
mu, sigma = 0, 1 # mean and standard deviatin
np.random.seed(1)
s = np.random.normal(mu, sigma, 1000)
import matplotlib.pyplot as plt
#Créer un histogramme
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()
Vous pouvez confirmer que la distribution change en modifiant les valeurs de mu et sigma. De plus, puisqu'il s'agit d'une fonction de densité de probabilité, on peut imaginer à partir de la valeur sur l'axe vertical qu'elle devient 1 lorsqu'elle est intégrée sur toute la section sur l'axe horizontal.
À propos, dans la normalisation effectuée pour aligner les échelles des quantités de caractéristiques, le traitement suivant est effectué.
$ x_ {i_ {std}} $: Montant standardisé de la fonctionnalité $ x_i $ $ \ mu $: valeur moyenne $ \ sigma $: écart type
Ce processus convertit la valeur moyenne en 0 et l'écart type en 1. En d'autres termes, on peut dire que la distribution de chaque caractéristique est transformée de sorte qu'elle suit une distribution gaussienne avec un centre de 0 et une largeur de distribution de la même échelle, en supposant une distribution normale.
Cette méthode est plus pratique car elle est moins affectée par les valeurs aberrantes, par opposition à la mise à l'échelle min-max (souvent appelée normalisation), qui met à l'échelle les données à une plage limitée de valeurs. Je peux dire.
(Des mots tels que normalisation et normalisation sont souvent utilisés de manière assez vague dans certains domaines, et il est nécessaire d'en déduire leur signification en fonction de la situation. De plus, l'opération de $ x_i- \ mu $ est appelée normalisation moyenne, et l'opération de $ 1 / \ sigma $ est appelée mise à l'échelle des caractéristiques. )
Ce qui précède est une distribution gaussienne créée artificiellement, il est donc naturel que la distribution soit similaire à l'histogramme.
Maintenant, il semble que la fonction gaussienne s'intègre parfaitement dans les données naturelles, alors vérifions-la en utilisant le jeu de données iris.
#Ajustement du jeu de données d'iris avec la fonction gaussienne
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()
#Créer un histogramme
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)
sepal width (cm)
petal length (cm)
petal width (cm)
Il semble que seule la largeur Sepal a une distribution gaussienne, mais d'autres caractéristiques n'ont pas de distribution gaussienne. D'après ces résultats, en regardant l'ensemble de données d'iris, la distribution gaussienne ne semble pas convenir pour représenter cette distribution.
Cela est probablement dû au fait que les données de plusieurs groupes (types d'iris) sont mélangées dans l'ensemble de données, essayez donc de dessiner une distribution gaussienne pour chaque étiquette (setosa, versicolor, virginica).
#Regardons la distribution pour chaque type
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()
#Créer un histogramme
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)
sepal width (cm)
petal length (cm)
petal width (cm)
versicolor
(50, 5)
sepal length (cm)
sepal width (cm)
petal length (cm)
petal width (cm)
virginica
(50, 5)
sepal length (cm)
sepal width (cm)
petal length (cm)
petal width (cm)
Étant donné que la quantité de données pour chaque type est faible (50), le nombre de casiers (séparateurs pour la tabulation) lors de la création d'un histogramme est approximativement réduit à 10.
Lorsqu'on regarde pour chaque type, on peut voir que la distribution de toutes les quantités d'entités peut être grossièrement représentée par la distribution gaussienne.
La distribution gaussienne pour chaque type et quantité d'entités est définie par la valeur moyenne et l'écart type. A partir de la distribution gaussienne ainsi obtenue, il est possible de l'utiliser comme classificateur car il est possible d'obtenir une probabilité pour un ensemble inconnu de quantités de caractéristiques (je voudrais l'expliquer quand on parle de détection d'anomalies).
Recommended Posts