a<b
ΦX1,...,XNμσ2†a<b
Xi=μ+σ⋅Φ−1(Ui)U1,...,UN∼IID U[Φ(a−μσ),Φ(b−μσ)].
No hay una función incorporada para los valores generados a partir de la distribución truncada, pero es trivial programar este método utilizando las funciones ordinarias para generar variables aleatorias. Aquí hay una Rfunción simple rtruncnormque implementa este método en unas pocas líneas de código.
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); }
Esta es una función vectorizada que generará Nvariables aleatorias IID a partir de la distribución normal truncada. Sería fácil programar funciones para otras distribuciones truncadas a través del mismo método. Tampoco sería demasiado difícil programar las funciones asociadas de densidad y cuantil para la distribución truncada.
†μσ2