stats.t.interval(alpha=0.95, df=len(data) - 1, loc=np.mean(data), scale=stats.sem(data)
a = mean_ - 1.96 * std_ / np.sqrt(n)
b = mean_ + 1.96 * std_ / np.sqrt(n)
2023/9/20 补充
"""
计算95%置信区间:
如果样本量远大于30,三种方法计算结果基本一致;
如果样本量小于30,三种方法计算结果不一致。
备注:方法二和方法三计算结果一致
参考:https://blog.csdn.net/book_dw5189/article/details/130895607
"""
from scipy import stats
import numpy as np
data = np.random.random(1000)
print("data:", data.tolist()[:100])
mean = np.mean(data)
std_error = stats.sem(data)
lower, upper = stats.t.interval(0.95, len(data) - 1, loc=mean, scale=std_error)
print(f"方法一: ({lower}, {upper})")
lower, upper = stats.norm.interval(0.95, loc=mean, scale=std_error)
print(f"方法二: ({lower}, {upper})")
lower = mean - stats.norm.ppf(0.975) * std_error
upper = mean + stats.norm.ppf(0.975) * std_error
print(f"方法三: ({lower}, {upper})")