Distribution de probabilité de niveau 2 du test statistique apprise en Python ②

introduction

En étudiant les tests statistiques, diverses distributions de probabilités apparaissent, mais je pense qu'il est difficile d'obtenir une image simplement en regardant les formules mathématiques. Tout en déplaçant divers paramètres avec Python, dessinez la distribution de probabilité et attachez l'image. (Le message précédent était ici. La dernière fois, nous nous sommes concentrés sur la distribution binomiale et la distribution de Poisson.)

référence

Pour l'explication de la distribution de probabilité, reportez-vous à ce qui suit.

Diverses distributions de probabilité

Cet article ne donne pas d'explications détaillées telles que la dérivation de diverses formules mathématiques, mais se concentre sur la compréhension de la forme de chaque distribution et la signification de cette distribution. Cet article traite des trois distributions suivantes.

Distribution géométrique

Le nombre de fois où $ X $ suit jusqu'au premier essai indépendant réussi (procès de Bernouy) avec seulement deux conséquences, comme "si la pièce est lancée au recto ou au verso" * * S'appelle une distribution géométrique. C'est très similaire car la distribution binomiale suit le nombre de réussites ** $ n $ fois **. (Pour la distribution binomiale, veuillez vous référer à Article précédent.)

――Le nombre de fois jusqu'à ce que 1 sort pour la première fois après avoir continué à lancer les dés ――Le nombre de fois jusqu'à ce que le front apparaisse pour la première fois après avoir continué à lancer des pièces

Etc. suivent une distribution géométrique.

La formule de la fonction de masse stochastique de la distribution géométrique est exprimée comme suit.


P(X = k) = p(1-p)^{k-1}

$ p $ est le taux de réussite de la tentative.

De plus, lorsque la variable de probabilité $ X $ suit une distribution géométrique, la valeur attendue $ E (X) $ et la variance $ V (X) $ sont les suivantes.


E(X) = \frac{1}{p}


V(X) = \frac{1-p}{p^2}

Par exemple, le nombre prévu d'essais jusqu'à ce que 1 soit lancé pour la première fois après avoir lancé les dés est $ \ frac {1} {\ frac {1} {6}} = 6 $.

Maintenant, dessinons comment la forme de la distribution géométrique change lorsque la valeur de $ p $ (probabilité de succès) change.


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def comb_(n, k):
    result = math.factorial(n) / (np.math.factorial(n - k) * np.math.factorial(k))
    return result

def geometric_dist(p, k):
    result = ((1 - p) ** (k - 1)) * p
    return result

fig = plt.figure()

def update(a):
    plt.cla()
    
    x =  np.arange(1, 50, 1)

    y = [geometric_dist(a,  i) for i in x]

    plt.bar(x, y, align="center", width=0.4, color="blue", 
                 alpha=0.5, label="binomial p= " + "{:.1f}".format(a))
    
    plt.legend()
    plt.ylim(0, 0.3)
    plt.xlim(0, 50)
    
    
ani = animation.FuncAnimation(fig,
                              update,
                              interval=1000,
                              frames = np.arange(0.1, 1, 0.1),
                              blit=True)
plt.show()
ani.save('Geometric_distribution.gif', writer='pillow') 

Geometric_distribution.gif

Voici la distribution géométrique des événements avec une probabilité de succès de 10 $% aux événements avec une probabilité de succès de 90 $%. Je pense que vous pouvez comprendre intuitivement que plus le taux de réussite est élevé, plus la probabilité de succès est élevée lorsque le nombre d'essais est faible. Il s'avère que c'est presque un miracle d'échouer 10 $ d'affilée pour un événement avec une probabilité de succès de 90 $%.

De plus, la distribution géométrique a la propriété que la probabilité qu'un événement se produise n'est pas affectée par le résultat qui s'est produit auparavant. L'image est que le simple fait que le recto d'une pièce apparaisse à 5 $ d'affilée ne signifie pas qu'il y a une forte probabilité qu'elle apparaisse ensuite. Cela s'appelle ** sans mémoire **. (Cela signifie que les informations passées ne sont pas mémorisées.)

Distribution exponentielle

La distribution exponentielle est une distribution de probabilité qui représente la probabilité que l'intervalle entre les événements qui se produisent en moyenne de $ \ lambda $ fois par unité de temps soit de $ x $ unité de temps **, et est utilisée dans les exemples suivants.

