varias - Trazar la línea ajustada dentro de cierto rango R




varias graficas en r (4)

Además de usar predict con lines o segments , también puede usar la función de clip con abline :

x <- 1:10
y <- 1:10
plot(x,y)
clip(1,10, -100, 100)
abline(lm(y~x))

Usando R, me gustaría trazar una relación lineal entre dos variables, pero me gustaría que la línea ajustada esté presente solo dentro del rango de los datos.

Por ejemplo, si tengo el siguiente código, me gustaría que la línea exista solo a partir de los valores xey de 1:10 (con los parámetros predeterminados, esta línea se extiende más allá del rango de puntos de datos).

x <- 1:10
y <- 1:10
plot(x,y)
abline(lm(y~x))

En lugar de usar abline() , (a) guarde el modelo ajustado, (b) use predict.lm() para encontrar los valores y ajustados correspondientes a x = 1 y x = 10, y luego (c) use lines() para agregar una línea entre los dos puntos:

f <- lm(y~x)
X <- c(1, 10)
Y <- predict(f, newdata=data.frame(x=X))

plot(x,y)
lines(x=X, y=Y)

Puedes hacer esto usando predicción.

Puede predecir valores específicos de x (ver? Predecir)

x<-1:10
y<-1:10
plot(x,y)
new <- data.frame(x = seq(1, 5, 0.5))
lines(new$x, predict(lm(y~x), new))


Una alternativa es usar la función de segments (doc aquí ).

Digamos que calculó la línea, y obtuvo una intersección de b una pendiente de b . Por lo tanto, su función ajustada es y = a + bx .

Ahora, supongamos que quieres mostrar la línea para x entre x0 y x1 . Entonces, el siguiente código traza su línea:

# inputs

a <- 0.5
b <- 2

x0 <- 1
x1 <- 5

# graph

plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l')
segments(x0, a+b*x0, x1, a+b*x1)

Simplemente reemplace los valores de a, b, x0, x1 con los de su elección .

Para aquellos como yo, que llegamos a esta pregunta que desean trazar una línea para un par de números arbitrarios (y no aquellos que se ajustan a una regresión dada), el siguiente código es lo que necesita:

plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l')
segments(x0, yo, x1, y1)

Simplemente reemplace los valores de x0, y0, x1, y1 con los que elija .