区间联合上的截断正态分布

机器算法验证 可能性 分布 截断正态分布
2022-03-29 16:35:16

假设我想找到一个截断的正态分布,而不是在一个区间上定义它(a,b), 在哪里<a<b<, 它的定义是在一个区间上(a,b)(c,d), 在哪里<a<b<c<d<.

首先,这仍然满足截断正态分布的定义吗?维基百科关于此的文章只是使用它来定义它(a,b), 在哪里<a<b<a<X<b(并且 X 是正常的,均值μ和方差σ2)。如果它不是截断的正态分布,那么它是什么?

如果它是截断的正态分布,我将如何计算它?我在想我可以使用总概率定律来处理它,但是我只会得到截断分布作为联合中每个间隔的截断正态分布的 0.5 倍,这对我来说真的没有意义,因为这意味着 X 不是以最大概率取一个值,而是分布中有两个概率相等的峰值(除非我做错了)。

1个回答

您所描述的不是截断正态分布本身,但是它的概率密度函数和累积分布函数可以很容易地计算出来,就像我们处理截断分布一样,所以你需要将它们除以曲线下的剩余面积。即通过

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

在哪里f(x)是非截断密度和F(x)是非截断的 cdf。这可以推广到任何数量的此类间隔。

这种分布的密度是

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

为了说服自己,您可以通过简单的模拟轻松验证此结果(见下文)。

在此处输入图像描述

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")