Форма, установленная параметрами a
и b
, определяется относительно нормального распределения (среднее значение 0, дисперсия 1).
Требуетсяограничить распределение N(mu, sigma**2)
отрицательными значениями;то есть вы хотите N(mu, sigma**2)
<0. Используйте свойства нормального распределения, чтобы записать это как: </p>
N(mu, sigma**2) = mu + sigma * N(0, 1) < 0
или
N(0, 1) < -mu/sigma
Таким образом, вы должны установить b
в-mu/sigma
.
Вот короткий сценарий для демонстрации:
import numpy as np
from scipy.stats import truncnorm
import matplotlib.pyplot as plt
mu = -2.0
sigma = 3.5
size = 25000
x = truncnorm.rvs(a=-np.inf, b=-mu/sigma, loc=mu, scale=sigma, size=size)
plt.hist(x, bins=100, density=True, alpha=0.6)
xx = np.linspace(x.min(), 0, 400)
yy = truncnorm.pdf(xx, a=-np.inf, b=-mu/sigma, loc=mu, scale=sigma)
plt.plot(xx, yy, 'k--', linewidth=1)
plt.grid()
plt.show()
Сценарий генерирует этот график: