scipy.stats.

rv_discrete#

class scipy.stats.rv_discrete(a=0, b=inf, name=None, badvalue=None, moment_tol=1e-08, values=None, inc=1, longname=None, shapes=None, seed=None)[Quelle]#

Eine generische diskrete Zufallsvariablenklasse zur Unterklassifizierung.

rv_discrete ist eine Basisklasse zur Erstellung spezifischer Verteilungsklassen und -instanzen für diskrete Zufallsvariablen. Sie kann auch zur Erstellung einer beliebigen Verteilung verwendet werden, die durch eine Liste von Stützpunkten und entsprechenden Wahrscheinlichkeiten definiert ist.

Parameter:
afloat, optional

Untere Schranke des Trägers der Verteilung, Standard: 0

bfloat, optional

Obere Schranke des Trägers der Verteilung, Standard: plus unendlich

moment_tolfloat, optional

Die Toleranz für die allgemeine Berechnung von Momenten.

valuestuple aus zwei Array_likes, optional

(xk, pk) wobei xk ganze Zahlen sind und pk die von Null verschiedenen Wahrscheinlichkeiten zwischen 0 und 1 sind, mit sum(pk) = 1. xk und pk müssen die gleiche Form haben, und xk muss eindeutig sein.

incinteger, optional

Schrittweite für den Träger der Verteilung. Standard ist 1. (andere Werte wurden nicht getestet)

badvaluefloat, optional

Der Wert in Ergebnis-Arrays, der einen Wert angibt, für den eine Argumentbeschränkung verletzt ist, Standard ist np.nan.

namestr, optional

Der Name der Instanz. Diese Zeichenkette wird verwendet, um das Standardbeispiel für Verteilungen zu erstellen.

longnamestr, optional

Diese Zeichenkette wird als Teil der ersten Zeile des Docstrings verwendet, der zurückgegeben wird, wenn eine Unterklasse keinen eigenen Docstring hat. Hinweis: longname existiert aus Kompatibilitätsgründen, verwenden Sie es nicht für neue Unterklassen.

shapesstr, optional

Die Form der Verteilung. Zum Beispiel "m, n" für eine Verteilung, die zwei Ganzzahlen als die beiden Formargumente für alle ihre Methoden entgegennimmt. Wenn nicht angegeben, werden die Formparameter aus den Signaturen der privaten Methoden, _pmf und _cdf der Instanz, abgeleitet.

seed{None, int, numpy.random.Generator, numpy.random.RandomState}, optional

Wenn seed None ist (oder np.random), wird die Singleton-Instanz von numpy.random.RandomState verwendet. Wenn seed eine Ganzzahl ist, wird eine neue RandomState-Instanz mit seed initialisiert. Wenn seed bereits eine Generator- oder RandomState-Instanz ist, wird diese Instanz verwendet.

Attribute:
a, bfloat, optional

Untere/obere Schranke des Trägers der unverschobenen/unskalierten Verteilung. Dieser Wert wird von den Parametern loc und scale nicht beeinflusst. Um den Träger der verschobenen/skalierten Verteilung zu berechnen, verwenden Sie die Methode support.

Methoden

rvs(*args, **kwargs)

Zufallsvariablen des angegebenen Typs.

pmf(k, *args, **kwds)

Wahrscheinlichkeitsmassenfunktion an der Stelle k der gegebenen RV.

logpmf(k, *args, **kwds)

Logarithmus der Wahrscheinlichkeitsmassenfunktion an der Stelle k der gegebenen RV.

cdf(k, *args, **kwds)

Kumulative Verteilungsfunktion (CDF) der gegebenen RV.

logcdf(k, *args, **kwds)

Logarithmus der kumulativen Verteilungsfunktion an der Stelle k der gegebenen RV.

sf(k, *args, **kwds)

Überlebensfunktion (1 - cdf) an der Stelle k der gegebenen RV.

logsf(k, *args, **kwds)

Logarithmus der Überlebensfunktion der gegebenen RV.

ppf(q, *args, **kwds)

Perzentilpunktfunktion (Umkehrung von cdf) an der Stelle q der gegebenen RV.

isf(q, *args, **kwds)

