Comprendre attentivement la distribution de Poisson et dessiner en Python

introduction

La ** distribution de Poisson ** apparaît toujours lors de l'étude des statistiques, mais comme la formule de la distribution de probabilité dans l'exemple ne m'est pas venue à l'esprit, j'ai pensé essayer de la comprendre attentivement à partir de la dérivation de la distribution de probabilité. Je dessine également en Python pour saisir l'image.

référence

Pour comprendre la distribution de Poisson et dessiner la distribution, je me suis référé à ce qui suit.

Comprendre la distribution de Poisson

Quelle est la distribution de Poisson

P(X=k) = \frac{\lambda^k \mathrm{e}^{-\lambda}}{k!}

La distribution de Poisson est une distribution de probabilité qui représente la probabilité qu'un événement qui se produit en moyenne $ \ lambda $ fois par unité de temps se produise exactement $ k $ fois. On dit que la distribution de Poisson suit la distribution de probabilité ci-dessus, mais ce n'est pas clair car la puissance du nombre de Napier sort dans la formule et la puissance de rang sort. Je vais suivre ci-dessous, y compris à quoi ressemble la formule.

De plus, lorsque la variable de probabilité $ X $ suit la distribution de Poisson du paramètre $ \ lambda $, elle s'écrit $ X ~ Po (\ lambda) $.

Voici des exemples d'événements qui suivent la distribution de Poisson.

--Nombre de véhicules passant par une intersection spécifique en une heure --Nombre d'accès au site en une heure --Nombre d'e-mails reçus par jour --Nombre de visiteurs du magasin au cours d'une certaine période de temps

Historiquement, ** "Nombre de soldats tués par des chevaux dans l'armée prussienne" ** semble être le premier exemple de la distribution de Poisson, avec 1 $ par an comme unité de temps $ \ lambda = 0,61 $. Il a été démontré qu'il suit la distribution de Poisson de.

Calculons une probabilité spécifiquement. ex) Probabilité qu'un site consulté 5 fois par heure en moyenne soit consulté 10 fois ($ X ~ Po (5) $: selon la distribution de Poisson)

P(X=10) = \frac{5^{10} \mathrm{e}^{-5}}{10!} \fallingdotseq 0.018

Vous pouvez calculer la probabilité de cette façon. Dans le cas de cet exemple, vous pouvez voir que la probabilité est très faible, 1,8 $ % $.

Dérivation de la distribution de Poisson (limitation du pôle de Poisson)

Vue d'ensemble de la limitation extrême de Poisson


\lim_{\lambda = np, n\to \infty} {}_n \mathrm{C} _kp^{k}(1-p)^{n-k} = \frac{\lambda^k \mathrm{e}^{-\lambda}}{k!}

La distribution de Poisson est approximativement dérivée en rapprochant $ n $ de l'infini tout en gardant la valeur de $ \ lambda $ constante dans une distribution binomiale avec les paramètres $ n $ et $ p = \ lambda / n $. C'est possible. En d'autres termes, la ** distribution de Poisson est la limite de la distribution binomiale **. C'est ce qu'on appelle la ** limitation extrême de Poisson **.

Si vous rapprochez $ n $ de l'infini tout en gardant la valeur de $ \ lambda $ constante, la valeur de $ p $ sera très petite en conséquence. Vous pouvez voir que la distribution peut être appliquée à des choses avec une très faible probabilité d'occurrence.

Expansion de formule de la théorie de limitation des pôles de Poisson

Je vais suivre le type de développement de formule que fait la théorie de la limitation des pôles de Poisson.


{\begin{eqnarray}

\lim_{n\to \infty} {}_n \mathrm{C} _kp^{k}(1-p)^{n-k} 
&=& \lim_{n\to \infty}\frac{n!}{(n-k)!k!}p^{k}(1-p)^{n-k} \\
&=&\lim_{n\to \infty}\frac{n(n-1)\cdots(n-k+1)}{k!}(\frac{\lambda}{n})^{k}(1-\frac{\lambda}{n})^{n-k} \\
&=&\lim_{n\to \infty}\frac{n}{n}\frac{n-1}{n}\cdots\frac{n-k+1}{n}(\frac{\lambda^{k}}{k!})(1-\frac{\lambda}{n})^{n}(1-\frac{\lambda}{n})^{-k} \\
&=&\frac{\lambda^{k}}{k!}\lim_{n\to \infty}(1-\frac{\lambda}{n})^{n} \\
&=&\frac{\lambda^{k}\mathrm{e}^{-\lambda}}{k!}

\end{eqnarray}
}

