Verstehe die Poisson-Distribution sorgfältig und zeichne in Python

Einführung

Die ** Poisson-Verteilung ** taucht beim Studium der Statistik immer auf, aber da mir die Formel für die Wahrscheinlichkeitsverteilung im Beispiel nicht in den Sinn kam, dachte ich, ich würde versuchen, sie anhand der Ableitung der Wahrscheinlichkeitsverteilung sorgfältig zu verstehen. Ich zeichne auch in Python, um das Bild zu erfassen.

Referenz

Um die Poisson-Verteilung zu verstehen und die Verteilung zu zeichnen, habe ich mich auf Folgendes bezogen.

Poisson-Verteilung verstehen

Was ist die Poisson-Verteilung?

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

Die Poisson-Verteilung ist eine Wahrscheinlichkeitsverteilung, die die Wahrscheinlichkeit darstellt, dass ein Ereignis, das durchschnittlich $ \ lambda $ mal pro Zeiteinheit auftritt, genau $ k $ mal auftritt. Die Poisson-Verteilung soll der obigen Wahrscheinlichkeitsverteilung folgen, ist jedoch nicht klar, da die Potenz der Napier-Zahl in der Formel und die Rang-Potenz erscheint. Ich werde weiter unten folgen, einschließlich, wie die Formel aussieht.

Wenn die Wahrscheinlichkeitsvariable $ X $ der Poisson-Verteilung des Parameters $ \ lambda $ folgt, wird sie als $ X ~ Po (\ lambda) $ geschrieben.

Das Folgende sind Beispiele für Ereignisse, die der Poisson-Verteilung folgen.

Historisch gesehen scheint ** "Anzahl der Soldaten, die von Pferden getötet wurden, die von Pferden in der preußischen Armee getreten wurden" ** das erste Beispiel für die Poisson-Verteilung zu sein, mit 1 $ pro Jahr als Zeiteinheit $ \ lambda = 0,61 $. Es wurde gezeigt, dass es der Poisson-Verteilung von folgt.

Berechnen wir eine Wahrscheinlichkeit speziell. Beispiel: Wahrscheinlichkeit, dass auf eine Site, auf die durchschnittlich fünfmal pro Stunde zugegriffen wird, zehnmal zugegriffen wird ($ X ~ Po (5) $: Gemäß Poisson-Verteilung)

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

Sie können die Wahrscheinlichkeit so ableiten. In diesem Beispiel sehen Sie, dass die Wahrscheinlichkeit sehr gering ist, $ 1,8 % $.

Ableitung der Poisson-Verteilung (Poisson-Polbegrenzung)

Übersicht über Poisson Extreme Limitation


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

Die Poisson-Verteilung wird ungefähr abgeleitet, indem $ n $ näher an die Unendlichkeit gebracht wird, während der Wert von $ \ lambda $ in einer Binomialverteilung mit den Parametern $ n $ und $ p = \ lambda / n $ konstant gehalten wird. Es ist möglich. Mit anderen Worten ist die ** Poisson-Verteilung die Grenze der Binomialverteilung **. Dies nennt man ** Poisson's Extreme Limitation **.

Wenn Sie den Wert von $ \ lambda $ konstant halten und $ n $ näher an die Unendlichkeit rücken, ist der Wert von $ p $ entsprechend sehr klein. Sie können sehen, dass es sich um eine Verteilung handelt, die mit einer sehr geringen Eintrittswahrscheinlichkeit auf Dinge angewendet werden kann.

Formelerweiterung der Poisson-Polbegrenzungstheorie

Ich werde verfolgen, welche Art von Formelentwicklung die Poisson-Polbegrenzungstheorie bewirkt.


{\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}
}

Die Wahrscheinlichkeitsverteilung der Poisson-Verteilung wird durch eine solche Formelerweiterung abgeleitet. Da es jedoch schwer verständliche Formelerweiterungen gibt, werden einige davon im Folgenden ergänzt. Zuallererst ist es die Erweiterung der 3. bis 4. Zeile. $ \ frac {n} {n} \ frac {n-1} {n} \ cdots \ frac {n-k + 1} {n} $ bringt $ n $ näher an die Unendlichkeit, alle Werte sind $ 1 Es kann als $ verarbeitet werden. Außerdem bringt $ (1- \ frac {\ lambda} {n}) ^ {-k} $ $ n $ näher an die Unendlichkeit, so dass der Inhalt von $ () $ näher an $ 1 $ kommt, was ebenfalls ein Wert ist. Kann als $ 1 $ behandelt werden. Die Erweiterung der 4. bis 5. Zeile verwendet die folgende Definitionsformel für die Anzahl der Napiers.

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

Wenn Sie es so erweitern, dass es für das oben Gesagte gilt, ist es wie folgt.


{\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}}

Damit konnten wir die Poisson-Verteilung ableiten.

Art der Poisson-Verteilung


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

Der erwartete Wert und die Varianz der Poisson-Verteilung sind beide $ \ lambda $. Der folgende Ableitungsprozess wird beschrieben.

Ableitungsprozess des erwarteten Werts der Poisson-Verteilung


\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*}

