Distribuição normal truncada em uma união de intervalos

8

Suponha que eu queira encontrar uma distribuição normal truncada, mas em vez de ser definida em um intervalo , em que , sua definição está em um intervalo , onde .(a,b)<a<b<(a,b)(c,d)<a<b<c<d<

Antes de tudo, isso ainda satisfaria a definição de uma distribuição normal truncada? O artigo da Wikipedia sobre isso define apenas usando , onde e (e X é normal com média e variação ) . Se não é uma distribuição normal truncada, o que é?(a,b)<a<b<a<X<bμσ2

Se é uma distribuição normal truncada, como eu a computaria? Eu estava pensando que poderia abordá-lo usando a Lei da Probabilidade Total, mas então obteria a distribuição truncada como 0,5 vezes a distribuição normal truncada para cada intervalo na união, e isso realmente não faz sentido para mim, porque isso significa que, em vez de haver um valor que X poderia ter com probabilidade máxima, há dois picos na distribuição com probabilidade igual (a menos que eu esteja fazendo errado).

Aprendendo
fonte

Respostas:

10

O que você está descrevendo não é uma distribuição normal truncada por si só , mas sua função de densidade de probabilidade e funções de distribuição cumulativa podem ser facilmente calculadas da mesma maneira que geralmente lidamos com distribuições truncadas , portanto, é necessário dividi-las pela área restante sob a curva isto é, por

a<xb  c<xdf(x)dx=[F(b)F(a)]+[F(d)F(c)]

onde é densidade não truncada e é cdf não truncado. Isso pode ser generalizado para qualquer número desses intervalos.f(x)F(x)

A densidade dessa distribuição é

g(x)={f(x)F(b)F(a)+F(d)F(c)for a<xb  c<xd0otherwise

Para se convencer, você pode facilmente verificar esse resultado através de uma simulação simples (veja abaixo).

insira a descrição da imagem aqui

set.seed(123)

m <- 0
s <- 1
a <- -2
b <- -1
c <- 1
d <- 2

x <- rnorm(1e5, m, s)
y <- x[(x > a & x <= b) | (x > c & x <= d)]

g <- function(x, mean = 0, sd = 1, a, b, c, d) {
  ifelse((x > a & x <= b) | (x > c & x <= d),
         dnorm(x, mean = mean, sd = sd) /
           ((pnorm(b, mean = mean, sd = sd) - pnorm(a, mean = mean, sd = sd)) +
              (pnorm(d, mean = mean, sd = sd) - pnorm(c, mean = mean, sd = sd))),
         0)
} 

xx <- seq(-4, 4, by = 0.01)
hist(y, 100, xlim = c(-4, 4), freq = FALSE)
lines(xx, g(xx, m, s, a, b, c, d), col = "red")
Tim
fonte