La distribution de probabilité de la distribution de Poisson est dérivée par une telle expansion de formule, mais comme il y a des extensions de formule qui sont difficiles à comprendre, certaines d'entre elles seront complétées ci-dessous. Tout d'abord, c'est l'expansion de la 3e à la 4e ligne. $ \ frac {n} {n} \ frac {n-1} {n} \ cdots \ frac {n-k + 1} {n} $ rapproche $ n $ de l'infini, toutes les valeurs sont de 1 $ Il peut être traité comme $. De plus, $ (1- \ frac {\ lambda} {n}) ^ {-k} $ rapproche aussi $ n $ de l'infini de sorte que le contenu de $ () $ se rapproche de $ 1 $, qui est aussi une valeur. Peut être traité comme 1 $. L'expansion des 4e à 5e lignes utilise la formule de définition suivante pour le nombre de napiers.

\mathrm{e} = \lim_{x\to \infty}(1+\frac{1}{x})^{\frac{1}{x}}

Si vous le développez pour qu'il s'applique à ce qui précède, ce sera comme suit.


{\begin{eqnarray}

\lim_{n\to \infty}(1-\frac{\lambda}{n})^{n} &=& \lim_{n\to \infty}(1-\frac{\lambda}{n})^{-\frac{1}{\frac{\lambda}{n}} (-\lambda)} \\
&=& \mathrm{e}^{-\lambda} 

\end{eqnarray}}

Avec cela, nous avons pu dériver la distribution de Poisson.

Nature de la distribution de Poisson


E(X) = \lambda  \\
V(X) = \lambda

La valeur attendue et la variance de la distribution de Poisson sont toutes deux $ \ lambda $. Le processus de dérivation suivant est décrit.

Processus de dérivation de la valeur attendue de la distribution de Poisson


\begin{eqnarray*}E(X)&=&\sum_{k=0}^{n}kP(X=k)\\ &=&\sum_{k=0}^{n}k\frac{λ^{k}\mathrm{e}^{-\lambda}}{k!}\\ &=&\sum_{k=0}^{n}\frac{λ^{k}\mathrm{e}^{-\lambda}}{(k-1)!}\\ &=&λ\sum_{k=0}^{n}\frac{λ^{k-1}\mathrm{e}^{-λ}}{(k-1)!}\\ &=&λ\end{eqnarray*}

Commencez la formule sur la première ligne à partir de la valeur attendue et de la nature de la distribution de probabilité. Le développement d'expression des 4e à 5e lignes est $ \ sum_ {k = 0} ^ {n} \ frac {λ ^ {k-1} \ mathrm {e} ^ {-λ}} {(k-1) Puisque!} $ Est supposé additionner toutes les probabilités qui peuvent être prises dans la distribution de Poisson, la valeur peut être fixée à $ 1 $, et une telle expansion d'expression est possible.

Processus de dérivation de la dispersion de la distribution de Poisson

\begin{eqnarray*}V(X)&=&E(X^2)-{(E(X))}^2
\end{eqnarray*}

A partir des caractéristiques ci-dessus de la dispersion, on peut voir que si $ E (X ^ {2}) $ peut être dérivé, la dispersion peut également être dérivée. Voici le processus de dérivation de $ E (X ^ {2}) $.

\begin{eqnarray*}E(X^2)&=&\sum_{k=0}^{n}k^{2}P(X=k)\\ &=&\sum_{k=0}^{n}k^{2}\frac{λ^{k}\mathrm{e}^{-λ}}{k!}\\ &=&\sum_{k=0}^{n}(k(k-1)+k)\frac{λ^{k}\mathrm{e}^{-λ}}{k!}\\ 
&=&\sum_{k=0}^{n}k(k-1)\frac{λ^{k}\mathrm{e}^{-λ}}{k!}+\sum_{k=0}^{n}k\frac{λ^{k}\mathrm{e}^{-λ}}{k!}\\
&=&\sum_{k=0}^{n}\frac{λ^{k}\mathrm{e}^{-λ}}{(k-2)!}+λ\\ &=&λ^{2}\sum_{k=0}^{n}\frac{λ^{k-2}\mathrm{e}^{-λ}}{(k-2)!}+λ\\ &=&λ^{2}+λ

\end{eqnarray*}

Utilisez ce qui précède pour calculer la variance.

\begin{eqnarray*}V(X)&=&E(X^2)-{(E(X))}^2 \\
&=& λ^{2} + λ - λ^{2} \\
&=& λ
\end{eqnarray*}

Ici, nous avons pu dériver la valeur attendue et la variance de la distribution de Poisson.

Dessin de la distribution de Poisson

Dessiner une distribution de Poisson en Python

Cette fois, je dessinerai la distribution de Poisson des événements qui se produisent 10 fois en moyenne, des événements qui se produisent 20 fois en moyenne et des événements qui se produisent 30 fois en moyenne par unité de temps.

