使用ppf
中的scipy.stat.norm
函数,我得到一个单尾结果,例如ppf(.95)
给出1.644...
而不是1.96...
两个 - 尾分配应该得到。
scipy中是否有一个函数根据p值给出双尾z分数?
答案 0 :(得分:10)
您正在寻找的内容非常简单
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()
。此图可以帮助您可视化概念。