Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a Confidence Ellipses in a sccatterplot using matplotlib

Tags:

How to creating a Confidence Ellipses in a sccatterplot using matplotlib?

The following code works until creating scatter plot. Then, does anyone familiar with putting Confidence Ellipses over the scatter plot?

import numpy as np import matplotlib.pyplot as plt x = [5,7,11,15,16,17,18] y = [8, 5, 8, 9, 17, 18, 25]  plt.scatter(x,y) plt.show() 

Following is the reference for Confidence Ellipses from SAS.

http://support.sas.com/documentation/cdl/en/grstatproc/62603/HTML/default/viewer.htm#a003160800.htm

The code in sas is like this:

proc sgscatter data=sashelp.iris(where=(species="Versicolor"));   title "Versicolor Length and Width";   compare y=(sepalwidth petalwidth)           x=(sepallength petallength)           / reg ellipse=(type=mean) spacing=4; run; 
like image 798
2964502 Avatar asked Nov 21 '13 16:11

2964502


People also ask

How do you find the 95 confidence interval for an ellipse?

To create a 95% confidence interval, we instead place . 95 in cell H9 and the formula =CHISQ. INV(H9,2) in cell H8 (resulting in a chi-square value of 5.99).

What does a 95% confidence ellipse mean?

A 95% confidence ellipse for this mean is really an algorithm with the following property: if you were to replicate your sampling from the underlying distribution many times and each time calculate a confidence ellipse, then 95% of the ellipses so constructed would contain the underlying mean.

Can you use matplotlib in idle?

Download the “Install Matplotlib (for Mac)” file from my web site, and double-click it to run it. Test your installation. Start IDLE, type “import matplotlib”, and confirm that this command completes without an error.


1 Answers

The following code draws a one, two, and three standard deviation sized ellipses:

x = [5,7,11,15,16,17,18] y = [8, 5, 8, 9, 17, 18, 25] cov = np.cov(x, y) lambda_, v = np.linalg.eig(cov) lambda_ = np.sqrt(lambda_) from matplotlib.patches import Ellipse import matplotlib.pyplot as plt ax = plt.subplot(111, aspect='equal') for j in xrange(1, 4):     ell = Ellipse(xy=(np.mean(x), np.mean(y)),                   width=lambda_[0]*j*2, height=lambda_[1]*j*2,                   angle=np.rad2deg(np.arccos(v[0, 0])))     ell.set_facecolor('none')     ax.add_artist(ell) plt.scatter(x, y) plt.show() 

enter image description here

like image 177
Jaime Avatar answered Sep 26 '22 03:09

Jaime