Python中的学生t置信区间

10

我希望使用Python计算学生t分布的置信区间。

我正在使用Mathematica中的StudentTCI()函数,现在需要用Python编写相同的函数http://reference.wolfram.com/mathematica/HypothesisTesting/ref/StudentTCI.html

我不太确定如何自己构建此函数,但在开始之前,是否有Python中的此函数?像numpy一样?(我没有使用过numpy,我的顾问建议尽可能不要使用numpy)。

解决这个问题最简单的方法是什么? 我可以将numpy中StudentTCI()的源代码复制到我的代码中作为函数定义吗?

编辑:我需要使用Python代码构建学生t分布的置信区间(如果可能)。 安装scipy已成为死胡同。 我遇到了其他人遇到的同样问题,如果设置需要这么长时间,那么我无法要求分发的代码安装Scipy。

有人知道如何查看scipy版本中该算法的源代码吗? 我想将其重构为Python定义。

1个回答

17
我猜你可以使用 scipy.stats.t 和它的interval方法来实现:
In [1]: from scipy.stats import t
In [2]: t.interval(0.95, 10, loc=1, scale=2)  # 95% confidence interval
Out[2]: (-3.4562777039298762, 5.4562777039298762)
In [3]: t.interval(0.99, 10, loc=1, scale=2)  # 99% confidence interval
Out[3]: (-5.338545334351676, 7.338545334351676)

当然可以自己编写函数。让我们把它写成类似于Mathematica的样子:
from scipy.stats import t


def StudentTCI(loc, scale, df, alpha=0.95):
    return t.interval(alpha, df, loc, scale)

print StudentTCI(1, 2, 10)
print StudentTCI(1, 2, 10, 0.99)

结果:

(-3.4562777039298762, 5.4562777039298762)
(-5.338545334351676, 7.338545334351676)

谢谢。这正是我需要的。我正在尝试安装scipy(win7 64x),但它并不像应该那样直截了当?我使用32位python,因此我认为我也需要32位的scipy,但我不确定如何获得它。我现在正在安装一个叫做anaconda的东西,我想这应该可以完成工作吧?没有什么办法可以只安装scipy吗? - SwimBikeRun
@SwimBikeRun,我建议你安装Enthought Canopy。它提供了一种简单直接的方式来安装和管理Python包。Scipy已经包含在Express版本中,所以你不需要为此付费。还有pythonxy也带有Scipy,但我从未真正使用过它。 - abudis
仅供未来用户参考,我花费了太多时间安装虚拟机+Linux以及几个双启动的Linux系统(Ubuntu,Mint),现在我回到了Windows 7 64位,但是使用32位工具运行所有内容。现在一切都很顺利。 - SwimBikeRun
你从哪里获取t.interval函数的文档?我无法从这个链接中弄清楚loc和scale是做什么用的 - http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.t.html?highlight=stats.t#scipy.stats.t - SwimBikeRun
2
@SwimBikeRun,loc是位置参数或平均值μ。在这种情况下,scale是方差σ。如果您不想使用SciPy,可以在此处找到分布及其方法的源代码。但是,SciPy依赖于NumPy,因此您的用户必须安装它。 - abudis
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接