Beginnen Sie die Formel in der ersten Zeile mit dem erwarteten Wert und der Art der Wahrscheinlichkeitsverteilung. Die Ausdruckserweiterung der 4. bis 5. Zeile ist $ \ sum_ {k = 0} ^ {n} \ frac {λ ^ {k-1} \ mathrm {e} ^ {-λ}} {(k-1) Da!} $ Alle Wahrscheinlichkeiten addieren soll, die in der Poisson-Verteilung genommen werden können, kann der Wert auf $ 1 $ gesetzt werden, und eine solche Ausdruckserweiterung ist möglich.

Ableitungsprozess der Dispersion der Poisson-Verteilung

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

Aus den obigen Eigenschaften der Dispersion ist ersichtlich, dass, wenn $ E (X ^ {2}) $ abgeleitet werden kann, die Dispersion auch abgeleitet werden kann. Das Folgende ist der Prozess des Ableitens von $ 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*}

Verwenden Sie das Obige, um die Varianz abzuleiten.

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

Hier konnten wir den erwarteten Wert und die Varianz der Poisson-Verteilung ableiten.

Zeichnen der Poisson-Verteilung

Zeichnen Sie die Poisson-Verteilung in Python

Dieses Mal werde ich die Poisson-Verteilung von Ereignissen zeichnen, die durchschnittlich 10 Mal auftreten, Ereignisse, die durchschnittlich 20 Mal auftreten, und Ereignisse, die durchschnittlich 30 Mal pro Zeiteinheit auftreten.

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

Sie können ein Diagramm wie dieses zeichnen. Es ist interessant zu sehen, dass die Basis der Wahrscheinlichkeitsverteilung umso breiter ist, je größer der Wert von $ λ $ ist. Übrigens können Sie mithilfe einer Bibliothek namens scipy ganz einfach eine Poisson-Distribution zeichnen.

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 Indem ich der Formel sorgfältig folgte und sie selbst in Python zeichnete, konnte ich die Poisson-Verteilung verstehen, die schwer zu erfassen war. Ich werde weiterhin zusammenfassen, was ich in Bezug auf Statistik gelernt habe.

Recommended Posts

Verstehe die Poisson-Distribution sorgfältig und zeichne in Python
Verstehen Sie die Exponentialverteilung sorgfältig und zeichnen Sie in Python
Zeichnen und verstehen Sie die multivariate Normalverteilung in Python
Zeichnen wir ein Diagramm der Poisson-Verteilung und der kumulativen Poisson-Verteilung in Python bzw. Java.
Poisson-Verteilung und kumulative Poisson-Verteilung über SQLite in Python und Java
Über den Unterschied zwischen "==" und "is" in Python
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
Logistische Verteilung in Python
Zeichnen Sie ein Diagramm mit Python
Verarbeitung (Python) Diagramm der Koordinaten der Liste Geben Sie an, wie oft in draw ()
Beachten Sie, dass ich den Algorithmus der kleinsten Quadrate verstehe. Und ich habe es in Python geschrieben.
Das einfachste Python-Memo in Japan (Klassen und Objekte)
Erhalten Sie das Formular in Python und führen Sie verschiedene Aktionen aus
Berechnen und zeichnen Sie begrenzte (geschlossene) Boronoi-Diagramme in Python
Finden Sie die Hermite-Matrix und ihre eindeutigen Werte in Python
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
[Maschinelles Lernen] "Erkennung von Abnormalitäten und Erkennung von Änderungen" Zeichnen wir die Abbildung von Kapitel 1 in Python.
Zeichnen Sie MP3-Wellenformen in Python
Finde Fehler in Python
Schreiben Sie die Beta-Distribution in Python
Lernen Sie Python-Pakete und -Module kennen
Zeichnen Sie die Festplatte von Poancare in Python
Generieren Sie eine U-Verteilung in Python
Zeichnen Sie "Farn programmgesteuert zeichnen" in Python
Stapel und Warteschlange in Python
Zeichne die Yin-Funktion in Python
Unittest und CI in Python
Ich verstehe Python auf Japanisch!
Zeichne ein Herz in Python
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Bearbeiten Sie die Zwischenablage in Python und fügen Sie die Tabelle in Excel ein
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)
Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Zeichnen Sie Sinuswellen mit Blender Python
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
Die Geschichte von Python und die Geschichte von NaN
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Abrufen der arXiv-API in Python
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
Speichern Sie die Binärdatei in Python
Klicken Sie in Python auf die Sesami-API
Zeichnen Sie Knoten interaktiv mit Plotly (Python)
Implementierung einer gemischten Normalverteilung in Python
Neue Python-Grammatik und Funktionen, die im Einführungsbuch nicht erwähnt werden
Versuchen Sie, die stochastische Massenfunktion der Binomialverteilung in Python zu transkribieren
Holen Sie sich den Desktop-Pfad in Python
Zeichnen Sie eine Streudiagrammmatrix mit Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Holen Sie sich den Skriptpfad in Python
Im Python-Befehl zeigt Python auf Python3.8
Implementieren Sie das Singleton-Muster in Python
Zuweisungen und Änderungen in Python-Objekten
Überprüfen und verschieben Sie das Verzeichnis in Python
Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3