I’ve seen some really bad methods for drawing confidence ellipsoids recently, they all seem to make it really complicated and confusing (and specific). So I thought I would show how to calculate points on an ellipse corresponding to a covariance matrix – this method works for any number of dimensions without any need to change it.
For all those that don’t care why, the method to generate the points of an ellipsoid is as follows:
1) make a unit n-sphere (which for 2D is a circle with radius 1), call these points X:
If it is an elipse you want, make a matrix with columns of and for some incrementing values between and (=开)
2) apply the following linear transformation to get the points of your ellipsoid (Y):
where M is the vector of the means (center of the ellipsoid) and is the covariance matrix. C represents the Cholesky Decomposition, sort of a matrix square root. k is the number of standard deviations at which one wishes to draw the ellipse
The Cholesky decomposition can be accessed as, “numpy.linalg.cholesky” in Python, “Cholesky” in R (matrix package), “chol” in MATLAB and “spotrf” (amongst others, I think) in LAPACK
For those who care, here is why this works…