How can I add RMSE, slope, intercept and r^2 to a plot using R? I have attached a script with sample data, which is a similar format to my real dataset–unfortunately, I am at a stand-still. Is there an easier way to add these statistics to the graph than to create an object from an equation and insert that into text()? I would ideally like the statistics to be displayed stacked on the graph. How can I accomplish this?
## Generate Sample Data
x = c(2,4,6,8,9,4,5,7,8,9,10)
y = c(4,7,6,5,8,9,5,6,7,9,10)
# Create a dataframe to resemble existing data
mydata = data.frame(x,y)
#Plot the data
plot(mydata$x,mydata$y)
abline(fit <- lm(y~x))
# Calculate RMSE
model = sqrt(deviance(fit)/df.residual(fit))
# Add RMSE value to plot
text(3,9,model)
Here is a version using base graphics and
?plotmathto draw the plot and annotate itNext calculate the values you want to appear in the annotation. I prefer
bquote()for this, where anything marked-up in.(foo)will be replaced by the value of the objectfoo. The Answer @mnel points you to in the comments usessubstitute()to achieve the same thing but via different means. So I create objects in the workspace for each value you might wish to display in the annotation:Now build up the equation using constructs described in
?plotmath:Once that is done you can draw the plot and annotate it with your expression
Which gives: