计算正态分布的百分位数


9

参见此维基百科页面:

http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Agresti-Coull_Interval

要获得Agresti-Coull间隔,需要计算正态分布的百分位数,称为 z。如何计算百分位数?Wolfram Mathematica和/或Python / NumPy / SciPy中是否有现成的函数可以执行此操作?


1
不幸的是,“我完全是从Wiki获得的普通CDF”中的积分表达式偏离了 1/π。对于使用标准函数的有限数量的项,正常cdf或其逆数没有已知的精确公式(exp,log,sincos等),但对正常cdf及其反函数都进行了很多研究,并且将两者的近似公式编程到许多计算器,电子表格中,更不用说统计软件包了。我不熟悉R,但是如果R还没有您想要的内置功能,我会感到惊讶。
Dilip Sarwate'2

@DilipSarwate,它是固定的!我正在使用逆变换来执行此操作,也“不允许”使用过多的内置函数。这是为了学习,我想是这样。
user1061210 2012年

1
@Dilip:不仅是有没有已知的精确公式,更好的是,它是已知的,没有这样的公式可以存在!
主教

1
Box-Muller方法从独立的标准正态随机变量的联合分布中生成样本。因此,生成的值的直方图将类似于标准正态分布。但是Box-Muller方法不是一种用于计算值的方法Φ(x) 除了“我生成的 104 其中的标准普通样品 8401 有价值 1 或更少,等等 Φ(1)0.8401Φ1(0.8401)1
Dilip Sarwate 2012年

1
我只是选择了 8401 作为您可能期望的数字种类的示例。 Φ(1)=0.8413 所以如果你产生 104标准正态分布的样本,你应该会接近841310000 样品有价值 1。你是正确地实现箱穆勒方法,但不理解的结果你得到,而不是将它们与民防部队等
迪利普Sarwate

Answers:


3

对于Mathematica, $VersionNumber > 5您可以使用

Quantile[NormalDistribution[μ, σ], 100 q]

对于q个百分点。

否则,您必须首先加载适当的统计信息包。


(我的版本是7。)加载Statistics软件包没有问题。但是那里叫什么功能?因为我得到的印象是,该Quantile行将手动执行计算,而不使用公式。
Ram Rachum 2010年

用象征性的参数评估它(即不指定值musigmaq); 您应该得到一个涉及反误差函数的表达式。
JM不是统计学家2010年


4

好吧,您没有询问R,但是在R中您使用?qnorm进行了询问。

(实际上是分位数,而不是百分位数,所以我相信)

> qnorm(.5)
[1] 0
> qnorm(.95)
[1] 1.644854

1
分位数百分位数(仅是术语问题),j.mp/dsYz9z
chl 2010年

1
当我们进入时,PropCIs包装中提供了R Wald调整后的CI(例如Agresti-Coull)。威尔逊的方法是in中的默认方法Hmisc::binconf(如Agresti和Coull所建议)。
chl 2010年

3

在Python中,您可以使用scipy包中的stats模块(在下面的示例中,查找)。cdf()

(似乎超越软件包还包括通常的累积分布)。


0

您可以使用erf逆函数,例如在MatLab和Mathematica中可用。

对于普通CDF,从

y=Φ(x)=12[1+erf(x2)]

我们得到

x=2 erf1(2y1)

对于对数正态CDF,从

y=Fx(x;μ,σ)=12erfc(logxμσ2)

我们得到

log(x)=μ+σ2 erfc1(2y)

2
这不只是评论而不是答案吗?
2012年

我的想法是,如果您有erf和erfc函数的逆函数,那么问题就可以解决。例如,MatLab具有这样的预编程功能。
Jean-VictorCôté2012年

@Jean-VictorCôté请在回复中提出您的想法。否则,它看起来就像是上面建议的注释。
chl 2012年

对数正态计算看起来不正确。毕竟,它的逆CDF应该法线的逆CDF 相同,才能使用log(x) 代替 x
ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.