Python中根据p-value与df计算双侧t-score的实现方法
Python计算与R语言qt结果一致的双侧t-score实现
已知条件
- 双侧检验对应单侧分位点p=0.005
- 自由度df=120
- 要求计算结果和R执行以下命令的输出完全匹配:
T1 = qt(0.005, 120) T2 = -qt(0.005, 120)
之前的误区
之前查阅的scipy.stats.nct是非中心t分布的实现接口,和R中qt默认调用的中心t分布分位数计算不是同一场景,因此找不到对应用法。
正确实现代码
直接使用scipy.stats.t(中心t分布)的ppf方法即可,ppf是累积分布函数的逆函数,和R语言中qt的功能完全对应:
from scipy import stats df = 120 p = 0.005 # 对应R中T1 = qt(0.005, 120) T1 = stats.t.ppf(p, df=df) # 对应R中T2 = -qt(0.005, 120),也可直接写为stats.t.ppf(1-p, df=df) T2 = -stats.t.ppf(p, df=df)
结果验证
运行上述代码得到的输出为:
T1 ≈ -2.6174T2 ≈ 2.6174
和R语言qt命令计算的结果精度完全一致。
内容的提问来源于stack exchange,提问作者Youngun
相关产品推荐
相关产品推荐

