[PYTHON] [Introduction aux data scientists] Bases de la probabilité et des statistiques ♬ Variable de probabilité / probabilité et distribution de probabilité

Jusqu'à la dernière fois, [Introduction to Data Scientists] Statistiques descriptives et analyse de régression simple a été résumé. Cette fois, nous résumerons la variable de probabilité / probabilité et la distribution de probabilité comme base de la probabilité et des statistiques. Je compléterai les explications de ce livre. 【Mise en garde】 ["Cours de formation de scientifique des données à l'Université de Tokyo"](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3 % 81% AE% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% B5% E3% 82% A4% E3% 82% A8% E3% 83% B3% E3% 83 % 86% E3% 82% A3% E3% 82% B9% E3% 83% 88% E8% 82% B2% E6% 88% 90% E8% AC% 9B% E5% BA% A7-Python% E3% 81 % A7% E6% 89% 8B% E3% 82% 92% E5% 8B% 95% E3% 81% 8B% E3% 81% 97% E3% 81% A6% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E2% 80% 95% E3% 82% BF% E5% 88% 86% E6% 9E% 90-% E5% A1% 9A% E6% 9C% AC% E9% 82% A6% Je vais lire E5% B0% 8A / dp / 4839965250 / ref = tmm_pap_swatch_0? _ Encoding = UTF8 & qid = & sr =) et résumer les parties que j'ai des doutes ou que je trouve utiles. Par conséquent, je pense que le synopsis sera simple, mais veuillez le lire en pensant que le contenu n'a rien à voir avec ce livre.

Chapitre 4 Principes de base des probabilités et statistiques

Chapitre 4-1 Préparation à l'apprentissage des probabilités et des statistiques

4-1-2 Importer une bibliothèque

Importez la bibliothèque utilisée dans ce chapitre.

import numpy as np
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame

import matplotlib as mpl
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
np.random.seed(0)

Chapitre 4-2 Probabilité

Probabilité, essai, événement racine, espace échantillon, événement, probabilité conditionnelle, théorème bayésien, pré-probabilité, post-probabilité

4-2-1 Probabilité mathématique

En utilisant les dés comme matière, apprenez les termes et les concepts nécessaires à l'apprentissage des probabilités.

#Valeurs possibles des dés
dice_data =np.array([1,2,3,4,5,6])
Événement 4-2-1-1

Chaque événement; événement racine

print('Un seul extrait au hasard', np.random.choice(dice_data,1))
#Un seul extrait au hasard[3]

Ensemble de tous les événements racine: Espace échantillon Ω Sous-ensemble arbitraire d'espace échantillon: événements

Ici, si vous passez de 1 à 10, ce qui suit se produit également

print('Extraire au hasard 10', np.random.choice(dice_data,10))
#Extraire au hasard 10[2 3 4 2 2 1 6 2 2 5]
\begin{align}
&L'agenda de Kolmogorov\\
&Probabilité P qu'un certain événement E (événement) se produise(E)Si vous écrivez, voici l'ordre du jour.\\
&Agenda 1: 0 pour tous les événements A\leq P(A)\leq 1\\
&Apocalypse 2; P(\Omega)=1\\
&Atheory 3: événements supplémentaires qui s'excluent mutuellement, A_1,A_2,A_3,.. .. .. Contre\\
&P(A_1\cup A_2\cup A_3\cup...)=P(A_1)+P(A_2)+P(A_3)+...=\Sigma_i P(A_i)\\
\end{align}

Bien qu'il soit différent de l'ordre du jour de ce livre, il est cité dans l'ouvrage de référence. Apocalypse 3 de ce livre décrit le cas de $ A_1 $, $ A_2 $. 【référence】 [Cours d'ingénierie de base en mathématiques sur les probabilités / statistiques I p6 de l'Université de Tokyo](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%E7%B3%BB-%E6%95 % B0% E5% AD% A6-% E7% A2% BA% E7% 8E% 87% E3% 83% BB% E7% B5% B1% E8% A8% 88I-% E6% 9D% B1% E4% BA % AC% E5% A4% A7% E5% AD% A6% E5% B7% A5% E5% AD% A6% E6% 95% 99% E7% A8% 8B-% E7% B8% 84% E7% 94% B0 / dp / 4621087150)

