【问题标题】:How to use erf to calculate a probability in matlab?matlab中如何使用erf计算概率?
【发布时间】:2015-07-29 20:46:59
【问题描述】:

给定一个最小值和最大值以及 N 个项目,我需要计算 N 个项目的总和大于或等于输入值 LM 的概率。函数句柄:

function Pr = LoadPr(Wmin,Wmax,N,LM)

另一个功能:

function [muL, sigmaL, L ] = plane(Wmin,Wmax,N,M)
    [muW,sigmaW] = package(Wmin,Wmax);
    //  This calculates mu and sigma for a single item
    muL = muW*N;
    sigmaL = sigmaW*N^0.5;
    L = normrnd(muL,sigmaL,1,M);
end

这个函数计算 mu 和 sigma 以及 L 是 1 x M 随机生成的数字数组,使用 sigmaL 和 muL 模拟随机生成的 M 个结果,并给出与前一个函数相似的参数。

我还想使用 erf 和/或 erfc 函数。 一个例子:

Wmin = 2; Wmax = 10; N = 10000; LM = 60400;
Pr = LoadPr(Wmin,Wmax,N,LM )
Pr =
    0.0416

谢谢!

【问题讨论】:

  • N项的值是正态分布还是均匀分布?

标签: matlab statistics probability


【解决方案1】:

[min,max] 范围内的 N 个均匀分布值的总和可以近似为正态分布(对于 N>30),平均值为0.5*N*(min+max),标准差为 $sqrt(N*(max-min )/12)$。

现在高斯的累积分布由下式给出

phi = 0.5*(1+erf((x-mu)/(sqrt(2)*sigma));

这意味着0到6之间的32个值之和的概率将分布为

mean = 96
sigma = sqrt(32*6/12) = 4

总和小于 88 的概率为

p = 0.5*(1+erf((88-96)/(sqrt(2)*4)) = 2.3%

【讨论】:

  • "标准差为 $sqrt(N*(max-min)/12)$。"我是一个新手,不明白“12”常量是从哪里来的。它是针对 OP 的问题,还是对计算相对于 PRNG 0-1 生成数字的结果概率的问题具有某种普遍性?
  • @Venryx 均匀分布的标准偏差遵循我给出的非常普遍的表达式(在大量样本的限制下它变得精确)。您可以通过取 1000 个数字的标准差 0.001 ... 1.000 或 1 ... 1000 来说服自己。
  • 好的;我只是在直观的层面上不明白 12 是从哪里来的。每当我第一次看到某事物的方程时,我注意到一个看似任意的常数,如 12、34 和 59,我立即对了解它的来源感兴趣。比如,为什么这个常数正好是 12,而不是 15、18 或 21? (如果这涉及到过于复杂的解释,请随意忽略——这只是我的好奇心)
  • 哦,我似乎在这里偶然发现了一个解释:math.stackexchange.com/questions/728059/…
  • 很高兴你找到了答案
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多