Python 给定 nan 的 t 统计量的 p 值

Python p value from t-statistic giving nan

我有一些 t 值和自由度,想从中找到 p 值(它是双尾的)。在现实世界中,我会在统计学教科书后面使用 t 检验 table;但是,我在 python 中使用 stdtr 或 stats.t.sf 函数。它们都适用于较小的自由度,但给我 nan 较大的自由度:

pf = 2*stdtr(dof, -np.abs(tf))
pval = 2*stats.t.sf(np.abs(tf), dof-1)

tf = -11.374250, dof=-2176568.362223 给出 pf 和 pval= nan.

能否请您帮助我了解内部发生的情况。此外,如何阅读python的这些内部函数的代码。

关于内部发生的事情。那么,Student t 分布是为 dof > 0 定义的,至少在 scipy.stats 中是这样: http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.stats.t.html。 因此 nan:

In [11]: stats.t.sf(-11, df=10)
Out[11]: 0.99999967038443183

In [12]: stats.t.sf(-11, df=-10)
Out[12]: nan