Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to plot confidence interval in Python?

Tags:

I recently started to use Python and I can't understand how to plot a confidence interval for a given datum (or set of data). I already have a function that computes, given a set of measurements, a higher and lower bound depending on the confidence level that I pass to it, but I don't know how to use those two values to plot a confidence interval. I know that this question have been already asked here but I did not find the answers useful.

like image 633
Luigi2405 Avatar asked Jan 15 '20 08:01

Luigi2405


People also ask

How do you calculate 95 confidence interval in Python?

Create a new sample based on our dataset, with replacement and with the same number of points. Calculate the mean value and store it in an array or list. Repeat the process many times (e.g. 1000) On the list of the mean values, calculate 2.5th percentile and 97.5th percentile (if you want a 95% confidence interval)


Video Answer


2 Answers

There are several ways to accomplish what you asking for:

Using only 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.sqrt(len(x))  fig, ax = plt.subplots() ax.plot(x,y) ax.fill_between(x, (y-ci), (y+ci), color='b', alpha=.1) 

fill_between does what you are looking for. For more information on how to use this function, see: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html

Output

enter image description here

Alternatively, go for seaborn, which supports this using lineplot or regplot, see: https://seaborn.pydata.org/generated/seaborn.lineplot.html

like image 166
Fourier Avatar answered Oct 16 '22 10:10

Fourier


Let's assume that we have three categories and lower and upper bounds of confidence intervals of a certain estimator across these three categories:

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) 

You can plot the confidence interval for each of these categories using the following code:

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'])) 

Resulting with the following graph:

Confidence intervals of an estimator across some three categories

like image 29
omer sagi Avatar answered Oct 16 '22 11:10

omer sagi