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 Rfunzione rtruncnormche 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à Nvariabili 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