4-2-1-2 Evénement vide

L'événement vide $ \ phi $ est un événement qui n'a aucun élément. Par exemple, lorsque A et B sont des événements d'exclusion, $ A \ cap B $ est un événement vide $ \ phi $. $ P (\ phi) = 0 $.

4-2-1-3 Événements supplémentaires

Un événement qui n'appartient pas à un certain événement E est appelé un événement résiduel. Ceci est également appelé le complément d'E. Exprimé en utilisant c en complément.

E=\{2,4,6\}\\
E^c=\{1,3,5\}
4-2-1-4 Événement produit et événement somme
A=\{1,2,3\}\\
B=\{1,3,4,5\}

$ A \ cap B $; Événement produit

A\cap B = \{1,3\}

$ A \ cup B $; événement de somme

A\cup B = \{1,2,3,4,5\}
4-2-1-5 Calcul de la probabilité

Calculez la probabilité que "l'événement X avec 3", "événement vide", "événement produit de A et B" et "événement somme de A et B" se produisent respectivement.

\begin{align}
P(X) &= \frac{1}{6}\\
P(\phi ) &= 0\\
P(A\cap B)&=\frac{1}{3}\\
P(A\cup B)&=\frac{5}{6}\\
\end{align}
4-2-2 Probabilité statistique

Probabilité de lancer de dés

Nombre d'essais 1 2 3 4 5 6
1 0.0 0.0 1.0 0.0 0.0 0.0
10 0.1 0.5 0.2 0.1 0.1 0.0
100 0.16 0.17 0.18 0.19 0.18 0.12
1000 0.176 0.152 0.18 0.158 0.164 0.17
10000 0.1695 0.1701 0.1642 0.166 0.1617 0.1685
100000 0.16776 0.16621 0.16661 0.16573 0.16724 0.16645
1000000 0.166517 0.166637 0.166131 0.16692 0.166876 0.166919

Voici mon opinion personnelle. .. .. Je pense que ce résultat est intéressant. En d'autres termes, même s'il y a 6 candidats et que les électeurs choisissent uniformément (au hasard), le résultat sera différent en fonction du nombre d'essais (nombre d'électeurs), donc il y a un léger avantage avec environ 1000 électeurs. Dans ce cas, le résultat n'est pas fiable. Ainsi, la vérité ne peut être vue sans vérifier statistiquement la supériorité, et un vote n'est pas soigneusement voté.

