a < b
ΦX1, . . . , XNμσ2†a < b
XEu= μ + σ⋅ Φ- 1( UEu)você1, . . . , UN∼ IDI U [ Φ ( a - μσ) ,Φ ( b - μσ) ] .
Não há função incorporada para valores gerados a partir da distribuição truncada, mas é trivial programar esse método usando as funções comuns para gerar variáveis aleatórias. Aqui está uma R
função simples rtruncnorm
que implementa esse método em algumas linhas 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); }
Essa é uma função vetorizada que irá gerar N
variáveis aleatórias de IID a partir da distribuição normal truncada. Seria fácil programar funções para outras distribuições truncadas pelo mesmo método. Também não seria muito difícil programar funções associadas de densidade e quantil para a distribuição truncada.
†μσ2