a=0.05
excel TINV(a,b)中的结果为2.228138852
from scipy import stats
result = stats.t.ppf(1 - a, b)
结果是1.7989330052096262
如何在Python中获得与在Excel中使用TINV相同的结果?
a=0.05
excel TINV(a,b)中的结果为2.228138852
from scipy import stats
result = stats.t.ppf(1 - a, b)
结果是1.7989330052096262
如何在Python中获得与在Excel中使用TINV相同的结果?
我认为有两个因素你需要知道.首先,在Excel TINV Function中截断自由度的数量(来源:微软)
如果deg_freedom不是整数,它将被截断.
所以在Excel中,执行TINV(0.05 , 10.8)
和TINV(0.05 , 10)
将返回相同的值.
第二个因素,Excel TINV函数返回学生t分布的two-tailed个倒数.但在Python中,您只使用了1个尾部:
所以你需要做a/2
次.在Python中,您可以执行以下操作:
from scipy import stats
a= 0.05
b= 10 # Integer because Excel truncates degrees of freedom
result = stats.t.ppf(1-a/2, b)
print(result)
2.2281388519649385
正如您所见,ouput 2.2281388519649385
与Excel 2,22813884242587
上的结果非常接近——不一样(我不知道为什么,我想这是一个十进制问题),但非常接近.