Main Content

norminv

正态逆累积分布函数

说明

示例

x = norminv(p) 基于 p 中的概率值计算并返回标准正态累积分布函数 (cdf) 的逆函数值。

x = norminv(p,mu) 基于 p 中的概率值计算并返回具有均值 mu 和单位标准差的正态 cdf 的逆函数值。

示例

x = norminv(p,mu,sigma) 基于 p 中的概率值计算并返回具有均值 mu 和标准差 sigma 的正态 cdf 的逆函数值。

musigma 为估计值时,[x,xLo,xUp] = norminv(p,mu,sigma,pCov) 还返回 x 的 95% 置信边界 [xLo,xUp]。pCov 是估计参数的协方差矩阵。

示例

[x,xLo,xUp] = norminv(p,mu,sigma,pCov,alpha) 指定置信区间 [xLo,xUp] 的置信水平为 100(1–alpha)%。

示例

全部折叠

找出一个包含 95% 的标准正态分布值的区间。

x = norminv([0.025 0.975])
x = 1×2

   -1.9600    1.9600

请注意,区间 x 不是唯一符合此条件的区间,但它是符合条件的最短区间。再找另一个区间。

xl = norminv([0.01 0.96])
xl = 1×2

   -2.3263    1.7507

区间 x1 也包含 95% 的概率,但比 x 长。

计算均值为 mu 和标准差为 sigma 的正态分布在 p 中的概率值处的逆 cdf 值。

p = 0:0.25:1;
mu = 2;
sigma = 1;
x = norminv(p,mu,sigma)
x = 1×5

      -Inf    1.3255    2.0000    2.6745       Inf

计算具有不同均值参数的各种正态分布在 0.5 处的逆 cdf 值。

mu = [-2,-1,0,1,2];
sigma = 1;
x = norminv(0.5,mu,sigma)
x = 1×5

    -2    -1     0     1     2

计算正态分布参数的最大似然估计 (MLE),然后计算对应逆 cdf 值的置信区间。

从均值为 5、标准差为 2 的正态分布中生成 1000 个正态随机数。

rng('default') % For reproducibility
n = 1000; % Number of samples
x = normrnd(5,2,[n,1]);

使用 mle 计算分布参数(均值和标准差)的 MLE。

phat = mle(x)
phat = 1×2

    4.9347    1.9969

muHat = phat(1);
sigmaHat = phat(2);

使用 normlike 估计分布参数的协方差。如果您传递 MLE 和用于估计 MLE 的样本,则函数 normlike 返回渐近协方差矩阵的逼近。

[~,pCov] = normlike([muHat,sigmaHat],x)
pCov = 2×2

    0.0040   -0.0000
   -0.0000    0.0020

计算在 0.5 处的逆 cdf 值及其 99% 置信区间。

[x,xLo,xUp] = norminv(0.5,muHat,sigmaHat,pCov,0.01)
x = 4.9347
xLo = 4.7721
xUp = 5.0974

x 是使用参数为 muHatsigmaHat 的正态分布的逆 cdf 值。考虑到使用 pCovmuHatsigmaHat 的不确定性,区间 [xLo,xUp] 是在 0.5 处计算的逆 cdf 值的 99% 置信区间。99% 置信区间意味着 [xLo,xUp] 包含真实逆 cdf 值的概率为 0.99。

输入参数

全部折叠

用于计算 cdf 的逆函数 (icdf) 的概率值,指定为标量值或标量值组成的数组,其中每个元素都在范围 [0,1] 内。

如果您指定 pCov 来计算置信区间 [xLo,xUp],则 p 必须为标量值。

要在多个值处计算 icdf,请使用数组指定 p。要计算多个分布的 icdf,请使用数组指定 musigma。如果输入参数 pmusigma 中的一个或多个是数组,则数组大小必须相同。在这种情况下,norminv 将每个标量输入扩展为与数组输入大小相同的常量数组。x 中的每个元素是基于 p 中对应元素计算的由 musigma 中对应元素指定的分布的 icdf 值。

示例: [0.1,0.5,0.9]

数据类型: single | double

正态分布的均值,指定为标量值或由标量值组成的数组。

如果您指定 pCov 来计算置信区间 [xLo,xUp],则 mu 必须为标量值。