calc_steps = 1000
print('calc_steps=',calc_steps)
dice_rolls = np.random.choice(dice_data,calc_steps)
for i in range(1,7):
    p = len(dice_rolls[dice_rolls==i])/calc_steps
    print(i, 'Probabilité d'apparaître;', p)
4-2-3 Probabilité conditionnelle et théorème du multiplicateur

La probabilité que l'événement B se produise sous la condition que l'événement A se soit produit est appelée probabilité conditionnelle de B sous la condition que A est donné.

P(B|A)=\frac{P(A\cap B)}{P(A)}

Il est exprimé comme. Cette formule se transforme comme suit et s'appelle ** Théorème du multiplicateur **.

P(A\cap B)=P(B|A)P(A)

Exemple concret; Même les yeux sur les dés A={2,4,6} 4 événements ou plus B={4,5,6} Événement produit de A et B $A\cap B = ${4,6}

P(B|A)=\frac{P(A\cap B)}{P(A)}=\frac{\frac{2}{6}}{\frac{3}{6}}=\frac{2}{3}
4-2-4 Indépendance et subordination

Le fait que l'événement A et l'événement B soient indépendants l'un de l'autre signifie

P(A|B)=P(A)

Est vrai. À ce stade, ce qui suit tient du théorème de multiplication.

P(A\cap B)=P(A)P(B)

Si cette formule ne tient pas, alors l'événement A et l'événement B sont dits dépendants l'un de l'autre. Considérant l'exemple de dés ci-dessus, c'est comme suit.

\begin{align}
P(A\cap B)&=\frac{2}{6}&=\frac{1}{3}\\
P(A)P(B)&=\frac{3}{6}\frac{3}{6}&=\frac{1}{4}
\end{align}

On voit que l'événement A et l'événement B ne sont pas indépendants mais dépendants car ils ne sont pas égaux. Et quand «C = {1,3,5}»? Événement produit de A et C $A\cap C = ${} Encore une fois, ce n'est pas égal à 0 et $ \ frac {1} {4} $, respectivement, et est une dépendance.

4-2-5 Théorème de Bayes

J'expliquerai le théorème de Bayes. Cité de la référence «Parfois, nous voulons connaître la cause B à partir du résultat A ... Dans un tel cas, la probabilité conditionnelle P de B avec A comme condition.(B|A)Est requis. Ce qui est requis dans les expériences et les enquêtes est P(A|B)Donc P(B|A)Vous avez besoin d'une équation pour calculer. " Compte tenu des probabilités conditionnelles ci-dessus, si nous considérons A comme l'événement résultant et B comme l'événement causal, nous obtenons le théorème bayésien suivant. Il s'agit de trouver la probabilité que la cause soit un événement B lorsque le résultat de A est connu. Notez que $ B ^ c $ est un complément de B.

P(B|A)=\frac{P(B\cap A)}{P(A)}\\
∵P(A\cap B)=P(B\cap A)\\
=\frac{P(A|B)P(B)}{P(A)}\\
=\frac{P(A|B)P(B)}{P(A|B)P(B)+P(A|B^c)P(B^c)}\\

P (B); Probabilité de l'événement B avant l'événement A; Pré-probabilité P (B | A); Probabilité de l'événement B après l'événement A; Probabilité postérieure P (A | B); probabilité que A se produise si B se produit; probabilité;

Je fais référence à ce qui suit. 【référence】 [Cours d'ingénierie de base en mathématiques sur les probabilités / statistiques I p18 de l'Université de Tokyo](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%E7%B3%BB-%E6%95 % B0% E5% AD% A6-% E7% A2% BA% E7% 8E% 87% E3% 83% BB% E7% B5% B1% E8% A8% 88I-% E6% 9D% B1% E4% BA % AC% E5% A4% A7% E5% AD% A6% E5% B7% A5% E5% AD% A6% E6% 95% 99% E7% A8% 8B-% E7% B8% 84% E7% 94% B0 / dp / 4621087150) "Il y a k événements causaux de $ B_1, B_2, ..., B_k $, et ces événements sont des événements mutuellement exclusifs, et aucun autre événement ne se produit."

P(A)=P[\cup _{i=1}^{k}(A\cap B_i)]\\
=\sum _{i=1}^{k}P(A\cap B_i)\\
=\sum _{i=1}^{k}P(A|B_i)P(B_i)

Sera. Substituer ceci dans l'équation ci-dessus

P(B_i|A)=\frac{P(A|B_i)P(B_i)}{\sum _{j=1}^{k}P(A|B_j)P(B_j)}

Exercice 4-1

Nombre d'essais table retour
10 0.6 0.4
100 0.51 0.49
1000 0.479 0.521
10000 0.505 0.495
100000 0.49939 0.50061
1000000 0.500783 0.499217
10000000 0.500065 0.499935
calc_steps = 1000
print('calc_steps=',calc_steps)
dice_rolls = np.random.choice(dice_data,calc_steps)
for i in range(0,2):
    p = len(dice_rolls[dice_rolls==i])/calc_steps
    print(i, 'Probabilité d'apparaître;', p)

Chapitre 4-3 Variables de probabilité et distribution de probabilité

Variable de probabilité, fonction de probabilité, fonction de densité de probabilité, valeur attendue, distribution uniforme, distribution de Bernoulli, distribution binomiale, distribution normale, distribution de Poisson, distribution normale logarithmique, estimation de la densité du noyau

4-3-1 Variable de probabilité, fonction de probabilité, fonction de distribution, valeur attendue

Une variable de probabilité est une variable à laquelle une probabilité est affectée à une valeur possible. Compte tenu des dés, les valeurs possibles des variables sont de 1 à 6 et la probabilité d'apparition est également affectée à 1/6, comme indiqué dans le tableau ci-dessous. Ici, la variable X est appelée une variable de probabilité, qui indique des valeurs possibles, et P (X) est la probabilité de chaque occurrence.

X 1 2 3 4 5 6
P(X) 1/6 1/6 1/6 1/6 1/6 1/6

La majuscule X représente une variable stochastique et la minuscule x représente sa valeur de réalisation. De plus, la majuscule P (X) montre la probabilité d'apparition et la minuscule p (x) la valeur réalisée.

\Sigma _{i=1}^6 p(x_i)= 1
4-3-1-1 Fonction de distribution

La partie "" ci-dessous est tirée de la référence p21 ci-dessus. "Lorsque la variable de probabilité X est discrète, ce qui suit est appelé la distribution de probabilité de X.

P(X=x_i) = f(x_i)

La probabilité à chaque point est une fonction de $ x $ (l'indice i est omis ci-dessous), et $ f (x) $ est appelée une fonction de probabilité. "

La fonction de distribution (fonction de distribution de probabilité cumulative) est définie ci-dessous.

F(X)=P(X\leq x) = \Sigma _{x_i \leq x}p(x_i)

Ici, dans le cas d'une variable de probabilité continue, la dérivée de la fonction de distribution est appelée fonction de densité (fonction de densité de probabilité) et est définie comme suit.

f(x)= \frac{dF(x)}{dx}
4-3-1-2 Valeur attendue (moyenne)

En supposant que la variable de probabilité X, la formule de définition de la valeur attendue E (X) est la suivante.

E(x)= \Sigma _x xf(x)

Par exemple, les dés sont les suivants.

\begin{align}
E(x)&= 1*\frac{1}{6}+2*\frac{1}{6}+3*\frac{1}{6}+4*\frac{1}{6}+5*\frac{1}{6}+6*\frac{1}{6}\\
&=\frac{21}{6}\\
&=3.5
\end{align}

4-3-2 Diverses fonctions de distribution

4-3-2-1 Distribution uniforme

Ceux qui ont la même probabilité que tous les événements se produisent sont appelés des distributions uniformes. Dans le cas des dés, c'est comme suit Figure_saikoro.png

prob_data = []
print('calc_steps=',calc_steps)
dice_rolls = np.random.choice(dice_data,calc_steps)
for i in range(1,7):
    p = len(dice_rolls[dice_rolls==i])/calc_steps
    prob_data.append(p)
    print(i, 'Probabilité d'apparaître;', p)
plt.bar(dice_data, prob_data)
plt.grid()
plt.show()

>python dice_choice.py
calc_steps= 1000
Probabilité de 1; 0.153
Probabilité de 2; 0.17
Probabilité de 3; 0.161
Probabilité de 4; 0.17
Probabilité de 5; 0.148
Probabilité de 6; 0.198
4-3-2-2 Distribution de Bernoulli

Essai de Bernoulli; essai avec résultats binaires Distribution de Bernoulli; probabilité que chaque événement se produise dans un seul essai de Bernoulli Si vous lancez des pièces, la probabilité que le front sorte, la probabilité que le dos sorte

Ce qui suit est la distribution de Bernoulli lorsque le résultat du lancement de pièces de monnaie huit fois est [0,0,0,0,0,1,1,1]. Figure_bernoui.png

prob_be_data = []
coin_data = np.array([0,0,0,0,0,1,1,1])
for i in np.unique(coin_data):
    p = len(coin_data[coin_data==i])/len(coin_data)
    prob_be_data.append(p)
    print(i, 'Probabilité d'apparaître;', p)
plt.bar([0,1], prob_be_data, align = 'center')
plt.xticks([0,1], ['head', 'tail'])
plt.grid()
plt.show()  

Probabilité de 0; 0.625
Probabilité de 1; 0.375

4-3-2-3 Obtenir des données basées sur la distribution en Python

Créez des données basées sur une distribution spécifique. Ci-dessous, nous examinerons les caractéristiques des données de distribution en calculant à l'aide de diverses fonctions de distribution de numpy.

4-3-2-4 Distribution binaire

La distribution binomiale est un essai de Bernoulli indépendant répété n fois. Il peut être généré comme suit. (30 essais, probabilité 0,5), quand j'ai essayé 1000 fois, c'est comme suit. Il y a une moyenne autour de 15 et la dispersion est de 30/4

np.random.seed(0)
x = np.random.binomial(30,0.5,1000)
print(x.mean(), x.var())
#14.98 7.6176
plt.hist(x)
plt.grid()
plt.show()

Figure_binom.png 10000sample Figure_binom10000.png

4-3-2-4 Distribution de Poisson

Nombre de gouttes de pluie par unité de surface, nombre d'arbres par mètre carré, etc. Le nombre qui devrait se produire dans une certaine section est 7 et l'échantillon 1000 est le suivant.

np.random.seed(0)
x = np.random.poisson(7,1000)
print(x.mean(), x.var())
#6.885 6.457775
plt.hist(x)
plt.grid()
plt.show()

Figure_poisson.png 10000sample Figure_poisson10000.png

4-3-2-5 Distribution normale et distribution normale logarithmique

Distribution normale mu; moyenne, sigma; écart-type

np.random.seed(0)
x = np.random.normal(5,10,1000)
print(x.mean(), x.var())
#4.547432925098047 97.42344563121543
plt.hist(x)
plt.grid()
plt.show()

Figure_normal.png Lognez la distribution normale avec l'axe logarithmique sur l'axe horizontal

np.random.seed(0)
mu, sigma = 3., 0.4
x = np.random.lognormal(mu,sigma,1000)
print(x.mean(), x.var())
#21.329823289919993 76.9718785871209
plt.hist(x)
plt.grid()
plt.show()

Figure_lognormal-.png Comme il est difficile de comprendre la signification de la moyenne et de l'écart type, tout en regardant la référence, Normalisons l'axe vertical et alignons-le avec celui calculé par la formule.

s = np.random.lognormal(mu, sigma, 1000)
count, bins, ignored = plt.hist(s, bins=12, range =(0,60), density=True, align='mid')
x = np.linspace(min(bins), max(bins),120)
pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))/ (x * sigma * np.sqrt(2 * np.pi)))
plt.plot(x, pdf, linewidth=2, color='r')
plt.axis('tight')
plt.show()

Figure_lognormal1000calcdensity.png

4-3-3 Fonction de densité du noyau

Estimer la fonction de densité en utilisant les données données. Pour estimer les données d'absentéisme à l'aide de la fonction de densité du noyau, procédez comme suit:

student_data_math = pd.read_csv('./chap3/student-mat.csv', sep =';')

student_data_math.absences.plot(kind='kde', style='k--')
student_data_math.absences.hist(density=True,align='mid')
plt.grid()
plt.show()

Figure_kde.png Je ne comprends pas quel type de fonction kde suppose, donc d'après la référence 【référence】 [Estimation de la densité du noyau @wikipedia](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E5%AF%86] % E5% BA% A6% E6% 8E% A8% E5% AE% 9A #: ~: texte =% E3% 82% AB% E3% 83% BC% E3% 83% 8D% E3% 83% AB% E5 % AF% 86% E5% BA% A6% E6% 8E% A8% E5% AE% 9A% EF% BC% 88% E3% 82% AB% E3% 83% BC% E3% 83% 8D% E3% 83 % AB% E3% 81% BF% E3% 81% A4,% E3% 83% 8E% E3% 83% B3% E3% 83% 91% E3% 83% A9% E3% 83% A1% E3% 83% 88% E3% 83% AA% E3% 83% 83% E3% 82% AF% E6% 89% 8B% E6% B3% 95% E3% 81% AE% E3% 81% B2% E3% 81% A8% E3% 81% A4% E3% 80% 82 & texte =% E5% A4% A7% E3% 81% BE% E3% 81% 8B% E3% 81% AB% E8% A8% 80% E3% 81% 88% E3 % 81% B0% E3% 80% 81% E3% 81% 82% E3% 82% 8B,% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% 92% E5% A4% 96% E6% 8C% BF% E3% 81% A7% E3% 81% 8D% E3% 82% 8B% E3% 80% 82) "Soit x1, x2, ..., xn des échantillons provenant de distributions identiques indépendantes avec une fonction de densité de probabilité (inconnue). Fonction noyau K, estimation de la densité du noyau de la largeur de bande (paramètre de lissage) h. Qu'est-ce que l'estimateur de densité de noyau)?

\begin{align}
f(x)&=\frac{1}{nh}∑^n_{i=1}K(\frac{x−X_i}{h})\\
\\
Ici noyau normal&La distribution normale suivante est utilisée pour la fonction.\\
\\
K(x)&=\frac{1}{2\pi}e^{\frac{x^2}{2}}\\
\end{align}

Chapitre 4-4 Distribution de probabilité multidimensionnelle

Distribution de probabilité simultanée, fonction de probabilité périphérique, fonction de probabilité conditionnelle, moyenne conditionnelle, matrice de covariance distribuée, distribution normale multidimensionnelle

4-4-1 Fonction de probabilité simultanée et fonction de probabilité périphérique

Considérons une variable de probabilité discrète où X prend une valeur sur $ {x_0, x_1, ...} $ et Y prend une valeur sur $ {y_0, y_1, ...} $. Si les probabilités de $ X = x_i $ et $ Y = y_i $ sont écrites comme suit, ce qui suit est appelé une fonction de probabilité simultanée.

P(X=x_i, Y=y_i) = p_{X,Y}\{x_i,y_i\}

Ce qui suit est appelé la fonction de probabilité périphérique de X.

P_X(x_i) = \Sigma _{j=0}^{\infty }p_{X,Y}\{x_i,y_i\}

Y est défini de la même manière.

4-4-2 Fonction de probabilité conditionnelle et valeur attendue conditionnelle

La fonction de probabilité conditionnelle de $ Y = y_i $ étant donné $ X = x_i $ peut être définie comme suit.

p_{Y|X}(y_j|x_i)=P(Y=y_j|X=x_i)=\frac{p_{X,Y}(x_i,y_j)}{p_X(x_i)}

De plus, l'espérance conditionnelle de Y lorsque $ X = x_i $ est donnée est la suivante.

E[Y|X=x_i]=\Sigma _{j=1}^{\infty }y_jp_{Y|X}(y_j|x_i)=\frac{\Sigma _{j=1}^{\infty }y_ip_{X,Y}(x_i,y_j)}{p_X(x_i)}

4-4-3 Définition de l'indépendance et de la distribution continue

La définition de l'indépendance en deux variables est supposée indépendante pour tout xi, yi lorsque ce qui suit est vrai.

p_{X|Y}(x_i|y_j)=p_X(x_i)p_Y(y_j)

En ce qui concerne la distribution continue, la fonction de densité de probabilité simultanée, la fonction de densité de probabilité périphérique, la fonction de densité de probabilité conditionnelle, la définition indépendante, etc. peuvent être définies, mais elles sont omises.

4-4-3-1 Afficher une distribution normale bidimensionnelle sous forme de graphique

Le graphique suivant a été affiché dans le programme suivant.

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as st
from scipy.stats import multivariate_normal
from mpl_toolkits.mplot3d import Axes3D

x,y =np.mgrid[10:100:2,10:100:2]

pos = np.empty(x.shape + (2,))
pos[:,:,0]=x
pos[:,:,1]=y

rv = multivariate_normal([50,50],[[100,0],[0,100]])
z=rv.pdf(pos)

fig = plt.figure(dpi=100)
ax=Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
ax.ticklabel_format(style='sci', axis = 'z',scilimits=(0,0))
plt.show()

Figure_fxy_gauss.png Le programme est un peu difficile, alors je vais vous l'expliquer. Il est important de comprendre les deux lignes suivantes.

rv = multivariate_normal([50,50],[[100,0],[0,100]])
z=rv.pdf(pos)

Les références suivantes vous aideront à comprendre. 【référence】 ① [Distribution normale multivariée @wikipedia](https://ja.wikipedia.org/wiki/%E5%A4%9A%E5%A4%89%E9%87%8F%E6%AD%A3%E8%A6 % 8F% E5% 88% 86% E5% B8% 83) ② Générer des données qui suivent une distribution normale multidimensionnelle Selon la référence (2), le code ci-dessus peut être écrit comme suit. Où mu est la moyenne et sigma est la matrice de covariance.

mu = [50,50]
sigma = [[100,0],[0,100]]
rv = multivariate_normal(mu, sigma)

La formule est la suivante.

\mu=\begin{pmatrix}\mu_x \\ \mu_y \end{pmatrix}\\
\sum=
\begin{pmatrix} \sigma_x^2 & Cov(x,y) \\ Cov(y,x) & \sigma_y^2 \end{pmatrix}\\
=\begin{pmatrix} \sigma_x^2 & \rho \sigma_x\sigma_y \\ \rho\sigma_y\sigma_x & \sigma_y^2 \end{pmatrix}

Autrement dit, ici c'est comme suit.

\mu=\begin{pmatrix} 50 \\ 50\end{pmatrix}\\
\sum=\begin{pmatrix}100 & 0 \\ 0 & 100\end{pmatrix}

Et toute la formule de multivariate_normal (mu, sigma) est calculée par grille avec z = rv.pdf (pos) pour l'ensemble de (x, y) ci-dessous.

f(x,y)=\frac{1}{2\pi\sigma_x\sigma_y\sqrt{1-\rho^2}}\exp(-\frac{1}{2(1-\rho^2)}[\frac{(x-\mu_x)^2}{\sigma_x^2}+\frac{(y-\mu_y)^2}{\sigma_y^2}-\frac{2\rho(x-\mu_x)(y-\mu_y)}{\sigma_x\sigma_y}])

De plus, presque le même code est affiché dans la référence ③ ci-dessous. 【référence】 ③Python plot 3d scatter and densityscipy.stats.multivariate_normal Aussi, pour comprendre z = rv.pdf (pos), pdf a la signification suivante et prend un argument tel qu'il est écrit comme un bonus. J'utilise: pdf=Probability density function.

Définition de la fonction et calcul d'origine

【référence】 Python 3: Comment écrire un graphe 3D (matplotlib, pyplot, mplot3d, MPL) Le code est comme suit.

def func(x,y):
    mux,muy,sigmax,sigmay,rho=50.,50.,10.,10.,0.
    fxy=np.exp(-((x-mux)**2/(sigmax**2) + (y-muy)**2/(sigmay**2)-2*rho*(x-mux)*(y-muy)/(sigmax*sigmay))/2*(1-rho**2))/(2*np.pi*sigmax*sigmay*np.sqrt(1-rho**2))
    return fxy

x,y =np.mgrid[10:100:2,10:100:2]
z=func(x,y)

fig = plt.figure(dpi=100)
ax=Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x,y)')
ax.ticklabel_format(style='sci', axis = 'z',scilimits=(0,0))
plt.show()

Puisque l'apparence est la même, la même image a été obtenue comme ci-dessous. Figure_fxy_gauss_original.png Lorsque mux, muy, sigmax, sigmay, rho = 50., 50., 10., 10., 0.3 Figure_fxy_gauss_rho03-.png Et rv = multivariate_normal([50,50],[[100,30],[30,100]]) Lorsque j'ai calculé avec, le même résultat a été obtenu comme suit. Figure_fxy_gauss_cov30.png

prime

Ce qui est requis comme rv.Methods () of rv = multivariate_normal (mu, sigma)

Methods Commentaire
pdf(x, mean=None, cov=1, allow_singular=False) Probability density function.
logpdf(x, mean=None, cov=1, allow_singular=False) Log of the probability density function.
cdf(x, mean=None, cov=1, allow_singular=False, maxpts=1000000*dim, abseps=1e-5, releps=1e-5) Cumulative distribution function.
logcdf(x, mean=None, cov=1, allow_singular=False, maxpts=1000000*dim, abseps=1e-5, releps=1e-5) Log of the cumulative distribution function.
rvs(mean=None, cov=1, size=1, random_state=None) Draw random samples from a multivariate normal distribution.
entropy() Compute the differential entropy of the multivariate normal.

Recommended Posts

[Introduction aux data scientists] Bases de la probabilité et des statistiques ♬ Variable de probabilité / probabilité et distribution de probabilité
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
[Introduction au Data Scientist] Bases de Python ♬
[Introduction to Data Scientists] Bases de Python ♬ Branchements conditionnels et boucles
[Introduction aux Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc.
[Introduction aux Data Scientists] Statistiques descriptives et analyse de régression simple ♬
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessins graphiques graph Bases de Scipy
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessins graphiques graph Bases de Pandas
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessin de graphes ♬ Bases de Matplotlib
[Bases des statistiques mathématiques modernes avec python] Chapitre 2: Distribution des probabilités et valeur attendue
[Introduction to Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessins graphiques ♬ Construction d'environnement
[Statistiques pour les programmeurs] Variables de probabilité, distributions de probabilité et fonctions de densité de probabilité
[Introduction à cx_Oracle] (Partie 2) Principes de base de la connexion et de la déconnexion à Oracle Database
[Bases des statistiques mathématiques modernes avec python] Chapitre 3: Distribution de probabilité typique
Statistiques mathématiques des bases Variables probabilistes
Résumé des distributions de probabilité qui apparaissent souvent dans les statistiques et l'analyse des données
[Revue statistique] Quatre règles de variables stochastiques
[Python] Chapitre 02-01 Bases des programmes Python (opérations et variables)
Concept de raisonnement bayésien (2) ... Estimation bayésienne et distribution de probabilité
[Introduction à cx_Oracle] (5e) Gestion des données japonaises
[Introduction à cx_Oracle] (Partie 7) Gestion des variables de liaison
[Introduction aux statistiques] Quel type de distribution est la distribution t, la distribution chi carré et la distribution F? Un petit résumé de l'utilisation de [python]
Il est temps de réfléchir sérieusement à la définition et aux compétences des data scientists
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
[Introduction à cx_Oracle] (Partie 11) Bases de l'exécution PL / SQL
[Bases des statistiques mathématiques modernes avec python] Chapitre 1: Probabilité
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
[Introduction à cx_Oracle] (Partie 4) Récupération et défilement du jeu de résultats
Introduction aux statistiques Exercices du chapitre 2 de la presse de l'Université de Tokyo
[Introduction à Scipy] Calcul de la courbe de Lorenz et du coefficient de Gini ♬
Introduction de DataLiner ver.1.3 et comment utiliser Union Append
1. Statistiques apprises avec Python 2. Distribution des probabilités [Compréhension approfondie de scipy.stats]
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
Mémo sur la façon de faire (approximer) deux variables corrélées, dont chacune suit une distribution arbitraire
[Introduction à cx_Oracle] Présentation de cx_Oracle
Introduction à la détection des anomalies 1 principes de base
Statistiques de base et distribution gaussienne
Test d'hypothèse et distribution de probabilité
Introduction et astuces de mlflow.
Prédiction de probabilité de données déséquilibrées
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie4-
[Introduction à Udemy Python3 + Application] 69. Importation du chemin absolu et du chemin relatif
Apprenez les méthodes M-H et HMC en lisant les statistiques bayésiennes à partir des bases
[Introduction à l'application Udemy Python3 +] 12. Indexation et découpage des chaînes de caractères
Introduction à TensorFlow - Résumé de quatre règles et fonctions mathématiques de base
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie3-