The code snippet below creates bivariate normal data, plots it and then plots an ellipse along with the line y=x
require(ellipse); require(MASS)
mu <- c(30,30)
Sigma <- matrix(c(900,630,630,900),2,2,byrow=TRUE)
dt <- data.frame(mvrnorm(n=1000,mu,Sigma))
names(dt) <- c("x","y")
plot(dt$x,dt$y)
df_ell <- data.frame(ellipse(cor(dt$x, dt$y), scale=c(sd(dt$x),sd(dt$y)), centre=c(mean(dt$x),mean(dt$y))))
lines(df_ell)
abline(a=0,b=1)
The line y=x should pass through the major axis of the ellipse due the covariance structure and the equal means.
In a square graphic window, everything seems fine:
However, if the window is resized to make it no longer square, the ellipse seems to orient itself away from the line:
What is causing this to happen and is it expected behaviour ?
This is an optical illusion. Ellipses look a bit strange when the coordinates aren't square.
Note that your ellipse is based on the estimates from the sample, rather than the true underlying values, so it's not quite aligned properly to start with.
df_ell2 <- data.frame(ellipse(0.7, scale=c(30,30), centre=c(30,30)), npoints=101)
Now plot the ellipse with tangent lines as well as its major axis:
plot(dt$x,dt$y)
lines(df_ell2)
abline(0, 1)
abline(df_ell2[1,1]*2, -1)
abline(df_ell2[51,1]*2, -1)
Hopefully the tangent lines let you see that the ellipse is properly aligned, but skewed by the aspect ratio.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With