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 R
función simple rtruncnorm
que 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á N
variables 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