a<b для отримання відповідних нормальних значень.
ΦX1,...,XNμσ2†a<b
Xi=μ+σ⋅Φ−1(Ui)U1,...,UN∼IID U[Φ(a−μσ),Φ(b−μσ)].
Не існує вбудованої функції для генерованих значень із усіченого розподілу, але тривіально програмувати цей метод, використовуючи звичайні функції для генерації випадкових змінних. Ось проста R
функція, rtruncnorm
яка реалізує цей метод у кількох рядках коду.
rtruncnorm <- function(N, mean = 0, sd = 1, a = -Inf, b = Inf) {
if (a > b) stop('Error: Truncation range is empty');
U <- runif(N, pnorm(a, mean, sd), pnorm(b, mean, sd));
qnorm(U, mean, sd); }
Це векторизована функція, яка буде генерувати N
IID випадкові змінні з усіченого нормального розподілу. Програмувати функції для інших усічених дистрибутивів за допомогою того ж методу було б легко. Також було б не надто складно запрограмувати пов'язані функції щільності та квантилі для усіченого розподілу.
†μσ2