scipy.stats.ncf#

scipy.stats.ncf = <scipy.stats._continuous_distns.ncf_gen Objekt>[Quelle]#

Eine stetige Zufallsvariable für die nicht-zentrale F-Verteilung.

Als Instanz der Klasse rv_continuous erbt das Objekt ncf davon eine Sammlung allgemeiner Methoden (siehe unten für die vollständige Liste) und vervollständigt sie mit spezifischen Details für diese spezielle Verteilung.

Methoden

rvs(dfn, dfd, nc, loc=0, scale=1, size=1, random_state=None)

Zufallsvariaten.

pdf(x, dfn, dfd, nc, loc=0, scale=1)

Wahrscheinlichkeitsdichtefunktion.

logpdf(x, dfn, dfd, nc, loc=0, scale=1)

Logarithmus der Wahrscheinlichkeitsdichtefunktion.

cdf(x, dfn, dfd, nc, loc=0, scale=1)

Kumulative Verteilungsfunktion.

logcdf(x, dfn, dfd, nc, loc=0, scale=1)

Logarithmus der kumulativen Verteilungsfunktion.

sf(x, dfn, dfd, nc, loc=0, scale=1)

Überlebensfunktion (auch definiert als 1 - cdf, aber sf ist manchmal genauer).

logsf(x, dfn, dfd, nc, loc=0, scale=1)

Logarithmus der Überlebensfunktion.

ppf(q, dfn, dfd, nc, loc=0, scale=1)

Perzentilpunktfunktion (Umkehrung von cdf — Perzentile).

isf(q, dfn, dfd, nc, loc=0, scale=1)

Umgekehrte Überlebensfunktion (Umkehrung von sf).

moment(order, dfn, dfd, nc, loc=0, scale=1)

Nichtzentrales Moment der angegebenen Ordnung.

stats(dfn, dfd, nc, loc=0, scale=1, moments=’mv’)

Mittelwert(‚m‘), Varianz(‚v‘), Schiefe(‚s‘) und/oder Kurtosis(‚k‘).

entropy(dfn, dfd, nc, loc=0, scale=1)

(Differential-)Entropie der RV.

fit(data)

Parameterschätzungen für generische Daten. Siehe scipy.stats.rv_continuous.fit für eine detaillierte Dokumentation der Schlüsselwortargumente.

expect(func, args=(dfn, dfd, nc), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)

Erwartungswert einer Funktion (einer Variablen) bezüglich der Verteilung.

median(dfn, dfd, nc, loc=0, scale=1)

Median der Verteilung.

mean(dfn, dfd, nc, loc=0, scale=1)

Mittelwert der Verteilung.

var(dfn, dfd, nc, loc=0, scale=1)

Varianz der Verteilung.

std(dfn, dfd, nc, loc=0, scale=1)

Standardabweichung der Verteilung.

interval(confidence, dfn, dfd, nc, loc=0, scale=1)

Konfidenzintervall mit gleichen Flächen um den Median.

Siehe auch

scipy.stats.f

Fisher-Verteilung

Hinweise

Die Wahrscheinlichkeitsdichtefunktion für ncf ist

\[\begin{split}f(x, n_1, n_2, \lambda) = \exp\left(\frac{\lambda}{2} + \lambda n_1 \frac{x}{2(n_1 x + n_2)} \right) n_1^{n_1/2} n_2^{n_2/2} x^{n_1/2 - 1} \\ (n_2 + n_1 x)^{-(n_1 + n_2)/2} \gamma(n_1/2) \gamma(1 + n_2/2) \\ \frac{L^{\frac{n_1}{2}-1}_{n_2/2} \left(-\lambda n_1 \frac{x}{2(n_1 x + n_2)}\right)} {B(n_1/2, n_2/2) \gamma\left(\frac{n_1 + n_2}{2}\right)}\end{split}\]

für \(n_1, n_2 > 0\), \(\lambda \ge 0\). Hier ist \(n_1\) der Freiheitsgrad im Zähler, \(n_2\) der Freiheitsgrad im Nenner, \(\lambda\) der Nichtzentralitätsparameter, \(\gamma\) der Logarithmus der Gammafunktion, \(L_n^k\) ist ein verallgemeinertes Laguerre-Polynom und \(B\) ist die Betafunktion.

ncf nimmt dfn, dfd und nc als Formparameter. Wenn nc=0, wird die Verteilung äquivalent zur Fisher-Verteilung.

Diese Verteilung verwendet Routinen aus der Boost Math C++ Bibliothek für die Berechnung der Methoden pdf, cdf, ppf, stats, sf und isf. [1]

Die obige Wahrscheinlichkeitsdichte ist in der "standardisierten" Form definiert. Um die Verteilung zu verschieben und/oder zu skalieren, verwenden Sie die Parameter loc und scale. Genauer gesagt ist ncf.pdf(x, dfn, dfd, nc, loc, scale) identisch äquivalent zu ncf.pdf(y, dfn, dfd, nc) / scale mit y = (x - loc) / scale. Beachten Sie, dass die Verschiebung des Ortes einer Verteilung diese nicht zu einer "nicht-zentralen" Verteilung macht; nicht-zentrale Verallgemeinerungen einiger Verteilungen sind in separaten Klassen verfügbar.

Referenzen

[1]

The Boost Developers. “Boost C++ Libraries”. https://www.boost.org/.

Beispiele

>>> import numpy as np
>>> from scipy.stats import ncf
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)

Ermitteln Sie den Träger (Support)

>>> dfn, dfd, nc = 27, 27, 0.416
>>> lb, ub = ncf.support(dfn, dfd, nc)

Berechnen Sie die ersten vier Momente

>>> mean, var, skew, kurt = ncf.stats(dfn, dfd, nc, moments='mvsk')

Zeigen Sie die Wahrscheinlichkeitsdichtefunktion (pdf) an

>>> x = np.linspace(ncf.ppf(0.01, dfn, dfd, nc),
...                 ncf.ppf(0.99, dfn, dfd, nc), 100)
>>> ax.plot(x, ncf.pdf(x, dfn, dfd, nc),
...        'r-', lw=5, alpha=0.6, label='ncf pdf')

Alternativ kann das Verteilungsobjekt (als Funktion) aufgerufen werden, um die Form-, Orts- und Skalierungsparameter festzulegen. Dies gibt ein „eingefrorenes“ RV-Objekt zurück, das die angegebenen Parameter beibehält.

Frieren Sie die Verteilung ein und zeigen Sie die eingefrorene pdf an

>>> rv = ncf(dfn, dfd, nc)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')

Überprüfen Sie die Genauigkeit von cdf und ppf

>>> vals = ncf.ppf([0.001, 0.5, 0.999], dfn, dfd, nc)
>>> np.allclose([0.001, 0.5, 0.999], ncf.cdf(vals, dfn, dfd, nc))
True

Generieren Sie Zufallszahlen

>>> r = ncf.rvs(dfn, dfd, nc, size=1000)

Und vergleichen Sie das Histogramm

>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
../../_images/scipy-stats-ncf-1.png