R / Python置信区间

时间:2019-03-10 19:53:39

标签: python r confidence-interval

只是想弄清楚一个R-> Python问题:为什么这两个项目没有给出相同的结果?

计算平均值为65,s = 22,n = 121的样本数据的95%置信区间。

R: tsum.test(n.x=121, mean.x=65, s.x=22)

给出95%的置信区间 61.04014 68.95986

Python: stats.norm.interval(alpha=0.95, loc=65, scale=22/np.sqrt(121))

给出95%的置信区间 (61.080072030919894, 68.9199279690801)

我认为这些结果应该是相同的,或者我是否没有为R的tsum.test使用适当的等效Python函数?

1 个答案:

答案 0 :(得分:0)

在进一步调查中,我发现我认为使用stats.norm是错误的。

scipy.stats.t允许计算R的tsum.test自动执行的自由度:

stats.t.interval(alpha = 0.95, df = 121-1, loc = 65, scale= 22/np.sqrt(121)) 退货 (61.04013918989445, 68.95986081010555)

四舍五入到R中tsum.test给出的答案的小数点后。

如果有用,我正在使用的常规功能是:

def get_conf_interval_from_sample(n, mean, sigma, alpha = 0.95) :
    """Get confidence interval from sample data with sample of n, mean, sigma, where df = n-1
    Equivalent to getting confidence interval using t.test / tsum.test in R"""
    df = n-1
    scale = sigma / np.sqrt(n)
    return stats.t.interval(alpha=alpha, df=df, loc=mean, scale=scale)````