Lui*_*405 17 python confidence-interval python-3.x
我最近开始使用 Python,但我无法理解如何绘制给定数据(或一组数据)的置信区间。我已经有一个函数,根据我传递给它的置信水平,给定一组测量值,计算上限和下限,但我不知道如何使用这两个值来绘制置信区间。我知道这里已经有人问过这个问题,但我没有找到有用的答案。
Fou*_*ier 37
有几种方法可以完成您的要求:
仅使用 matplotlib
from matplotlib import pyplot as plt
import numpy as np
#some example data
x= np.linspace(0.1, 9.9, 20)
y = 3.0 * x
#some confidence interval
ci = 1.96 * np.std(y)/np.mean(y)
fig, ax = plt.subplots()
ax.plot(x,y)
ax.fill_between(x, (y-ci), (y+ci), color='b', alpha=.1)
Run Code Online (Sandbox Code Playgroud)
fill_between做你正在寻找的。有关如何使用此函数的更多信息,请参阅:https : //matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html
输出
或者,seaborn使用lineplot或支持此方法regplot,请参阅:https : //seaborn.pydata.org/generated/seaborn.lineplot.html
And*_*per 10
import matplotlib.pyplot as plt
import statistics
from math import sqrt
def plot_confidence_interval(x, values, z=1.96, color='#2187bb', horizontal_line_width=0.25):
mean = statistics.mean(values)
stdev = statistics.stdev(values)
confidence_interval = z * stdev / sqrt(len(values))
left = x - horizontal_line_width / 2
top = mean - confidence_interval
right = x + horizontal_line_width / 2
bottom = mean + confidence_interval
plt.plot([x, x], [top, bottom], color=color)
plt.plot([left, right], [top, top], color=color)
plt.plot([left, right], [bottom, bottom], color=color)
plt.plot(x, mean, 'o', color='#f44336')
return mean, confidence_interval
plt.xticks([1, 2, 3, 4], ['FF', 'BF', 'FFD', 'BFD'])
plt.title('Confidence Interval')
plot_confidence_interval(1, [10, 11, 42, 45, 44])
plot_confidence_interval(2, [10, 21, 42, 45, 44])
plot_confidence_interval(3, [20, 2, 4, 45, 44])
plot_confidence_interval(4, [30, 31, 42, 45, 44])
plt.show()
Run Code Online (Sandbox Code Playgroud)
x:输入的 x 值。values:包含与 x 值相对应的 y 重复值(通常是测量值)的数组。z:z 分布的临界值。使用1.96对应于 的临界值95%。结果:
让我们假设我们有三个类别以及跨这三个类别的某个估计量的置信区间的上下限:
data_dict = {}
data_dict['category'] = ['category 1','category 2','category 3']
data_dict['lower'] = [0.1,0.2,0.15]
data_dict['upper'] = [0.22,0.3,0.21]
dataset = pd.DataFrame(data_dict)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码绘制每个类别的置信区间:
for lower,upper,y in zip(dataset['lower'],dataset['upper'],range(len(dataset))):
plt.plot((lower,upper),(y,y),'ro-',color='orange')
plt.yticks(range(len(dataset)),list(dataset['category']))
Run Code Online (Sandbox Code Playgroud)
结果如下图:
| 归档时间: |
|
| 查看次数: |
44792 次 |
| 最近记录: |