a<b
ΦX1,...,XNμσ2†a<b
Xi=μ+σ⋅Φ−1(Ui)U1,...,UN∼IID U[Φ(a−μσ),Φ(b−μσ)].
Il n'y a pas de fonction intégrée pour les valeurs générées à partir de la distribution tronquée, mais il est trivial de programmer cette méthode en utilisant les fonctions ordinaires pour générer des variables aléatoires. Voici une R
fonction simple rtruncnorm
qui implémente cette méthode en quelques lignes de code.
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); }
Il s'agit d'une fonction vectorisée qui générera N
des variables aléatoires IID à partir de la distribution normale tronquée. Il serait facile de programmer des fonctions pour d'autres distributions tronquées via la même méthode. Il ne serait pas non plus trop difficile de programmer les fonctions de densité et de quantile associées pour la distribution tronquée.
†μσ2