scipy.stats.

Normal#

class scipy.stats.Normal(mu=None, sigma=None, **kwargs)[Quelle]#

Normalverteilung mit vorgegebenem Mittelwert und Standardabweichung.

Die Wahrscheinlichkeitsdichtefunktion der Normalverteilung ist

\[f(x) = \frac{1}{\sigma \sqrt{2 \pi}} \exp { \left( -\frac{1}{2}\left( \frac{x - \mu}{\sigma} \right)^2 \right)}\]

für \(x \in (-\infty, \infty)\). Diese Klasse akzeptiert eine Parametrisierung: mu für \(\mu \in (-\infty, \infty)\), sigma für \(\sigma \in (0, \infty)\).

Parameter:
tolpositive float, optional

Die gewünschte relative Genauigkeit der Berechnungen. Wenn nicht angegeben, können die Berechnungen schneller sein; wenn angegeben, ist es wahrscheinlicher, dass die Berechnungen die gewünschte Genauigkeit erreichen.

validation_policy{None, “skip_all”}

Gibt die Stufe der Eingabevalidierung an. Wenn nicht angegeben, wird die Eingabevalidierung durchgeführt, um ein angemessenes Verhalten in Randfällen (z. B. Parameter außerhalb der Domäne, Argument außerhalb der Verteilungsgrenzen usw.) sicherzustellen und die Konsistenz von Ausgabedtypes, Formen usw. zu verbessern. Übergeben Sie 'skip_all', um den Rechenaufwand dieser Prüfungen zu vermeiden, wenn grobe Ergebnisse akzeptabel sind.

cache_policy{None, “no_cache”}

Gibt den Umfang an, in dem Zwischenergebnisse zwischengespeichert werden. Wenn nicht angegeben, werden Zwischenergebnisse einiger Berechnungen (z. B. Verteilungsgrenzen, Momente usw.) zwischengespeichert, um die Leistung zukünftiger Berechnungen zu verbessern. Übergeben Sie 'no_cache', um den vom Klasseninstanz reservierten Speicher zu reduzieren.

Attribute:
Alle Parameter sind als Attribute verfügbar.

Methoden

support()

Unterstützungsbereich der Zufallsvariable

plot([x, y, t, ax])

Zeichnet eine Funktion der Verteilung.

sample([shape, method, rng])

Zufällige Stichprobe aus der Verteilung.

moment([order, kind, method])

Roh-, zentrales oder Standardmoment positiver ganzzahliger Ordnung.

mean(*[, method])

Mittelwert (rohes erstes Moment um den Ursprung)

median(*[, method])

Median (50. Perzentil)

mode(*[, method])

Modus (wahrscheinlichster Wert)

variance(*[, method])

Varianz (zweites zentrales Moment)

standard_deviation(*[, method])

Standardabweichung (Quadratwurzel des zweiten zentralen Moments)

skewness(*[, method])

Schiefe (standardisiertes drittes Moment)

kurtosis(*[, method, convention])

Kurtosis (standardisiertes viertes Moment)

pdf(x, /, *[, method])

Wahrscheinlichkeitsdichtefunktion

logpdf(x, /, *[, method])

Logarithmus der Wahrscheinlichkeitsdichtefunktion

cdf(x[, y, method])

Kumulative Verteilungsfunktion

icdf(p, /, *[, method])

Inverse der kumulativen Verteilungsfunktion.

ccdf(x[, y, method])

Komplementäre kumulative Verteilungsfunktion

iccdf(p, /, *[, method])

Inverse der komplementären kumulativen Verteilungsfunktion.

logcdf(x[, y, method])

Logarithmus der kumulativen Verteilungsfunktion

ilogcdf(logp, /, *[, method])

Inverse des Logarithmus der kumulativen Verteilungsfunktion.

logccdf(x[, y, method])

Logarithmus der komplementären kumulativen Verteilungsfunktion

ilogccdf(logp, /, *[, method])

Inverse des Logarithmus der komplementären kumulativen Verteilungsfunktion.

entropy(*[, method])

Differentielle Entropie

