均值与 SEM 的自举重复
在本练习中,您将计算谢菲尔德气象站年均降水量概率密度函数的自举估计。请记住,我们要估计的是:如果谢菲尔德气象站可以把 1883 年到 2015 年的观测一遍又一遍地重复,年均降水量会是什么样的。也就是说,这是对均值的「概率性」估计。您将用直方图绘制该 PDF,并会看到它近似为正态分布。
事实上,在条件不算苛刻的前提下,可以从理论上证明,均值的取值总是服从正态分布。(这并非对所有统计量都成立,只对均值和少数统计量成立。)该分布的标准差称为「均值的标准误差」(standard error of the mean,SEM),其计算方式是数据的标准差除以数据点数量的平方根。即对于数据集,sem = np.std(data) / np.sqrt(len(data))。使用黑客统计学的方法,您无需推导也能得到同样的结果,接下来您将用自举重复来验证这一点。
数据集已预先加载为名为 rainfall 的数组。
本练习是课程的一部分
Python 统计思维(第 2 部分)
练习说明
- 使用您的
draw_bs_reps()函数和rainfall数组,抽取10000个年降水量「均值」的自举重复。提示:将func传入np.mean以计算均值。- 提醒:
draw_bs_reps()接受 3 个参数:data、func和size。
- 提醒:
- 计算并打印
rainfall的均值标准误差。- 计算公式为
np.std(data) / np.sqrt(len(data))。
- 计算公式为
- 计算并打印您的自举重复
bs_replicates的标准差。 - 使用
normed=True和50个箱来绘制这些重复的直方图。 - 点击提交即可查看图形!
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Take 10,000 bootstrap replicates of the mean: bs_replicates
bs_replicates = ____
# Compute and print SEM
sem = ____ / np.sqrt(____)
print(sem)
# Compute and print standard deviation of bootstrap replicates
bs_std = ____
print(bs_std)
# Make a histogram of the results
_ = plt.hist(____, ____=50, ____=True)
_ = plt.xlabel('mean annual rainfall (mm)')
_ = plt.ylabel('PDF')
# Show the plot
plt.show()