teoria simple regresion polinomial multiple lineal ejemplos definicion r plot lm

simple - regresion polinomial



Gráfica de la curva de regresión polinomial en R (3)

En general, una buena manera de hacerlo es usar la función predict() . Escoja algunos valores de x , use predict() para generar los valores de y correspondientes, y trácelas. Puede verse algo como esto:

newdat = data.frame(hp = seq(min(mtcars$hp), max(mtcars$hp), length.out = 100)) newdat$pred = predict(fit, newdata = newdat) plot(mpg ~ hp, data = mtcars) with(newdat, lines(x = hp, y = pred))

Consulte la respuesta de Roman para obtener una versión más sofisticada de este método, donde también se calculan los intervalos de confianza. En ambos casos, el trazado real de la solución es incidental (puede usar gráficos base o ggplot2 o cualquier otra cosa que desee). La clave es usar la función de predicción para generar los valores y adecuados. Es un buen método porque se extiende a todo tipo de ajustes, no solo a modelos lineales polinomiales. Puede usarlo con modelos no lineales, GLMs, splines de suavizado, etc. - cualquier cosa con un método de predict .

Tengo una regresión polinomial simple que hago de la siguiente manera

attach(mtcars) fit <- lm(mpg ~ hp + I(hp^2))

Ahora, trazo como sigue

> plot(mpg~hp) > points(hp, fitted(fit), col=''red'', pch=20)

Esto me da lo siguiente

Quiero conectar estos puntos en una curva suave, usando líneas me da lo siguiente

> lines(hp, fitted(fit), col=''red'', type=''b'')

Que me estoy perdiendo aqui. Quiero que la salida sea una curva suave que conecta los puntos


Me gusta usar ggplot2 para esto porque generalmente es muy intuitivo agregar capas de datos.

library(ggplot2) fit <- lm(mpg ~ hp + I(hp^2), data = mtcars) prd <- data.frame(hp = seq(from = range(mtcars$hp)[1], to = range(mtcars$hp)[2], length.out = 100)) err <- predict(fit, newdata = prd, se.fit = TRUE) prd$lci <- err$fit - 1.96 * err$se.fit prd$fit <- err$fit prd$uci <- err$fit + 1.96 * err$se.fit ggplot(prd, aes(x = hp, y = fit)) + theme_bw() + geom_line() + geom_smooth(aes(ymin = lci, ymax = uci), stat = "identity") + geom_point(data = mtcars, aes(x = hp, y = mpg))


Tratar:

lines(sort(hp), fitted(fit)[order(hp)], col=''red'', type=''b'')

Debido a que sus unidades estadísticas en el conjunto de datos no están ordenadas, por lo tanto, cuando usa lines es un desastre.