a<b
ΦX1,...,XNμσ2†a<b
Xi=μ+σ⋅Φ−1(Ui)U1,...,UN∼IID U[Φ(a−μσ),Φ(b−μσ)].
Nie ma wbudowanej funkcji generowania wartości z obciętego rozkładu, ale programowanie tej metody przy użyciu zwykłych funkcji do generowania zmiennych losowych jest banalne. Oto prosta R
funkcja, rtruncnorm
która implementuje tę metodę w kilku wierszach kodu.
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); }
Jest to wektoryzowana funkcja, która wygeneruje N
losowe zmienne IID ze skróconego rozkładu normalnego. Łatwo byłoby zaprogramować funkcje dla innych skróconych dystrybucji za pomocą tej samej metody. Nie byłoby też zbyt trudne zaprogramowanie powiązanych funkcji gęstości i kwantylu dla skróconego rozkładu.
†μσ2 nie są średnią i wariancją rozkładu obciętego.