scipy - 均值的置信区间 - scipy 实现与数学公式不符
问题描述
均值的置信区间有以下解析解:
假设我的数据集是正态分布的,并且我不知道总体标准差,我可以使用 t-score 来计算均值的 CI。所以我做了:
from scipy import stats
import numpy as np
arr = np.array([4, 4, 1, 6, 6, 8, 1, 2, 3, 2, 2, 3, 4, 7, 6, 8, 0, 2, 8, 6, 5])
alpha = 0.05 # significance level = 5%
df = len(arr) - 1 # degress of freedom = 20
t = stats.t.ppf(1 - alpha/2, df) # 95% confidence t-score = 2.086
s = np.std(arr, ddof=1) # sample standard deviation = 2.502
n = len(arr)
lower = np.mean(arr) - (t * s / np.sqrt(n))
upper = np.mean(arr) + (t * s / np.sqrt(n))
print((lower, upper))
>>> (3.0514065531195387, 5.329545827832843)
print(stats.t.interval(1 - alpha/2, df, loc=np.mean(arr), scale=s / np.sqrt(n)))
>>> (2.8672993716475763, 5.513653009304806)
而且我使用公式手动计算的间隔与 CI 的 scipy 实现不一致。这个错误来自哪里?
解决方案
您的显着性水平为 0.05,因此置信水平为 0.95。将该值传递给stats.t.interval
. 不要除以 2;该功能为您执行此操作:
In [62]: print(stats.t.interval(1 - alpha, df, loc=np.mean(arr), scale=s / np.sqrt(n)))
(3.0514065531195387, 5.329545827832843)
推荐阅读
- powerbi - 如何使用 DAX 公式计算“相对市场份额”而不是市场份额
- arrays - 错误:取消引用未定义的指针值
- r - R 中的 ODBC 连接与 Azure Active Directory 密码身份验证
- r - 是否可以组合有时具有相同或不同行名的两个数据框
- swiftui - SwiftUI - 颜色选择器 - 轮子大小
- c# - 动画播放一帧,然后返回混合树运动。仅在一个对象上
- c# - NullReferenceException '对象引用未设置为对象的实例' unity 2D
- python - netcdf4-python:读取变量存储参数
- r - 如何使用循环在 R 中使用 plotly 绘制多条线
- django - 填充并获取所有大于当前日期的值