1. Statistiques apprises avec Python 2-1. Distribution de probabilité [variable discrète]

#Import de la bibliothèque de calculs numériques
import numpy as np
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame
#Importer la bibliothèque de visualisation
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
%matplotlib inline
#Module d'affichage japonais de matplotlib
!pip install japanize-matplotlib
import japanize_matplotlib

⑴ Distribution Bernoulli

x = np.array([0,0,1,1,0,1,0,0])

#Calculer la distribution de probabilité
p = len(x[x==1]) / len(x)
pmf_bernoulli = sp.stats.bernoulli.pmf(x, p)

#Visualisation
plt.vlines(x, 0, pmf_bernoulli, 
           colors='blue', lw=50)
plt.xticks([0,1])
plt.xlim([0 - 0.5, 1 + 0.5])
plt.grid(True)

image.png

Deux types d'événements probabilité
0 0.625
1 0.375

⑵ Distribution binomiale

sp.stats.binom.pmf(n=5, p=0.5, k=2)

image.png

#Générer un nombre pseudo aléatoire
np.random.seed(1)
rvs_binom = sp.stats.binom.rvs(n=10, p=0.2, size=10000)

#Obtenir une distribution de probabilité
m = np.arange(0, 10+1, 1)
pmf_binom = sp.stats.binom.pmf(n=10, p=0.2, k=m)

#Visualisation
sns.distplot(rvs_binom, bins=m, 
             kde=False, norm_hist=True, label='rvs')
plt.plot(m, pmf_binom, label='pmf')
plt.xticks(m)
plt.legend()
plt.grid()

image.png

Nombre de fois où le tableau apparaît probabilité
0 0.107374182
1 0.268435456
2 0.301989888
3 0.201326592
4 0.088080384
5 0.026424115
6 0.005505024
7 0.000786432
8 0.000073728
9 0.000004096
10 0.000000102

⑶ Distribution de Poisson

sp.stats.poisson.pmf(k=2, mu=5)

image.png

#Générer un nombre pseudo aléatoire
np.random.seed(1)
rvs_poisson = sp.stats.poisson.rvs(mu=2, size=10000)

#Obtenir une distribution de probabilité
m = np.arange(0, 10+1, 1)
pmf_poisson = sp.stats.poisson.pmf(mu=2, k=m)

#Visualisation
sns.distplot(rvs_poisson, bins=m, 
             kde=False, norm_hist=True, label='rvs')
plt.plot(m, pmf_poisson, label='pmf')
plt.xticks(m)
plt.legend()
plt.grid()

image.png

Nombre d'occurrences probabilité
0 0.135335283
1 0.270670566
2 0.270670566
3 0.180447044
4 0.090223522
5 0.036089409
6 0.012029803
7 0.003437087
8 0.000859272
9 0.000190949
10 0.000038190
#Spécifiez les paramètres
n = 100000000
p = 0.00000002

#Calculer la distribution de probabilité de la distribution binomiale
num = np.arange(0, 10+1, 1)
pmf_binom_2 = sp.stats.binom.pmf(n=n, p=p, k=num)

#Visualisation
plt.plot(m, pmf_poisson, 
         color='lightgray', lw=10, label='poisson')
plt.plot(m, pmf_binom_2, 
         color='black', linestyle='dotted', label='binomial')
plt.xticks(num)
plt.legend()
plt.grid()

image.png

⑷ Distribution géométrique

%precision 3
sp.stats.geom.pmf(k=1, p=1/6)

image.png

#Spécifiez le nombre d'essais
num = np.arange(1, 11, 1)

#Calculer la distribution de probabilité
prob = []
for i in num:
    value = sp.stats.geom.pmf(k=i, p=1/6)
    prob.append(value)

