统计 - 估计总体均值
置信区间用于 估计 总体均值。
估计总体均值
来自 样本 的统计量用于估计总体的参数。
参数最有可能的值是 **点估计**。
此外,我们可以计算估计参数的 **下限** 和 **上限**。
**误差范围** 是点估计值的下限和上限之间的差值。
下限和上限共同定义了 **置信区间**。
计算置信区间
以下步骤用于计算置信区间
- 检查条件
- 找到点估计值
- 确定置信水平
- 计算误差范围
- 计算置信区间
例如
- **总体**: 诺贝尔奖获得者
- **变量**: 他们获得诺贝尔奖时的年龄
我们可以抽取样本并计算该样本的均值和 标准差。
样本数据用于估计 **所有** 诺贝尔奖获得者的平均年龄。
通过随机选择 30 位诺贝尔奖获得者,我们可以发现
样本中的平均年龄为 62.1
样本中年龄的标准差为 13.46
根据这些数据,我们可以通过以下步骤计算置信区间。
1. 检查条件
计算总体均值置信区间的条件是
- 样本是 随机选择的
- 或者
- 总体数据呈正态分布
- 样本量足够大
中等大小的样本量,例如 30,通常足够大。
在本例中,样本量为 30,并且是随机选择的,因此条件满足。
**注意:** 可以使用专门的统计检验来检查数据是否呈正态分布。
2. 找到点估计值
点估计值是 样本均值 (\(\bar{x}\))。
计算样本均值的公式是所有值的总和 \(\sum x_{i}\) 除以样本量 (\(n\))
\(\displaystyle \bar{x} = \frac{\sum x_{i}}{n}\)
在本例中,样本中的平均年龄为 62.1。
3. 确定置信水平
置信水平用百分比或小数表示。
例如,如果置信水平为 95% 或 0.95
则剩余概率 (\(\alpha\)) 为: 5%,或 1 - 0.95 = 0.05。
常用的置信水平是
- 90% 对应 \(\alpha\) = 0.1
- 95% 对应 \(\alpha\) = 0.05
- 99% 对应 \(\alpha\) = 0.01
**注意:** 95% 的置信水平意味着,如果我们抽取 100 个不同的样本并为每个样本构建置信区间
真实参数将在这 100 个置信区间中的 95 个中。
我们使用 学生t分布 来找到置信区间的 **误差范围**。
t分布根据样本量进行调整,使用 “自由度”(df)。
自由度是样本量 (n) - 1,在本例中是 30 - 1 = 29
剩余概率 (\(\alpha\)) 被分成两部分,使一半在分布的每个尾部区域。
t 值轴上将尾部区域与中间区域分开的点称为 **临界 t 值**。
以下是标准正态分布图,显示了不同置信水平下 29 个自由度 (df) 的尾部区域 (\(\alpha\))。
4. 计算误差范围
误差范围是点估计值与下限和上限之间的差值。
比例的误差范围 (\(E\)) 使用 临界 t 值 和 **标准误差** 计算
\(\displaystyle E = t_{\alpha/2}(df) \cdot \frac{s}{\sqrt{n}} \)
临界 t 值 \(t_{\alpha/2}(df) \) 是根据标准正态分布和置信水平计算的。
标准误差 \(\frac{s}{\sqrt{n}} \) 是根据样本标准差 (\(s\)) 和样本量 (\(n\)) 计算的。
在本例中,样本标准差 (\(s\)) 为 13.46,样本量为 30,则标准误差为
\(\displaystyle \frac{s}{\sqrt{n}} = \frac{13.46}{\sqrt{30}} \approx \frac{13.46}{5.477} = \underline{2.458}\)
如果我们选择 95% 作为置信水平,则 \(\alpha\) 为 0.05。
因此,我们需要找到临界 t 值 \(t_{0.05/2}(29) = t_{0.025}(29)\)
可以使用 t 表 或编程语言函数找到临界 t 值。
示例
使用 Python 的 Scipy Stats 库 t.ppf()
函数找到 \(\alpha\)/2 = 0.025 和 29 个自由度的 t 值。
import scipy.stats as stats
print(stats.t.ppf(1-0.025, 29))
动手试试 »
示例
使用任一方法,我们都可以发现临界 t 值 \(t_{\alpha/2}(df)\) 约为 \(\underline{2.05} \)
标准误差 \(\frac{s}{\sqrt{n}}\) 约为 \(\underline{2.458}\)
因此,误差范围 (\(E\)) 为
\(\displaystyle E = t_{\alpha/2}(df) \cdot \frac{s}{\sqrt{n}} \approx 2.05 \cdot 2.458 = \underline{5.0389}\)
5. 计算置信区间
置信区间的下限和上限是通过从点估计值 (\(\bar{x}\)) 中减去和加上误差范围 (\(E\)) 来找到的。
在本例中,点估计值为 0.2,误差范围为 0.143,则
下限为
\(\bar{x} - E = 62.1 - 5.0389 \approx \underline{57.06} \)
上限为
\(\bar{x} + E = 62.1 + 5.0389 \approx \underline{67.14} \)
置信区间为
\([57.06, 67.14]\)
我们可以总结置信区间,如下所示
诺贝尔奖获得者平均年龄的 **95%** 置信区间在 **57.06 年至 67.14 年** 之间
使用编程计算置信区间
可以使用多种编程语言计算置信区间。
对于更大的数据集,使用软件和编程来计算统计量更为常见,因为手动计算变得很困难。
**注意:** 使用编程代码得到的结果将更加准确,因为手动计算时会对值进行四舍五入。
示例
使用 Python 的 scipy 和 math 库来计算估计比例的置信区间。
这里,样本量为 30,样本均值为 62.1,样本标准差为 13.46。
import scipy.stats as stats
import math
# 指定样本均值 (x_bar)、样本标准差 (s)、样本量 (n) 和置信水平
x_bar = 62.1
s = 13.46
n = 30
confidence_level = 0.95
# 计算 alpha、自由度 (df)、临界 t 值和误差范围
alpha = (1-confidence_level)
df = n - 1
standard_error = s/math.sqrt(n)
critical_t = stats.t.ppf(1-alpha/2, df)
margin_of_error = critical_t * standard_error
# 计算置信区间的下限和上限
lower_bound = x_bar - margin_of_error
upper_bound = x_bar + margin_of_error
# 打印结果
print("临界 t 值: {:.3f}".format(critical_t))
print("误差范围: {:.3f}".format(margin_of_error))
print("置信区间: [{:.3f},{:.3f}]".format(lower_bound,upper_bound))
print("总体均值的 {:.1%} 置信区间为:".format(confidence_level))
print("介于 {:.3f} 和 {:.3f} 之间".format(lower_bound,upper_bound))
动手试试 »
示例
R 可以使用内置的数学和统计函数来计算估计比例的置信区间。
这里,样本量为 30,样本均值为 62.1,样本标准差为 13.46。
# 指定样本均值 (x_bar)、样本标准差 (s)、样本量 (n) 和置信水平
x_bar = 62.1
s = 13.46
n = 30
confidence_level = 0.95
# 计算 alpha、自由度 (df)、临界 t 值和误差范围
alpha = (1-confidence_level)
df = n - 1
standard_error = s/sqrt(n)
critical_t = qt(1-alpha/2, 29)
margin_of_error = critical_t * standard_error
# 计算置信区间的下限和上限
lower_bound = x_bar - margin_of_error
upper_bound = x_bar + margin_of_error
# 打印结果
sprintf("临界 t 值: %0.3f", critical_t)
sprintf("误差范围: %0.3f", margin_of_error)
sprintf("置信区间: [%0.3f,%0.3f]", lower_bound, upper_bound)
sprintf("总体均值的 %0.1f%% 置信区间为:", confidence_level*100)
sprintf("介于 %0.4f 和 %0.4f 之间", lower_bound, upper_bound)
动手试试 »
**注意:** R 还具有用于计算总体均值置信区间的内置函数。
示例
R 可以使用内置的 t.test()
函数来计算估计均值的置信区间。
这里,样本是使用 rnorm()
函数生成的 30 个随机值,均值为 60,标准差为 12.5。
# 指定样本大小 (n) 和置信水平
n = 30
confidence_level = 0.95
# 设置随机种子并生成均值为 60,标准差为 12.5 的样本数据
set.seed(3)
sample <- rnorm(n, 60, 12.5)
# 对样本数据、置信水平使用 t.test 函数,并选择 $conf.int 选项
t.test(sample, conf.level = confidence_level)$conf.int
动手试试 »