要在多个值处计算 icdf,请使用数组指定 p。要计算多个分布的 icdf,请使用数组指定 musigma。如果输入参数 pmusigma 中的一个或多个是数组,则数组大小必须相同。在这种情况下,norminv 将每个标量输入扩展为与数组输入大小相同的常量数组。x 中的每个元素是基于 p 中对应元素计算的由 musigma 中对应元素指定的分布的 icdf 值。

示例: [0 1 2; 0 1 2]

数据类型: single | double

正态分布的标准差,指定为正标量值或正标量值组成的数组。

如果您指定 pCov 来计算置信区间 [xLo,xUp],则 sigma 必须为标量值。

要在多个值处计算 icdf,请使用数组指定 p。要计算多个分布的 icdf,请使用数组指定 musigma。如果输入参数 pmusigma 中的一个或多个是数组,则数组大小必须相同。在这种情况下,norminv 将每个标量输入扩展为与数组输入大小相同的常量数组。x 中的每个元素是基于 p 中对应元素计算的由 musigma 中对应元素指定的分布的 icdf 值。

示例: [1 1 1; 2 2 2]

数据类型: single | double

musigma 估计值的协方差,指定为 2×2 矩阵。

如果指定 pCov 来计算置信区间 [xLo,xUp],则 pmusigma 必须为标量值。

您可以使用 mle 来估计 musigma,并使用 normlike 来估计 musigma 的协方差。有关示例,请参阅逆正态 cdf 值的置信区间

数据类型: single | double

置信区间的显著性水平,指定为范围 (0,1) 内的标量。置信水平是 100(1–alpha)%,其中 alpha 是置信区间不包含 true 值的概率。

示例: 0.01

数据类型: single | double

输出参数

全部折叠

p 中的概率值处计算的 icdf 值,以标量值或标量值数组的形式返回。在经过任何必要的标量扩展后,x 的大小与 pmusigma 相同。x 中的每个元素是基于 p 中对应元素计算的由 musigma 中对应元素指定的分布的 icdf 值。

x 的置信边界下限,以标量值或标量值数组的形式返回。xLo 的大小与 x 相同。

x 的置信边界上限,以标量值或标量值数组的形式返回。xUp 的大小与 x 相同。

详细信息

全部折叠

正态分布

正态分布是双参数曲线族。第一个参数 µ 是均值。第二个参数 σ 是标准差。

标准正态分布具有零均值和单位标准差。

根据正态 cdf ,正态逆函数定义为

x=F1(p|μ,σ)={x:F(x|μ,σ)=p},

其中

p=F(x|μ,σ)=1σ2πxe(tμ)22σ2dt.

结果 x 是需提供期望概率 p 的积分方程的解。

算法

  • norminv 函数使用逆补余误差函数 erfcinvnorminverfcinv 的关系为

    norminv(p)=2erfcinv(2p)

    逆补余误差函数 erfcinv(x) 定义为 erfcinv(erfc(x))=x,补余误差函数 erfc(x) 定义为

    erfc(x)=1erf(x)=2πxet2dt.

  • norminv 函数使用 delta 方法计算 x 的置信边界。norminv(p,mu,sigma) 等效于 mu + sigma*norminv(p,0,1)。因此,norminv 函数通过 delta 方法使用 musigma 的协方差矩阵来估计 mu + sigma*norminv(p,0,1) 的方差,并使用此方差的估计值来计算置信边界。当您从大样本中估计 musigmapCov 时,计算的界限会给出所需的大致置信水平。

替代功能

  • norminv 是正态分布特有的函数。Statistics and Machine Learning Toolbox™ 还提供泛型函数 icdf,它支持各种概率分布。要使用 icdf,请创建一个 NormalDistribution 概率分布对象,并将该对象作为输入参数传递,或指定概率分布名称及其参数。请注意,分布特有的函数 norminv 比泛型函数 icdf 的执行速度要快。

参考

[1] Abramowitz, M., and I. A. Stegun. Handbook of Mathematical Functions. New York: Dover, 1964.

[2] Evans, M., N. Hastings, and B. Peacock. Statistical Distributions. 2nd ed. Hoboken, NJ: John Wiley & Sons, Inc., 1993.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出