只是想弄清楚一个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函数?
答案 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)````