使用来自scipy.stat.norm的ppf函数,我得到了一个单尾结果,例如ppf(.95)会给出1.644…而不是应该得到的双尾分布1.96…。在scipy中是否有一个函数可以根据p值提供双尾z分数呢?
你要寻找的只是
In [12]: def normz(val):
....: return scipy.stats.norm.ppf((1+val)/2)
....:
In [13]: normz(0.95)
Out[13]: 1.959963984540054
这是由于正态分布的对称性质所致。95%置信区间覆盖了正态曲线的95%,因此获得落在这95%外的值的概率小于5%(因为它的形状)。然后回想一下正态曲线是对称的,每个尾部的面积是相等的:
因此,在您的情况下,每个尾部的面积为 0.025
。
因此,为了使用 scipy.stats.normal.ppf()
和 C
,您必须使用正态分布的对称性质并且
以获得适当的下/上尾部概率 0.975
以用于 scipy.stats.norm.ppf()
。此图可帮助您理解这个概念。