rectas - Obtener la intersección y la pendiente del eje y desde una regresión lineal de datos múltiples y pasar los valores de intersección y pendiente a un marco de datos
rectas paralelas y perpendiculares ejercicios (1)
Supongo que estás buscando geom_smooth
. Si llama a esta función con el method = "lm"
argumento method = "lm"
, calculará un ajuste lineal para todos los grupos:
ggplot(xm, aes(x = x, y = value, color = cols)) +
geom_point(size = 3) +
labs(x = "x", y = "y") +
geom_smooth(method = "lm", se = FALSE)
También puede especificar un ajuste cuadrático con la función poly
y el argumento formula
:
ggplot(xm, aes(x = x, y = value, color=cols)) +
geom_point(size = 3) +
labs(x = "x", y = "y") +
geom_smooth(method = "lm", se = FALSE, formula = y ~ poly(x, 2))
Para extraer los coeficientes de regresión correspondientes, puede usar este enfoque:
# create a list of coefficients
fits <- by(xm[-2], xm$cols, function(i) coef(lm(value ~ x, i)))
# create a data frame
data.frame(cols = names(fits), do.call(rbind, fits))
# cols X.Intercept. x
# y y -277.20000 105.40000
# s s -99.06667 35.13333
# t t -594.40000 210.80000
Si quieres un ajuste cuadrático, simplemente reemplaza el value ~ x
con el value ~ poly(x, 2)
.
Tengo un marco de datos x1
, que se generó con el siguiente fragmento de código,
x <- c(1:10)
y <- x^3
z <- y-20
s <- z/3
t <- s*6
q <- s*y
x1 <- cbind(x,y,z,s,t,q)
x1 <- data.frame(x1)
Me gustaría extraer el intercepto del eje y y la pendiente del ajuste de regresión lineal para los datos,
x y z s t q
1 1 1 -19 -6.333333 -38 -6.333333
2 2 8 -12 -4.000000 -24 -32.000000
3 3 27 7 2.333333 14 63.000000
4 4 64 44 14.666667 88 938.666667
5 5 125 105 35.000000 210 4375.000000
6 6 216 196 65.333333 392 14112.000000
7 7 343 323 107.666667 646 36929.666667
8 8 512 492 164.000000 984 83968.000000
9 9 729 709 236.333333 1418 172287.000000
10 10 1000 980 326.666667 1960 326666.666667
Utilizo los siguientes códigos para fundir y trazar tres columnas de datos,
xm <- melt(x1, id=names(x1)[1], measure=names(x1)[c(2, 4, 5)], variable = "cols")
plt <- ggplot(xm) +
geom_point(aes(x=x,y= value, color=cols), size=3) +
labs(x = "x", y = "y")
Ahora lo que necesito es obtener un ajuste lineal de mínimos cuadrados para todos los datos por separado y almacenar el intercepto y la pendiente resultantes en un nuevo marco de datos.
Yo uso plt + geom_abline()
pero no obtengo el resultado deseado. ¿Podría alguien decirme cómo resolver esto?