原文链接:https://blog.csdn.net/weixin_39679367/article/details/114631706
1. 基础数学知识
1.1. 什么是置信区间(Confidence Interval, CI)?
按照维基百科上说的是:在统计学上,置信区间是从已观测到的数据中统计出来的一个估计。它给出了未知参数可能落在的区域。
而通俗的讲,就是我们去估计一个参数(大部分情况是一个平均值或期望),但是估计一定会有误差,所以置信区间就告诉我们,这个平均值的误差范围。
比如 95% 置信区间,就是我们估计出来的平均值,会有 95% 的可能性落在这个区间。
1.2. 如何计算置信区间?
置信区间会用到标准误差,而标准误差会用到标准差,它们的计算如下:
总体标准差:
样本标准差:
标准误差:
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import scipy.stats as st
matplotlib.rcParams.update({'font.size': 12})
# generate dataset
data_points = 50
sample_points = 10000
Mu = (np.linspace(-5, 5, num=data_points)) ** 2
Sigma = np.ones(data_points) * 8
data = np.random.normal(loc=Mu, scale=Sigma, size=(100, data_points))
# predicted expect and calculate confidence interval
predicted_expect = np.mean(data, 0)
low_CI_bound, high_CI_bound = st.t.interval(0.95, data_points - 1,
loc=np.mean(data, 0),
scale=st.sem(data))
# plot confidence interval
x = np.linspace(0, data_points - 1, num=data_points)
plt.plot(predicted_expect, linewidth=3., label='estimated value')
plt.plot(Mu, color='r', label='grand truth')
plt.fill_between(x, low_CI_bound, high_CI_bound, alpha=0.5,
label='confidence interval')
plt.legend()
plt.title('Confidence interval')
plt.show()