在Python中从t分布和自由度计算双尾p值
我该如何确定一个t分布的P值,给定n个自由度呢?
关于这个问题的研究让我找到了这个Stack Exchange的回答:https://stackoverflow.com/a/17604216
我猜np.abs(tt)是T值,但我该如何使用自由度呢?是n-1吗?
提前谢谢你!
1 个回答
14
是的,在这个例子中,n-1
就是自由度。
给定一个t值和自由度,你可以使用“生存函数”sf
,这是来自scipy.stats.t
的一个功能(也叫做补充的累积分布函数)来计算单边的p值。第一个参数是T值,第二个参数是自由度。
比如,这个页面上的表格的第一项显示,对于1个自由度,p=0.1时的临界T值是3.078。你可以用t.sf
来验证这一点:
In [7]: from scipy.stats import t
In [8]: t.sf(3.078, 1)
Out[8]: 0.09999038172554342 # Approximately 0.1, as expected.
对于双边p值,只需将单边p值乘以2即可。