Scipy.stats T分布的置信区间与手工计算时不同

hfsqlsce  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(138)

我试图找到95%的置信区间的平均值使用给定的数组。问题是,每当我尝试使用stats.t的区间方法时,它给我的结果与我手工计算的置信区间不同。我是否无意中错误地使用了间隔方法?
我已经附上了我在下面使用的代码。

# find a 95 percent confidence interval for the mean weight of a popcorn bag
data = np.array([91, 101, 98, 98, 103, 97, 102, 105, 94, 90])

sMu = np.mean(data)
sSigma = np.std(data)
sem = stats.sem(data)
n = len(data)
df = n - 1

dist = stats.t(df)
critical_value = dist.ppf(0.975)

print(dist.interval(0.975, loc=sMu, scale=sem))
print(stats.t.interval(0.975, df=9, loc=sMu, scale=sem))

upper = sMu + (sem * critical_value)
lower = sMu - (sem * critical_value)
print('Manually Calculated: ', upper,' ', lower)

字符串

lymnna71

lymnna711#

t分布的ppf方法(百分点函数)用于查找与给定置信水平对应的临界值。在本例中,您需要找到95%置信区间的临界值,该值对应于t分布中的0.975。使用0.975的原因是临界值与t分布的上尾相关联,您需要找到在尾部留下2.5%概率的值(以获得中间的95%置信区间)。
但是,interval方法用于直接从分布对象计算置信区间。因此,必须将0.95(而不是0.975)作为第一个参数传递,以获得95%的置信区间。该方法在内部负责查找与给定置信水平相对应的临界值。这样,只需在以下两行中将值0.975替换为0.95:

print(dist.interval(0.95, loc=sMu, scale=sem))
print(stats.t.interval(0.95, df=9, loc=sMu, scale=sem))

字符串

相关问题