如何在Python中复现Excel的T.INV.2T函数计算结果
调用出错的核心原因
scipy.stats.t.ppf和Excel T.INV.2T的概率参数对应分布区间的逻辑不一致,你的参数传法不符合双尾t分布逆函数的计算要求。
两个函数的定义差异
- Excel
T.INV.2T(probability, degs_Freedom)是双尾t分布逆函数,返回满足P(|T| > x) = probability的正临界值,输入的概率是双侧尾部的总概率。 scipy.stats.t.ppf(q, df)是单尾t分布的百分位函数,返回满足P(T ≤ x) = q的分位值,你直接传入q=0.05实际是求左尾累积概率为5%的分位值,得到的-1.672是左尾临界值,自然和Excel返回的双尾正临界值不符。
正确调用方法
把传入ppf的概率参数调整为1 - 概率/2即可,示例代码如下:
from scipy.stats import t # 对应Excel T.INV.2T(0.05, 58) print(t.ppf(1 - 0.05/2, 58))
运行输出结果约为2.0017,四舍五入后和Excel返回的2.002完全一致。
你也可以通过abs(t.ppf(0.05/2, 58))得到相同结果,两种写法逻辑等价。
补充参考
如果需要复现Excel单尾逆t函数T.INV(probability, degs_Freedom),直接调用scipy.stats.t.ppf(probability, df)即可,无需调整概率参数。
内容的提问来源于stack exchange,提问作者TK99
相关产品推荐
相关产品推荐