Umgekehrte Überlebensfunktion (Umkehrung von sf) an der Stelle q der gegebenen RV.

moment(order, *args, **kwds)

nicht-zentrales Moment der Verteilung der angegebenen Ordnung.

stats(*args, **kwds)

Einige Statistiken der gegebenen RV.

entropy(*args, **kwds)

Differenzielle Entropie der RV.

expect([func, args, loc, lb, ub, ...])

Erwartungswert einer Funktion bezüglich der Verteilung für diskrete Verteilung durch numerische Summierung berechnen.

median(*args, **kwds)

Median der Verteilung.

mean(*args, **kwds)

Mittelwert der Verteilung.

std(*args, **kwds)

Standardabweichung der Verteilung.

var(*args, **kwds)

Varianz der Verteilung.

interval(confidence, *args, **kwds)

Konfidenzintervall mit gleichen Flächen um den Median.

__call__(*args, **kwds)

Fixiert die Verteilung für die gegebenen Argumente.

support(*args, **kwargs)

Unterstützung der Verteilung.

Hinweise

Diese Klasse ist ähnlich wie rv_continuous. Ob ein Formparameter gültig ist, wird durch eine _argcheck Methode entschieden (die standardmäßig prüft, ob ihre Argumente strikt positiv sind). Die Hauptunterschiede sind wie folgt.

  • Der Träger der Verteilung ist eine Menge von ganzen Zahlen.

  • Anstelle der Wahrscheinlichkeitsdichtefunktion, pdf (und die entsprechende private _pdf), definiert diese Klasse die *Wahrscheinlichkeitsmassenfunktion* pmf (und die entsprechende private _pmf).

  • Es gibt keinen scale Parameter.

  • Die Standardimplementierungen von Methoden (z.B. _cdf) sind nicht für Verteilungen mit einem nach unten unbeschränkten Träger (d.h. a=-np.inf) ausgelegt, daher müssen sie überschrieben werden.

Um eine neue diskrete Verteilung zu erstellen, würden wir Folgendes tun

>>> from scipy.stats import rv_discrete
>>> class poisson_gen(rv_discrete):
...     "Poisson distribution"
...     def _pmf(self, k, mu):
...         return exp(-mu) * mu**k / factorial(k)

und eine Instanz erstellen

>>> poisson = poisson_gen(name="poisson")

Beachten Sie, dass wir oben die Poisson-Verteilung in der Standardform definiert haben. Das Verschieben der Verteilung kann durch Angabe des Parameters loc für die Methoden der Instanz erfolgen. Zum Beispiel delegiert poisson.pmf(x, mu, loc) die Arbeit an poisson._pmf(x-loc, mu).

Diskrete Verteilungen aus einer Liste von Wahrscheinlichkeiten

Alternativ können Sie eine beliebige diskrete RV konstruieren, die auf einer endlichen Menge von Werten xk mit Prob{X=xk} = pk definiert ist, indem Sie das Schlüsselwortargument values für den Konstruktor rv_discrete verwenden.

Deepcopying / Pickling

Wenn eine Verteilung oder eine gefrorene Verteilung deepgecopyt (gepickelt/entpickelt etc.) wird, wird jeder zugrunde liegende Zufallszahlengenerator mitkopiert. Eine Folge davon ist, dass, wenn eine Verteilung vor dem Kopieren auf dem Singleton-Zustand RandomState basiert, sie nach dem Kopieren auf einer Kopie dieses Zufallszustands basiert, und np.random.seed den Zustand nicht mehr kontrolliert.

Beispiele

Benutzerdefinierte diskrete Verteilung

>>> import numpy as np
>>> from scipy import stats
>>> xk = np.arange(7)
>>> pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.2)
>>> custm = stats.rv_discrete(name='custm', values=(xk, pk))
>>>
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
>>> ax.plot(xk, custm.pmf(xk), 'ro', ms=12, mec='r')
>>> ax.vlines(xk, 0, custm.pmf(xk), colors='r', lw=4)
>>> plt.show()
../../_images/scipy-stats-rv_discrete-1_00_00.png

Zufallszahlengenerierung

>>> R = custm.rvs(size=100)