2015-03-31 566 views
4

我在Matlab中寻找python等效的norminv函数。[科学/数量] Python等价于Matlabs“norminv”(正态逆累积分布函数)

或者换句话说(从上面的描述): 我在Python搜索的“正常逆累积分布函数”,或可能在统计SciPy的一部分(或者,也许NumPy的?)

我会猜测它存在于scipy中,但可能在另一个名称中,而不是在matlab中,或在matlabs帮助页面中。不过,我不确定这个功能的其他名称,或确切的工作,所以我很难找到它。不幸的是,它不是简单的“反常规积...”而不是“正常积分...”

回答

1

它完全取决于你想要的。如果你想要一个与正态分布相反的分布的cdf,你需要invgauss,“一个反高斯连续随机变量”。要获得cdf,您需要使用invgauss.cdf方法。从文档改编:

from scipy.stats import invgauss 
mu = 0.145462645553 
vals = invgauss.ppf([0.001, 0.5, 0.999], mu) 
res = invgauss.cdf(vals, mu) 

在另一方面,如果你想正态分布的cdf的倒数,你想要的norm分布ppf方法,这是“百分比点功能(逆cdf - 百分点)“。

+0

我不认为这是正确的:[反高斯分布](http://en.wikipedia.org/wiki/Inverse_Gaussian_distribution) – knedlsepp 2015-03-31 14:26:58

+0

从scipy 0.10.0发布说明:“不推荐使用的名称'invnorm'是已从'scipy.stats.distributions'中移除,此分布可用作'invgauss'。“ – TheBlackCat 2015-03-31 14:32:22

+0

我只是不确定*逆高斯cdf *是否与*高斯cdf *的逆相同。我只是交叉检查这个。 – knedlsepp 2015-03-31 14:36:59