#Visualisation
plt.bar(num, prob)
plt.xticks(num)
plt.xlabel('Nombre de fois jusqu'à ce que 1 apparaisse pour la première fois')
plt.ylabel('probabilité')
plt.show()

image.png

Nombre d'essais probabilité une formule
1 0.167
2 0.139 ⅚ ・ ⅙
3 0.116 ⅚ ・ ⅚ ・ ⅙
4 0.096 ⅚ ・ ⅚ ・ ⅚ ・ ⅙
5 0.080 ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙
6 0.067 ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙
7 0.056 ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙
8 0.047 ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙
9 0.039 ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙
10 0.032 ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅚ ・ ⅙

⑸ Distribution uniforme

#Spécifiez tous les événements
num = np.arange(1, 7, 1)

#Calculer la distribution de probabilité
prob = []
for i in num:
    value = 1 / len(num)
    prob.append(value)

#Visualisation
plt.bar(num, prob)
plt.xticks(num)
plt.xlabel('Yeux de dés')
plt.ylabel('probabilité')
plt.show()

image.png

Yeux de dés probabilité
1 0.167
2 0.167
3 0.167
4 0.167
5 0.167
6 0.167

⑹ distribution hypergéométrique

#Spécifiez les paramètres
M = 20 #Nombre total
n = 7  #Nombre de visites
N = 12 #Nombre de sélections

#Créer une variable stochastique
k = np.arange(0, n+1)

#Créer un modèle
hgeom = sp.stats.hypergeom(M, n, N)
#Calculer la distribution de probabilité
pmf_hgeom = hgeom.pmf(k)

#Visualisation
plt.bar(k, pmf_hgeom)
plt.xticks(k)
plt.xlabel('Nombre de visites')
plt.ylabel('probabilité')
plt.show()

image.png

Nombre de visites probabilité
0 0.00010
1 0.00433
2 0.04768
3 0.19866
4 0.35759
5 0.28607
6 0.09536
7 0.01022

⑺ Distribution binomiale négative

#Spécifiez les paramètres
N = 12  #Nombre d'essais
p = 0.5 #Probabilité de succès
k = 3   #Nombre de succès

#Calculer la distribution de probabilité
pmf_nbinom = sp.stats.nbinom.pmf(range(N), k, p)

#Visualisation
plt.bar(range(N), pmf_nbinom)
plt.xlabel('Nombre de pannes')
plt.ylabel('probabilité')
plt.xticks(range(N))
plt.show()

image.png

Nombre de pannes probabilité
0 0.125
1 0.188
2 0.188
3 0.156
4 0.117
5 0.082
6 0.055
7 0.035
8 0.022
9 0.013
10 0.008
11 0.005

Sommaire

Nous avons examiné la distribution de probabilité discrète, mais nous la résumerons dans une liste avec une conscience de ce que sera la variable de probabilité et, en un mot, ce qu'il faut mettre sur l'axe des x.

Types de distribution de probabilité Variable probabiliste Paramètres
Distribution de Bernoulli Événement 0, 1 Probabilité d'occurrence p
Distribution binaire Nombre d'essais Probabilité d'occurrence p,Nombre d'occurrences k,Nombre d'essais n
Distribution de Poisson Nombre d'essais Nombre moyen d'occurrences mu
Distribution géométrique Nombre d'essais Probabilité de succès p,Nombre d'essais k
Distribution uniforme discrète Type d'événement ※scipy.La distribution uniforme des atats est de type continu uniquement
Distribution super géométrique Nombre de succès Nombre total M,Nombre de succès dans l'ensemble n,Nombre de sélections N
Distribution binomiale négative Nombre de pannes Probabilité de succès p,Nombre de succès k,Nombre d'essais N

Recommended Posts

1. Statistiques apprises avec Python 2-1. Distribution de probabilité [variable discrète]
1. Statistiques apprises avec Python 2. Distribution des probabilités [Compréhension approfondie de scipy.stats]
1. Statistiques apprises avec Python 1-1. Statistiques de base (Pandas)
[Bases des statistiques mathématiques modernes avec python] Chapitre 3: Distribution de probabilité typique
Distribution de probabilité de niveau 2 du test statistique apprise en Python ②
Distribution de probabilité de test statistique de niveau 2 apprise en Python
[Bases des statistiques mathématiques modernes avec python] Chapitre 2: Distribution des probabilités et valeur attendue
Calculer la distribution de l'échantillon avec Scipy (distribution discrète)
[Python] Programmation orientée objet apprise avec Pokemon
Expérience d'apprentissage Perceptron apprise avec Python
Structure de données Python apprise avec la chimioinfomatique
Ramassage efficace du réseau avec Python
Effectuer un tracé de probabilité normale logarithmique avec Python, matplotlib
[Test statistique niveau 2] Distribution de probabilité discrète
[Python] Récupère le nom de la variable avec str
Distribution totale automatique du deck JCG avec Python
Utiliser Python et word2vec (appris) avec Azure Databricks
Apprenez lentement avec Python "Principe de l'inversion des dépendances"
FizzBuzz en Python3
Grattage avec Python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
J'ai appris Python avec une belle fille à Paiza # 02
J'ai appris Python avec une belle fille à Paiza # 01
Vérifiez la nature atrophique de la distribution de probabilité en Python