Hi I have created a linear model and a regression plot - However, I would like to have the model results on the plot itself - something like the image below:
How do I show the key results on the plot? Below is my code for the plot:
library(ggplot2)
ggplot(HP_crime15, aes (x = as.numeric(HP_crime15$Theft15), y =
as.numeric(HP_crime15$X2015))) + geom_point(shape=1) +
geom_smooth(method=lm) + xlab ("Recorded number of Thefts") +
ylab("House prices (£)") + ggtitle("Title")
Ideally good questions are those that pose the problem by providing a reproducible example. Anyway, I have approached this problem in two steps;
Step 1: Determine the linear regression model;
fit1 <- lm(Sepal.Length ~ Petal.Width, data = iris)
Step 2: Plot the model;
library (ggplot2)
ggplot(fit1$model, aes_string(x = names(fit1$model)[2], y = names(fit1$model)[1])) +
geom_point() +
stat_smooth(method = "lm", col = "red") +
labs(title = paste("Adj R2 = ",signif(summary(fit1)$adj.r.squared, 5),
"Intercept =",signif(fit1$coef[[1]],5 ),
" Slope =",signif(fit1$coef[[2]], 5),
" P =",signif(summary(fit1)$coef[2,4], 5)))
Here is another option: instead of adding the statistics to the title, you could add a label to the plot:
library (ggplot2)
fit1 <- lm(Sepal.Length ~ Petal.Width, data = iris)
ggplot(fit1$model, aes_string(x = names(fit1$model)[2], y = names(fit1$model)[1])) +
geom_point() +
stat_smooth(method = "lm", col = "red") +
geom_label(aes(x = 0, y = 7.5), hjust = 0,
label = paste("Adj R2 = ",signif(summary(fit1)$adj.r.squared, 5),
"\nIntercept =",signif(fit1$coef[[1]],5 ),
" \nSlope =",signif(fit1$coef[[2]], 5),
" \nP =",signif(summary(fit1)$coef[2,4], 5)))