logentropy(*[, method])

Logarithmus der differentiellen Entropie

Hinweise

Die folgenden Abkürzungen werden im gesamten Dokument verwendet.

  • PDF: Wahrscheinlichkeitsdichtefunktion

  • CDF: Kumulative Verteilungsfunktion

  • CCDF: Komplementäre CDF

  • Entropie: Differentielle Entropie

  • Log-F: Logarithmus von F (z. B. Log-CDF)

  • Inverse F: Inverse Funktion von F (z. B. Inverse CDF)

Die API-Dokumentation dient der Beschreibung der API und nicht als statistisches Nachschlagewerk. Es wird versucht, auf dem für die Nutzung der Funktionalität erforderlichen Niveau korrekt zu sein, nicht mathematisch rigoros. Zum Beispiel können Stetigkeit und Differenzierbarkeit stillschweigend angenommen werden. Für präzise mathematische Definitionen konsultieren Sie Ihr bevorzugtes mathematisches Werk.

Beispiele

Um die Verteilungsklasse zu verwenden, muss sie mit Schlüsselwortparametern instanziiert werden, die einer der akzeptierten Parametrisierungen entsprechen.

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> from scipy.stats import Normal
>>> X = Normal(mu=-0.81, sigma=0.69)

Zur Vereinfachung kann die Methode plot verwendet werden, um die Dichte und andere Funktionen der Verteilung zu visualisieren.

>>> X.plot()
>>> plt.show()
../../_images/scipy-stats-Normal-1_00_00.png

Der Unterstützungsbereich der zugrundeliegenden Verteilung ist über die Methode support verfügbar.

>>> X.support()
(np.float64(-inf), np.float64(inf))

Die numerischen Werte von Parametern, die allen Parametrisierungen zugeordnet sind, sind als Attribute verfügbar.

>>> X.mu, X.sigma
(np.float64(-0.81), np.float64(0.69))

Um die Wahrscheinlichkeitsdichte/-massefunktion der zugrundeliegenden Verteilung am Argument x=-1.13 auszuwerten

>>> x = -1.13
>>> X.pdf(x), X.pmf(x)
(np.float64(0.5192263911374636), np.float64(0.0))

Die kumulative Verteilungsfunktion, ihr Komplement und der Logarithmus dieser Funktionen werden ähnlich ausgewertet.

>>> np.allclose(np.exp(X.logccdf(x)), 1 - X.cdf(x))
True

Die Umkehrfunktionen dieser Funktionen bezüglich des Arguments x sind ebenfalls verfügbar.

>>> logp = np.log(1 - X.ccdf(x))
>>> np.allclose(X.ilogcdf(logp), x)
True

Beachten Sie, dass Verteilungsfunktionen und ihre Logarithmen auch Zwei-Argument-Versionen für die Arbeit mit der Wahrscheinlichkeitsmasse zwischen zwei Argumenten haben. Das Ergebnis ist tendenziell genauer als die naive Implementierung, da es subraktive Auslöschung vermeidet.

>>> y = -0.56
>>> np.allclose(X.ccdf(x, y), 1 - (X.cdf(y) - X.cdf(x)))
True

Es gibt Methoden zur Berechnung von Maßen für zentrale Tendenz, Streuung, höhere Momente und Entropie.

>>> X.mean(), X.median(), X.mode()
(np.float64(-0.81), np.float64(-0.81), np.float64(-0.81))
>>> X.variance(), X.standard_deviation()
(np.float64(0.4760999999999999), np.float64(0.69))
>>> X.skewness(), X.kurtosis()
(np.float64(0.0), np.float64(3.0))
>>> np.allclose(X.moment(order=6, kind='standardized'),
...             X.moment(order=6, kind='central') / X.variance()**3)
True
>>> np.allclose(np.exp(X.logentropy()), X.entropy())
True

Pseudozufällige Stichproben können mit sample aus der zugrundeliegenden Verteilung gezogen werden.

>>> X.sample(shape=(4,))
array([-0.79332831, -0.61826103, -0.74610898, -0.78086839])  # may vary