【问题标题】:Matlab - intersection point between two normal distributionsMatlab - 两个正态分布之间的交点
【发布时间】:2018-09-04 12:23:26
【问题描述】:

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

你能给我任何提示来计算 Matlab 中两个正态分布之间的交点吗?

编辑:

正如 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 开发的奇妙功能。但是我得到了太多的交叉点(因为正如预期的那样,当它们接近于零时,两条尾巴交叉了几次)。

【问题讨论】:

  • 这看起来最好通过数学来解决。把具有不同均值和 sigma 的 2 个高斯方程放入,然后求解相同的值。还是您只接受数值近似?
  • 我已经尝试过您告诉我的内容,但我得到的结果我不知道如何解释。
  • 因为你是用数字计算的。你没有按照我说的去做。
  • 那我没看明白。 “求解相同的值”是什么意思?
  • 您理解正确。你不明白的是,通过分析和数字方式解决问题是完全不同的事情。您正在以数字方式解决它,如果您测试答案,它是正确的(它不是唯一的解决方案)。我的意思是,拿一些纸,手动求解交叉点的方程。或者使用符号数学。

标签: matlab statistics gaussian


【解决方案1】:

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

请使用以下代码:

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

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

@(x) dist1(x) - dist2(x) 有很多零。 fzero 从“x0”开始并以数字方式找到函数的第一个零(第一个 x 满足 dist1(x) - dist2(x)

【讨论】:

  • 不客气。如果您想多次进行大量模拟,也许您可​​以添加一些代码而不是像25这样的特定起点。合适的起点应该位于mu1和mu2之间。也许您应该考虑 fzero 的精度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多