--Intervalles en cas de catastrophe --Intervalle auquel les pannes accidentelles du système avec des temps de panne constants se produisent ―― L'intervalle entre l'arrivée d'un client et l'arrivée du client suivant dans le magasin

Fonction de densité de probabilité de distribution exponentielle

La fonction de densité de probabilité de la distribution exponentielle est exprimée comme suit.

\begin{equation}
f(x)=
    \left\{
    \begin{aligned}
          &\lambda \mathrm{e}^{-\lambda x} &(x\geq0) \\
          &0 &(x<0)\\
    \end{aligned}
    \right.
\end{equation}

De plus, lorsque la variable de probabilité $ X $ suit la distribution exponentielle, la valeur attendue $ E (X) $ et la variance $ V (X) $ sont les suivantes.


E(X) = \frac{1}{\lambda}


V(X) = \frac{1}{\lambda}

Par exemple, l'intervalle prévu entre les événements qui se produisent 5 $ par $ 1 $ heure (unité de temps) est $ \ frac {1} {5} heures = 12 minutes $. Je pense que cela correspond en quelque sorte au sentiment.

Maintenant, dessinons comment la forme de la distribution exponentielle change lorsque la valeur de $ \ lambda $ (le nombre moyen d'événements qui se produisent par unité de temps) change.

Par exemple, considérons-le comme une distribution qui représente l'intervalle de temps entre les visites des clients, d'un magasin où 30 clients en moyenne visitent une heure à un magasin où seulement 1 client en moyenne visite **.

import numpy as np
import matplotlib.animation as animation
import matplotlib.pyplot as plt
from scipy.stats import expon

fig = plt.figure()

def update(a):
    plt.cla()
    
    x =  np.arange(0, 1, 0.01)

    y = [expon.pdf(i, scale = 1/a) for i in x]

    plt.plot(x, y, label="expon λ= %d" % a)
    plt.legend()
    plt.ylim(0, 35)
    plt.xlim(0, 1.0)
    
ani = animation.FuncAnimation(fig,
                              update,
                              interval=500,
                              frames = np.arange(31, 1, -1),
                              blit=True)
plt.show()
ani.save('Exponential_distribution.gif', writer='pillow') 

Exponential_distribution.gif

Pouvez-vous voir que la forme de la distribution est en quelque sorte similaire à la distribution géométrique? ** En fait, la version continue de la distribution géométrique est la distribution exponentielle. ** (Si vous augmentez le nombre d'essais dans la distribution géométrique et prenez une limite appropriée qui rapproche la probabilité de succès de 0 $, cela deviendra une distribution exponentielle.)

De plus, il y a trois points sous la forme de la distribution exponentielle.

-Plus $ \ lambda $ est petit, plus la diminution est lente --Diminue toujours de manière monotone quelle que soit la valeur de $ \ lambda $ -Plus $ x $ est proche de 0 $, plus la densité de probabilité est élevée

Le premier point est: «Un magasin avec une moyenne de 15 $ arrivera plus tôt qu'un magasin avec une moyenne de 5 $ en 1 $ heure». C'est une image, donc je pense que c'est facile à comprendre.

Les deuxième et troisième points sont ** «Lorsqu'un client vient au magasin, le client suivant est le plus susceptible de venir au magasin immédiatement après cela» **. Je pense que certaines personnes pensent que quelque chose ne va pas avec cela. En fait, cela est dérivé du ** manque de mémoire ** de la distribution d'index, et ce n'est pas parce qu'un client arrive pour 1 $ que cela signifie que le prochain client ne viendra pas pendant un certain temps ou qu'il est facile de visiter le magasin d'affilée. , Nous supposons que les visites des clients sont complètement aléatoires. Par conséquent, l'idée est que ** la probabilité que cela se produise bientôt est plus élevée que le temps où cela ne se produit pas pendant une longue période **. (Cette ignorance est la même que celle qui apparaissait au moment de la distribution géométrique.)

Fonction de densité cumulative de distribution exponentielle

Ce que nous voulons en savoir plus sur nos sentiments quotidiens, c'est la probabilité que le prochain client arrive exactement 10 $ minutes plus tard, plutôt que la probabilité que le prochain client arrive dans ** 10 $ minutes **. Dans ce cas, il est nécessaire d'ajouter tout, de la probabilité que le prochain client visite le magasin soit de 0 $ $ secondes à la probabilité qu'il soit de 10 $ $ minutes.

À ce stade, la fonction de densité cumulative suivante, qui est le résultat de l'intégration de la fonction de densité de probabilité, est utilisée. ** Représente la probabilité qu'un événement qui se produit en moyenne $ \ lambda $ fois par unité de temps se produise dans un délai de $ x $ unité de temps **.


{{\begin{eqnarray}
F(x)  &=& 1 - \mathrm{e}^{-\lambda x} \\
\end{eqnarray}}
}

Maintenant, dessinons comment la forme du graphique de la fonction de densité cumulée change lorsque la valeur de $ \ lambda $ (le nombre moyen d'événements qui se produisent par unité de temps) change.

Comme précédemment ** Probabilité du nombre de minutes que mettra le prochain client à visiter, d'un magasin avec une moyenne de 30 $ de l'heure à un magasin avec une moyenne de 1 $ de l'heure. Pensons-y comme une distribution qui représente **.


import numpy as np
import matplotlib.animation as animation
import matplotlib.pyplot as plt
from scipy.stats import expon

fig = plt.figure()

def update(a):
    plt.cla()
    
    x =  np.arange(0, 1.2, 0.01)

    y = [expon.cdf(i, scale = 1/a) for i in x]

    plt.plot(x, y, label="expon λ= %d" % a)
    
    plt.legend()
    plt.ylim(0, 1.2)
    plt.xlim(0, 1.2)
    
ani = animation.FuncAnimation(fig,
                              update,
                              interval=500,
                              frames = np.arange(30, 1, -1),
                              blit=True)
plt.show()
ani.save('Exponential_cumulative_distribution.gif', writer='pillow') 

Exponential_cumulative_distribution.gif

Vous pouvez voir que la courbe de distribution devient plus douce à mesure que $ \ lambda $ grandit. Je pense qu'il est convaincant qu'un magasin qui coûte en moyenne 30 $ de l'heure est plus susceptible d'avoir le prochain client à moins de 10 $ qu'un magasin que seulement 1 $ de personnes visitent.

Distribution binomiale négative

Bien qu'elle apparaisse rarement en deuxième année du test statistique, elle est étroitement liée aux distributions qui ont été traitées jusqu'à présent, nous traitons donc également la distribution binomiale négative. La distribution suivie de $ X $, le nombre d'essais nécessaires pour un essai indépendant réussi (essai de Bernouy) avec seulement deux résultats, est appelée distribution binomiale négative.


P(X = k) = {}_{k-1} C _{r-1}p^r(1-p)^{k-r}

--Nombre d'essais jusqu'à ce que 1 sort 3 $ en continuant à lancer les dés --Nombre d'essais jusqu'à ce que la table apparaisse 5 $ en continuant à lancer des pièces

Etc. suivent une distribution binomiale négative.

Comme son nom l'indique, la distribution binomiale négative est une version étendue de la distribution binomiale et présente les différences suivantes.

Distribution binaire: nombre d'essais fixe, le nombre de succès est une variable de probabilité Distribution binomiale négative: nombre fixe de succès, le nombre d'essais est une variable de probabilité

Si vous définissez $ r = 1 $, ce sera une distribution géométrique et une expression. (Parce que la distribution géométrique est la distribution de probabilité du nombre d'essais jusqu'à ce qu'elle réussisse pour la première fois.)

De plus, lorsque $ \ lambda $ de la distribution de Poisson suit la distribution gamma, cela devient une distribution binomiale négative. (La distribution gamma sort du cadre du test statistique de deuxième niveau et n'est pas couverte dans cet article.)

De plus, lorsque la variable de probabilité $ X $ suit une distribution binomiale négative, la valeur attendue $ E (X) $ et la variance $ V (X) $ sont les suivantes.


E(X) = \frac{r}{p}


V(X) = \frac{k(1-p)}{p^2}

Par exemple, le nombre prévu d'essais requis pour obtenir 1 sur un dé 5 fois est $ \ frac {5} {\ frac {1} {6}} = 30 $.

Maintenant, déplaçons la probabilité de succès entre 10 $% et 90 $% pour la distribution de probabilité (distribution binomiale négative) du nombre d'essais requis pour qu'un événement réussisse 10 $ fois.


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def comb_(n, k):
    result = math.factorial(n) / (np.math.factorial(n - k) * np.math.factorial(k))
    return result

def negative_binomial_dist(p, k, r):
    result = comb_(k - 1, r - 1) * (p**r) * ((1 - p) ** (k - r))
    return result

fig = plt.figure()

def update(a):
    plt.cla()
    
    r = 10
    
    x =  np.arange(r, 70, 1)

    y = [negative_binomial_dist(a, i, r) for i in x]

    plt.bar(x, y, align="center", width=0.4, color="blue", 
                 alpha=0.5, label="Negative binomial p= " + "{:.1f}".format(a))
    
    plt.legend()
    plt.ylim(0, 0.4)
    plt.xlim(10, 70)
    
    
ani = animation.FuncAnimation(fig,
                              update,
                              interval=1000,
                              frames = np.arange(0.1, 1, 0.1),
                              blit=True)
plt.show()
ani.save('Negative_binomial_distribution.gif', writer='pillow') 

Negative_binomial_distribution.gif

Vous pouvez voir que plus le taux de réussite est élevé, plus le nombre d'essais est proche de 10 $.

Relation entre les distributions de probabilité

J'ai traité de diverses distributions de probabilité qui sont dans la gamme des questions pour la deuxième année du test statistique, mais en réalité elles sont toutes liées. Ce qui suit est un diagramme des relations mutuelles des distributions de probabilité que nous avons traitées jusqu'à présent.

分布間の関係性.png

Ce n'est pas clair si vous regardez uniquement les formules mathématiques, mais je pense que vous approfondirez votre compréhension si vous pensez à la relation entre les distributions de probabilité mutuelle tout en dessinant la distribution.

NEXT La prochaine fois, je parlerai de la distribution normale et de la distribution t.

Recommended Posts

Distribution de probabilité de niveau 2 du test statistique apprise en Python ②
Distribution de probabilité de test statistique de niveau 2 apprise en Python
[Test statistique niveau 2] Distribution de probabilité discrète
Test statistique (test multiple) en Python: scikit_posthocs
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
1. Statistiques apprises avec Python 2-1. Distribution de probabilité [variable discrète]
Vérifiez la nature atrophique de la distribution de probabilité en Python
Refactoring appris avec Python (Basic)
Écrire une distribution bêta en Python
Algorithme en Python (jugement premier)
Classe Python pour apprendre avec la chimioinfomatique
Générer une distribution U en Python
Ce que j'ai appris en Python
Code de caractère appris en Python
Fonctions Python apprises avec la chimioinfomatique
Test d'hypothèse et distribution de probabilité
Définir le test python dans jenkins
1. Statistiques apprises avec Python 2. Distribution des probabilités [Compréhension approfondie de scipy.stats]
Implémentation de distribution normale mixte en python
Ecrire le code de test du sélénium en python
J'ai essayé d'étudier le processus avec Python
Utilisation élémentaire d'ITK apprise avec Python
Essayez de transcrire la fonction de masse stochastique de la distribution binomiale en Python
Test de stress avec Locust écrit en Python
Ecrire le test dans la docstring python
Probabilité de transition de la chaîne de Markov écrite en Python
Mettre en œuvre collectivement des tests d'hypothèses statistiques en Python
Obtenez la probabilité de précipitation de XML avec Python
Étudier les mathématiques avec Python: résoudre des problèmes simples de probabilité
Créez un environnement de test Vim + Python en 1 minute
Je veux faire le test de Dunnett en Python
Calculons en fait le problème statistique avec Python
Variables Python et types de données appris avec la chimio-automatique
Faites correspondre la distribution de chaque groupe en Python
Créer un graphique de distribution normale standard en Python
Énumération des nombres premiers et jugement des nombres premiers en Python
Configurez un serveur SMTP de test en Python.
Analyse de survie apprise avec Python 2 - Estimation Kaplan-Meier
TensorFlow: exécuter des données apprises en Python sur Android
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Distribution et test
Programmation avec Python
Plink en Python
Constante en Python
Test d'intégrité Python