ggplot2 - regression statistics how to display on plot
Jim, you can use the function appended below, which is part of package HandyStuff. If you want an example, see ?lmEqn after installing HandyStuff, available at github.com/bryanhanson/HandyStuff. Bryan
lmEqn <-
function(df = NULL, y = NULL, x = NULL,
method = "lm", leg.loc = c(0, 0),
xlab = NULL, ylab = NULL, title = NULL, ...) {
# work out a linear model first
y1 <- df[,y]
x1 <- df[,x]
if (method == "lm") mod <- lm(y1 ~ x1)
if (method == "rlm") mod <- rlm(y1 ~ x1)
m <- mod$coef[2]
b <- mod$coef[1]
r2 <- round(cor(x1, y1)^2, 4)
lab <- paste("m =", round(m, 3), "b =", round(b, 3), "r^2 =", r2, sep = " ")
if (method == "lm") lab <- paste("linear model: ", lab)
if (method == "rlm") lab <- paste("robust linear model: ", lab)
# now plot the data
p <- ggplot(df, aes_string(x = x, y = y))
p <- p + geom_point()
if (method == "lm") p <- p + geom_smooth(method = "lm")
if (method == "rlm") p <- p + geom_smooth(method = "rlm")
p <- p + geom_text(aes(x, y, label = lab), size = 5, hjust = 0, vjust = 0,
data = data.frame(x = leg.loc[1], y = leg.loc[2]), label = lab)
if (!is.null(title)) p <- p + opts(title = title)
if (!is.null(xlab)) p <- p + xlab(xlab)
if (!is.null(ylab)) p <- p + ylab(ylab)
p
}
On Nov 10, 2011, at 8:45 AM, Durant, James T. (ATSDR/DTEM/PRMSB) wrote:
Hello - So I am trying to use ggplot2 to show a linear regression between two variables, but I want to also show the fit of the line on the graph as well. I am using ggplot2 for other graphics in what I am working on, so even though this would be a fairly easy thing to do in Excel, I would prefer to do it in R to keep my look and feel, and I think ggplot2 is just cooler. Here is a sample script of what I am trying to accomplish: df<-NULL df$x<-rnorm(100) df$y<-rnorm(100) df<-data.frame(df) ggplot(df, aes(x=x,y=y))+geom_point()+geom_smooth(method=lm) # would like to be able to showr squared and slope/intercept of lm VR Jim James T. Durant, MSPH CIH Emergency Response Coordinator US Agency for Toxic Substances and Disease Registry Atlanta, GA 30341 770-378-1695 [[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.