scipy.stats.zipfian#

scipy.stats.zipfian = <scipy.stats._discrete_distns.zipfian_gen object>[Quelle]#

Eine diskrete Zufallsvariable nach Zipf.

Als Instanz der Klasse rv_discrete erbt das Objekt zipfian davon eine Sammlung generischer Methoden (siehe unten für die vollständige Liste) und vervollständigt diese mit Details, die spezifisch für diese spezielle Verteilung sind.

Methoden

rvs(a, n, loc=0, size=1, random_state=None)

Zufallsvariaten.

pmf(k, a, n, loc=0)

Wahrscheinlichkeitsmassenfunktion.

logpmf(k, a, n, loc=0)

Logarithmus der Wahrscheinlichkeitsmassenfunktion.

cdf(k, a, n, loc=0)

Kumulative Verteilungsfunktion.

logcdf(k, a, n, loc=0)

Logarithmus der kumulativen Verteilungsfunktion.

sf(k, a, n, loc=0)

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

logsf(k, a, n, loc=0)

Logarithmus der Überlebensfunktion.

ppf(q, a, n, loc=0)

Perzentilpunktfunktion (Umkehrung von cdf — Perzentile).

isf(q, a, n, loc=0)

Umgekehrte Überlebensfunktion (Umkehrung von sf).

stats(a, n, loc=0, moments=’mv’)

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

entropy(a, n, loc=0)

(Differential-)Entropie der RV.

expect(func, args=(a, n), loc=0, lb=None, ub=None, conditional=False)

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

median(a, n, loc=0)

Median der Verteilung.

mean(a, n, loc=0)

Mittelwert der Verteilung.

var(a, n, loc=0)

Varianz der Verteilung.

std(a, n, loc=0)

Standardabweichung der Verteilung.

interval(confidence, a, n, loc=0)

Konfidenzintervall mit gleichen Flächen um den Median.

Siehe auch

zipf

Hinweise

Die Wahrscheinlichkeitsmassenfunktion für zipfian ist

\[f(k, a, n) = \frac{1}{H_{n,a} k^a}\]

für \(k \in \{1, 2, \dots, n-1, n\}\), \(a \ge 0\), \(n \in \{1, 2, 3, \dots\}\).

zipfian nimmt \(a\) und \(n\) als Formparameter. \(H_{n,a}\) ist die \(n\)-te verallgemeinerte harmonische Zahl der Ordnung \(a\).

Die Zipf'sche Verteilung reduziert sich für \(n \rightarrow \infty\) auf die Zipf (Zeta)-Verteilung.

Die obige Wahrscheinlichkeitsmassenfunktion ist in der „standardisierten“ Form definiert. Verwenden Sie zur Verschiebung der Verteilung den Parameter loc. Insbesondere ist zipfian.pmf(k, a, n, loc) identisch äquivalent zu zipfian.pmf(k - loc, a, n).

Referenzen

[1]

„Zipf’s Law“, Wikipedia, https://en.wikipedia.org/wiki/Zipf’s_law

[2]

Larry Leemis, „Zipf Distribution“, Univariate Distribution Relationships. http://www.math.wm.edu/~leemis/chart/UDR/PDFs/Zipf.pdf

Beispiele

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

Ermitteln Sie den Träger (Support)

>>> a, n = 1.25, 10
>>> lb, ub = zipfian.support(a, n)

Berechnen Sie die ersten vier Momente

>>> mean, var, skew, kurt = zipfian.stats(a, n, moments='mvsk')

Anzeigen der Wahrscheinlichkeitsmassenfunktion (pmf)

>>> x = np.arange(zipfian.ppf(0.01, a, n),
...               zipfian.ppf(0.99, a, n))
>>> ax.plot(x, zipfian.pmf(x, a, n), 'bo', ms=8, label='zipfian pmf')
>>> ax.vlines(x, 0, zipfian.pmf(x, a, n), colors='b', lw=5, alpha=0.5)

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

Die Verteilung einfrieren und die eingefrorene pmf anzeigen

>>> rv = zipfian(a, n)
>>> ax.vlines(x, 0, rv.pmf(x), colors='k', linestyles='-', lw=1,
...         label='frozen pmf')
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
../../_images/scipy-stats-zipfian-1_00_00.png

Überprüfen Sie die Genauigkeit von cdf und ppf

>>> prob = zipfian.cdf(x, a, n)
>>> np.allclose(x, zipfian.ppf(prob, a, n))
True

Generieren Sie Zufallszahlen

>>> r = zipfian.rvs(a, n, size=1000)

Bestätigen Sie, dass zipfian für große n und a > 1 zu zipf reduziert.

>>> import numpy as np
>>> from scipy.stats import zipf, zipfian
>>> k = np.arange(11)
>>> np.allclose(zipfian.pmf(k, a=3.5, n=10000000), zipf.pmf(k, a=3.5))
True