Matlab - 两个正态分布之间的交叉点

时间:2018-03-26 11:11:54

标签: matlab statistics gaussian

我正在尝试计算给定H0和H1的某个探测器的误报概率和检测概率。为此,我为H0和H1计算了两个pdf。但是为了计算这些概率,我需要知道两个pdf相交的位置,以便计算H1的右尾和H0的左尾。

enter image description here

你能否给我一些提示来计算Matlab中两个正态分布之间的交点?

编辑:

作为Sugested Ander Biguri,我已经象征性地将交叉点计算为:

mu1 = 24;
mu2 = 25;
sigma1 = sqrt(0.5);
sigma2 = sqrt(0.5);
dist1 =@(x) exp(-(x-mu1).^2 / (2*sigma1^2)) / sqrt(2*sigma1^2*pi);
dist2 =@(x) exp(-(x-mu2).^2 / (2*sigma2^2)) / sqrt(2*sigma2^2*pi);
fzero(@(x) dist1(x) - dist2(x), rand * (mu1 - mu2) + (mu1 + mu2))

但是我知道交叉点是“70”。我应该正常化吗?我怎么能解释这个结果呢?

编辑2:

我也尝试过Douglas Schwarz Fast and Robust Curve Intersections开发的奇妙功能。但是我得到了太多的交叉点(因为正如预期的那样,当它们接近零时,两个尾部会交叉几次)。

1 个答案:

答案 0 :(得分:1)

作为@Ander Biguri评论的补充材料。 (无法评论)

请使用以下代码:

fzero(@(x) dist1(x) - dist2(x),25)

替换最后一行“编辑”部分。它仅更改名为“x0”的第二个参数(fzero开始的点)。

@(x)dist1(x) - dist2(x)有很多个零。 fzero从“x0”开始并以数字方式找到函数的第一个零(第一个x满足dist1(x) - dist2(x)<实际上是错误。)。如果你想在数字上找到函数的特定零,你应该给fzero一个合适的起点。