truncate#
- scipy.stats.truncate(X, lb=-inf, ub=inf)[Quelle]#
Beschneidet die Unterstützung einer Zufallsvariable.
Gegeben eine Zufallsvariable X, gibt
truncateeine Zufallsvariable mit einer auf das Intervall zwischen lb und ub beschnittenen Unterstützung zurück. Die zugrundeliegende Wahrscheinlichkeitsdichtefunktion wird entsprechend normiert.- Parameter:
- XContinuousDistribution
Die zu beschneidende Zufallsvariable.
- lb, ubfloat array-like
Die untere bzw. obere Beschneidungspunkt. Müssen miteinander und mit der Form von X broadcastbar sein.
- Rückgabe:
- XContinuousDistribution
Die beschnittene Zufallsvariable.
Referenzen
[1]„Truncated Distribution“. Wikipedia. https://en.wikipedia.org/wiki/Truncated_distribution
Beispiele
Vergleichen Sie dies mit
scipy.stats.truncnorm, das eine Standardnormalverteilung beschneidet, *dann* verschiebt und skaliert.>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy import stats >>> loc, scale, lb, ub = 1, 2, -2, 2 >>> X = stats.truncnorm(lb, ub, loc, scale) >>> Y = scale * stats.truncate(stats.Normal(), lb, ub) + loc >>> x = np.linspace(-3, 5, 300) >>> plt.plot(x, X.pdf(x), '-', label='X') >>> plt.plot(x, Y.pdf(x), '--', label='Y') >>> plt.xlabel('x') >>> plt.ylabel('PDF') >>> plt.title('Truncated, then Shifted/Scaled Normal') >>> plt.legend() >>> plt.show()
Angenommen, wir möchten eine normale Zufallsvariable verschieben und skalieren und dann ihre Unterstützung auf gegebene Werte beschneiden. Dies ist mit
truncateeinfach.>>> Z = stats.truncate(scale * stats.Normal() + loc, lb, ub) >>> Z.plot() >>> plt.show()
Darüber hinaus kann
truncateauf jede Zufallsvariable angewendet werden>>> Rayleigh = stats.make_distribution(stats.rayleigh) >>> W = stats.truncate(Rayleigh(), lb=0.5, ub=3) >>> W.plot() >>> plt.show()