For teaching correlation, it is useful to draw ellipses around the mean to reflect the correlation. This variation of the ellipse function from John Fox's car package does so. Input may be either two vectors or a matrix or data.frame. In the latter cases, if the number of variables >2, then the ellipses are done in the pairs.panels function. Ellipses may be added to existing plots. The minkowski function is included as a generalized ellipse.
ellipses(x, y =NULL, add =FALSE, smooth=TRUE, lm=FALSE,data=TRUE, n =2, span=2/3, iter=3, col ="red", xlab =NULL,ylab=NULL,size=c(1,2),...)minkowski(r=2,add=FALSE,main=NULL,xl=1,yl=1)
Arguments
x: a vector,matrix, or data.frame
y: Optional second vector
add: Should a new plot be created, or should it be added to?
smooth: smooth = TRUE -> draw a loess fit
lm: lm=TRUE -> draw the linear fit
data: data=TRUE implies draw the data points
n: Should 1 or 2 ellipses be drawn
span: averaging window parameter for the lowess fit
iter: iteration parameter for lowess
col: color of ellipses (default is red
xlab: label for the x axis
ylab: label for the y axis
size: The size of ellipses in sd units (defaults to 1 and 2)
...: Other parameters for plotting
r: r=1 draws a city block, r=2 is a Euclidean circle, r > 2 tends towards a square
main: title to use when drawing Minkowski circles
xl: stretch the x axis
yl: stretch the y axis
Details
Ellipse dimensions are calculated from the correlation between the x and y variables and are scaled as sqrt(1+r) and sqrt(1-r). They are then scaled as size[1] and size[2] standard deviation units. To scale for 95 and 99 percent confidence use c(1.64,2.32)
Returns
A single plot (for 2 vectors or data frames with fewer than 3 variables. Otherwise a call is made to pairs.panels.
References
Galton, Francis (1888), Co-relations and their measurement. Proceedings of the Royal Society. London Series, 45, 135-145.
Author(s)
William Revelle
Note
Adapted from John Fox's ellipse and data.ellipse functions.
See Also
pairs.panels
Examples
if(require(psychTools)){data(psychTools::galton)galton <- psychTools::galton
ellipses(galton,lm=TRUE)ellipses(galton$parent,galton$child,xlab="Mid Parent Height", ylab="Child Height")#input are two vectors}data(sat.act)ellipses(sat.act)#shows the pairs.panels ellipsesminkowski(2,main="Minkowski circles")minkowski(1,TRUE)minkowski(4,TRUE)