あなたが説明しているのは切り捨てられた正規分布それ自体ではありませんが、その確率密度関数と累積分布関数は、一般的に切り捨てられた分布を扱うのと同じ方法で簡単に計算できるため、曲線の下の残りの領域でそれらを分割する必要がありますつまり
∫a<x≤b ∪ c<x≤df(x)dx=[F(b)−F(a)]+[F(d)−F(c)]
ここで、は切り捨てられていない密度、は切り捨てられていない累積分布関数です。これは、任意の数のそのような間隔に一般化できます。f(x)F(x)
そのような分布の密度は
g(x)={f(x)F(b)−F(a)+F(d)−F(c)0for a<x≤b ∪ c<x≤dotherwise
自分を納得させるために、簡単なシミュレーションでこの結果を簡単に確認できます(以下を参照)。
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")