a < b
ΦX1, . . . , XNμσ2†a < b
Xio= μ + σ⋅ Φ- 1( Uio)U1, . . . , UN∼ IID U [ Φ ( a - μσ) ,Φ ( b - μσ) ] .
Non esiste una funzione integrata per i valori generati dalla distribuzione troncata, ma è banale programmare questo metodo usando le normali funzioni per generare variabili casuali. Ecco una semplice R
funzione rtruncnorm
che implementa questo metodo in poche righe di codice.
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); }
Questa è una funzione vettoriale che genererà N
variabili casuali IID dalla distribuzione normale troncata. Sarebbe facile programmare le funzioni per altre distribuzioni troncate con lo stesso metodo. Inoltre, non sarebbe troppo difficile programmare la densità e le funzioni quantiche associate per la distribuzione troncata.
†μσ2