[PYTHON] Vorsichtsmaßnahmen bei der Überlagerung der Wahrscheinlichkeitsdichtefunktion und des Histogramms in matplotlib

Wenn ich das Histogramm und die Wahrscheinlichkeitsdichtefunktion überlagern wollte, konnte ich sie zunächst nicht ordentlich überlagern, daher werde ich zu diesem Zeitpunkt eine Notiz über die Lösung hinterlassen.

Ursache

Von numpy.random generierte Zufallszahlen haben je nach Anzahl der Generationen einen Histogrammbereich größer als 1.

Lösung

Standardisieren Sie das Histogramm

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
n = 2000 #Die Anzahl der Daten

data = np.random.randn(n)
plt.hist(data, range=(-3, 3), bins=60, alpha=0.5, density=True)
#Klassenbreite 0.1 Gesamtzahl der Daten 2000,Ein Histogramm mit der vertikalen Achse als relativer Frequenzdichte
x = np.linspace(-3, 3, 61)
#0.Generieren Sie eine Zahlenfolge in Schritten von 1
plt.plot(x, norm.pdf(x), c='r')

Die Fläche wurde auf 1 gesetzt, indem die vertikale Achse anstelle der Frequenz auf die relative Frequenzdichte eingestellt wurde.


Klassenbreite w,Klasse n,Frequenz D._Ursprünglicher Bereich S als n\\

S=\sum_{n}D_nw\\

Relative Frequenz\\D_n^R=\frac{D_n}{\sum_{n}D_n}\\
Frequenz der relativen Dichte\\

\begin{aligned}
D_n^{'}&=\frac{D_n^R}{w}\\
&={\frac{D_n}{\sum_{n}D_n}} \times {\frac{1}{w}}\\
&=\frac{D_n}{S}\\
\end{aligned}\\
Bereich S des Histogramms unter Verwendung der relativen Dichtefrequenz^{'}\\
\begin{aligned}

S^{'}&=D_n^{'}\\
&=\frac{\sum_{n}D_n}{S}\\
&=\frac{S}{S}\\
&=1
\end{aligned}

Richten Sie den Bereich der Wahrscheinlichkeitsdichtefunktion am Histogramm aus

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
n = 2000 #Die Anzahl der Daten

data = np.random.randn(n)
plt.hist(data, range=(-3, 3), bins=60, alpha=0.5)
#Klassenbreite 0.1 Gesamtzahl der Daten 2000,Ein Histogramm mit der vertikalen Achse als relativer Frequenzdichte
x = np.linspace(-3, 3, 61)
#0.Generieren Sie eine Zahlenfolge in Schritten von 1
plt.plot(x, n*0.1*norm.pdf(x), c='r')
#0.1 ist die Klassenbreite

Die Fläche wurde durch Multiplizieren der Wahrscheinlichkeitsdichtefunktion mit der Fläche des Histogramms angepasst.

Wahrscheinlichkeitsdichtefunktion f(x),Gesamtzahl der Daten im Histogramm n,Die Klassenbreite sei w.\\
f(x)Erfüllt die folgende Gleichung\\
\begin{aligned}
\int f(x) dx = 1
\end{aligned}\\
N auf beiden Seiten\Durch Multiplizieren mit der Zeit w wird die Fläche des Histogramms n\Kann mal w sein.\\
Daher ist die Wahrscheinlichkeitsdichtefunktion f nach der Umwandlung^{'}(x)Ist\\
f^{'}(x)=n\times w \times f(x)





Recommended Posts

Vorsichtsmaßnahmen bei der Überlagerung der Wahrscheinlichkeitsdichtefunktion und des Histogramms in matplotlib
So vereinheitlichen Sie die Behälterbreite, wenn mehrere Histogramme übereinander angezeigt werden (matplotlib)
Text Mining: Wahrscheinlichkeitsdichteverteilung auf Hypersphäre und Textclustering mit KMeans
Besiege die Wahrscheinlichkeitsdichtefunktion der Normalverteilung
Wenn sich Achse und Beschriftung in matplotlib überlappen
Zeichnen auf Jupyter mit der Plot-Funktion von Pandas
Bei matplotlib ist die vertikale Achse auf der linken Seite des Histogramms die Frequenz und die vertikale Achse auf der rechten Seite die relative Frequenz (möglicherweise ein böser Weg).
PRML-Diagrammzeichnung Aufgabe 1.4 Nichtlineare Transformation der Wahrscheinlichkeitsdichtefunktion
Machen Sie die Funktion zum Zeichnen japanischer Schriftarten in OpenCV allgemein
Eine Geschichte, bei der es mir schwer fiel, Grafiken mit matplotlib anzuzeigen
Versuchen Sie, die stochastische Massenfunktion der Binomialverteilung in Python zu transkribieren
Wahrscheinlichkeit der höchsten und niedrigsten Jungtierpreise in Atsumori
Vorsichtsmaßnahmen bei Verwendung der Funktion urllib.parse.quote
Stellen Sie die Behälterbreite mit dem Histogramm von Matplotlib und Seaborn klar und ordentlich ein
Suchen Sie den Namen und die Daten einer freien Variablen in einem Funktionsobjekt
Stellen Sie die vertikale Achse des Histogramms mit matplotlib auf relative Häufigkeit (Gesamthöhe der Spalten = 1) und relative Frequenzdichte (Gesamtfläche des Histogramms = 1) ein
[Python] Vorsichtsmaßnahmen beim Ermitteln der Maximal- und Minimalwerte mit einem Numpy-Array mit einer kleinen Anzahl von Elementen
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Trennung von Design und Daten in matplotlib
[Python] Vorsichtsmaßnahmen beim Erfassen von Daten durch Scraping und Einfügen in die Liste
[Linux] Unterschied in den Zeitinformationen in Abhängigkeit von der Uhr-ID der Funktion clock_gettime ()
Legen Sie die Obergrenze für die Anzahl der Wiederholungen rekursiver Funktionen in Python fest
Unterschiede im Verhalten jeder LL-Sprache, wenn der Listenindex übersprungen wird
Fehler, der in OpenCV3 und seiner Lösung aufgetreten ist. Vorsichtsmaßnahmen bei Verwendung von OpenCV3 auf dem Mac
Fehlerdetails und Gegenmaßnahmen, die in OpenCv2 beim Ausführen des Objekterkennungs-Beispielprogramms von "Object Detect on Tools" aufgetreten sind.