计算两个重叠分布下的面积

机器算法验证 分布 密度估计 小面积估计
2022-03-30 13:28:50

我有两个重叠的频率分布,一个是买方的需求或支付意愿,另一个是卖方的保留价格频率分布。

这两个分布重叠,我想估计重叠区域。

频率范围

我可以使用哪些统计属性/方法来估计该区域?

2个回答

分布重叠,如图所示。总重叠概率为 XNorm(100,15)YNorm(110,15)

P(Y125)+P(X>125)=P(Y125)+1P(X125)0.048+0.048=0.096.

在此处输入图像描述

图的R代码:

hdr="Densities of NORM(100,15) and NORM(150,15)"
curve(dnorm(x,100,15), 50, 200, ylab="PDF", main=hdr)
curve(dnorm(x,150,15), add=T)
abline(h=0, col = "green2")
abline(v=125, col = "red", lty="dotted")

用于概率计算的 R 代码,其中pnorm是一个普通的 CDF:

pnorm(125, 150, 15)
[1] 0.04779035
1 - pnorm(125, 100, 15)
[1] 0.04779035
pnorm(125, 150, 15) +  1 - pnorm(125, 100, 15)
[1] 0.0955807

注意:对于假设的检验,这两个概率可能是 I 类错误和 II 类错误。

也许这是一个比@BruceET 更通用的解决方案,它不假定正常或预设参考点POP 说他/她有两个分布的 PDF,所以例如这些可能是:

pdf1 <- function(x, mean= 100, sd= 15) {
    pdf <- (1 / (sd * sqrt(2 * pi))) * exp(-0.5 * ((x - mean)/sd)^2)
    return(pdf)
}

pdf2 <- function(x, mean= 150, sd= 15) {
    pdf <- (1 / (sd * sqrt(2 * pi))) * exp(-0.5 * ((x - mean)/sd)^2)
    return(pdf)
}

(这些是高斯的,但它们可能是任何 PDF)

在 x 轴上的数据点网格上计算每个 PDF,取两个密度中的最小值,将其加权为网格的步长,然后求和以获得交点(这是一个非常粗略的整合 - 我会希望看到更好的解决方案...):

step <- 0.1
at <- seq(20, 250, by= step)
x1 <- pdf1(at, 100, 15)
x2 <- pdf2(at, 150, 15)

area <- 0
for(i in 1:length(at)) {
    area <- area + ifelse(x1[i] > x2[i], x2[i], x1[i]) * step
}
print(area)
0.09558193