use*_*006 53 python statistics
我有numpy,statsmodel,pandas和scipy(我认为)
如何计算p值的z得分,反之亦然?
例如,如果我的ap值为0.95,我应该得到1.96作为回报.
我在scipy中看到了一些函数,但它们只在数组上运行z测试.
Myl*_*ker 102
>>> import scipy.stats as st
>>> st.norm.ppf(.95)
1.6448536269514722
>>> st.norm.cdf(1.64)
0.94949741652589625
Run Code Online (Sandbox Code Playgroud)
正如其他用户所说,Python默认计算左/下尾概率.如果要确定包含95%分布的密度点,则必须采用另一种方法:
>>>st.norm.ppf(.975)
1.959963984540054
>>>st.norm.ppf(.025)
-1.960063984540054
Run Code Online (Sandbox Code Playgroud)
Xav*_*hot 17
从 开始Python 3.8
,标准库提供NormalDist
对象作为statistics
模块的一部分。
它可用于获取zscore
正态曲线下面积的 x%(忽略两条尾部)。
我们可以使用标准正态分布上的inv_cdf
(逆累积分布函数)和(累积分布函数)从另一个获得一个,反之亦然:cdf
from statistics import NormalDist
NormalDist().inv_cdf((1 + 0.95) / 2.)
# 1.9599639845400536
NormalDist().cdf(1.9599639845400536) * 2 - 1
# 0.95
Run Code Online (Sandbox Code Playgroud)
对“(1 + 0.95) / 2”的解释。公式可以在维基百科部分找到。
如果你对T检验感兴趣,你可以做类似的事情:
摘要:如果样本量大于 30,则 z 分布和 t 分布几乎相同,可以使用其中之一。如果总体标准差可用并且样本量大于 30,则可以将 t 分布与总体标准差一起使用,而不是样本标准差。
测试 统计 |
查找 表 |
查找 值 |
临界 值 |
正态分布 |
总体 标准 差(西格玛) |
样本 量 |
---|---|---|---|---|---|---|
z 统计量 | z表 | z 分数 | z-关键是特定置信水平下的 z 分数 | 是的 | 已知的 | > 30 |
t-统计量 | T表 | t 分数 | t-关键是特定置信水平下的 t 分数 | 是的 | 未知 | < 30 |
Python Percent Point Function用于计算特定置信水平下的临界值:
= stats.norm.ppf(1 - alpha) (use alpha = alpha/2 for two-sided)
= stats.t.ppf(alpha/numOfTails, ddof)
import numpy as np
from scipy import stats
# alpha to critical
alpha = 0.05
n_sided = 2 # 2-sided test
z_crit = stats.norm.ppf(1-alpha/n_sided)
print(z_crit) # 1.959963984540054
# critical to alpha
alpha = stats.norm.sf(z_crit) * n_sided
print(alpha) # 0.05
Run Code Online (Sandbox Code Playgroud)