def poisson(lambda_, k):
    k = int(k)
    result = (lambda_**k) * (math.exp(-lambda_))  / math.factorial(k)
    return result

x =  np.arange(1, 50, 1)
y1= [poisson(10,i) for i in x]
y2= [poisson(20,i) for i in x]
y3= [poisson(30,i) for i in x]

plt.bar(x, y1, align="center", width=0.4, color="red"
                ,alpha=0.5, label="Poisson λ= %d" % 10)

plt.bar(x, y2, align="center", width=0.4, color="green"
                ,alpha=0.5, label="Poisson λ= %d" % 20)

plt.bar(x, y3, align="center", width=0.4, color="blue"
                ,alpha=0.5, label="Poisson λ= %d" % 30)

plt.legend()
plt.show()

ダウンロード.png

Vous pouvez dessiner un graphique comme celui-ci. Il est intéressant de voir que plus la valeur de $ λ $ est élevée, plus la base de la distribution de probabilité est large. En passant, vous pouvez facilement dessiner une distribution de Poisson en utilisant une bibliothèque appelée scipy.

from scipy.stats import poisson

x =  np.arange(1, 50, 1)
y1= [poisson.pmf(i, 10) for i in x]
y2= [poisson.pmf(i, 20) for i in x]
y3= [poisson.pmf(i, 30) for i in x]

plt.bar(x, y1, align="center", width=0.4, color="red"
                ,alpha=0.5, label="Poisson λ= %d" % 10)

plt.bar(x, y2, align="center", width=0.4, color="green"
                ,alpha=0.5, label="Poisson λ= %d" % 20)

plt.bar(x, y3, align="center", width=0.4, color="blue"
                ,alpha=0.5, label="Poisson λ= %d" % 30)

plt.legend()
plt.show()

ダウンロード (1).png

Next En suivant attentivement la formule et en la dessinant moi-même en Python, j'ai pu comprendre la distribution de Poisson, qui était difficile à saisir l'image. Je continuerai de résumer ce que j'ai appris en matière de statistiques.

Recommended Posts

Comprendre attentivement la distribution de Poisson et dessiner en Python
Comprenez attentivement la distribution exponentielle et dessinez en Python
Tracer et comprendre la distribution normale multivariée en Python
Trouvons un graphique de la distribution de Poisson et de la distribution cumulative de Poisson en Python et Java, respectivement.
Distribution de Poisson et tracé de distribution cumulative de Poisson via sqlite en Python et Java
À propos de la différence entre "==" et "is" en python
Dessinez des graphiques dans Julia ... Laissez les graphiques à Python
Distribution logistique en Python
Dessiner un graphique avec python
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
Le mémo Python le plus simple au Japon (classes et objets)
Recevez le formulaire en Python et faites diverses choses
Calculer et dessiner des diagrammes Boronoi bornés (fermés) en Python
Trouvez la matrice Hermite et ses valeurs uniques en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python
[Apprentissage automatique] "Détection d'anomalies et détection de changement" Dessinons la figure du chapitre 1 en Python.
Dessiner une forme d'onde mp3 en Python
Trouver des erreurs en Python
Écrire une distribution bêta en Python
Apprenez à connaître les packages et les modules Python
Dessinez le disque de Poancare en Python
Générer une distribution U en Python
Dessiner "Dessiner une fougère par programme" en Python
Pile et file d'attente en Python
Dessiner la fonction Yin en python
Unittest et CI en Python
Je comprends Python en japonais!
Dessinez un cœur en Python
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Manipulez le presse-papiers en Python et collez le tableau dans Excel
J'ai essayé de programmer le test du chi carré en Python et Java.
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
Obtenez la date et l'heure actuelles en Python, en tenant compte du décalage horaire
[Astuces] Problèmes et solutions dans le développement de python + kivy
Dessinez des ondes sinusoïdales avec Blender Python
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
L'histoire de Python et l'histoire de NaN
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Obtenir l'API arXiv en Python
Différence entre list () et [] en Python
Différence entre == et est en python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
Enregistrez le fichier binaire en Python
Frappez l'API Sesami en Python
Dessinez des nœuds de manière interactive avec Plotly (Python)
Implémentation de distribution normale mixte en python
Nouvelle grammaire et fonctionnalités Python non mentionnées dans le livre d'introduction
Essayez de transcrire la fonction de masse stochastique de la distribution binomiale en Python
Obtenez le chemin du bureau en Python
Dessinez une matrice de diagramme de dispersion avec python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Obtenez le chemin du script en Python
Dans la commande python, python pointe vers python3.8
Implémenter le modèle Singleton en Python
Affectations et modifications des objets Python
Vérifiez et déplacez le répertoire en Python
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3