усечение#
- scipy.stats.усечение(X, lb=-inf, ub=inf)[источник]#
Усечь носитель случайной величины.
Для случайной величины X,
truncateвозвращает случайную величину с поддержкой, усеченной до интервала между lb и ub. Базовая функция плотности вероятности нормализована соответствующим образом.- Параметры:
- XContinuousDistribution
Случайная величина, которая должна быть усечена.
- lb, ubмассивоподобный объект с типом float
Нижняя и верхняя точки усечения соответственно. Должны быть совместимы по форме друг с другом и с формой X.
- Возвращает:
- XContinuousDistribution
Усечённая случайная величина.
Ссылки
[1]"Усеченное распределение". Википедия. https://en.wikipedia.org/wiki/Truncated_distribution
Примеры
Сравнить с
scipy.stats.truncnorm, который усекает стандартное нормальное распределение, затем сдвигает и масштабирует его.>>> 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()
Однако предположим, что мы хотим сдвинуть и масштабировать нормальную случайную величину, затем усечь ее носитель до заданных значений. Это просто сделать с помощью
truncate.>>> Z = stats.truncate(scale * stats.Normal() + loc, lb, ub) >>> Z.plot() >>> plt.show()
Кроме того,
truncateможет быть применена к любой случайной величине:>>> Rayleigh = stats.make_distribution(stats.rayleigh) >>> W = stats.truncate(Rayleigh(), lb=0.5, ub=3) >>> W.plot() >>> plt.show()