/ / Cómo agregar resultados de modelos lineales (ajuste cuadrado-r, pendiente y valor p) en el gráfico de regresión en r - r, ggplot2, regresión lineal, coeficientes

Cómo agregar resultados de modelos lineales (ajuste de r cuadrado, pendiente y valor p) en el gráfico de regresión en r - r, ggplot2, regresión lineal, coeficientes

Hola, he creado un modelo lineal y un gráfico de regresión. Sin embargo, me gustaría tener los resultados del modelo en el gráfico mismo, algo como la imagen a continuación:

parcela de ejemplo

¿Cómo muestro los resultados clave en la trama? A continuación se muestra mi código para la trama:

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")

Respuestas

1 para la respuesta № 1

Idealmente, las buenas preguntas son aquellas que plantean el problema al proporcionar un ejemplo reproducible. De todos modos, he abordado este problema en dos pasos;

Paso 1: Determine el modelo de regresión lineal;

fit1 <- lm(Sepal.Length ~ Petal.Width, data = iris)

Paso 2: Dibuja el modelo;

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)))

Trama


1 para la respuesta № 2

Aquí hay otra opción: en lugar de agregar las estadísticas al título, puede agregar una etiqueta a la trama:

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)))

enter image description here