Mit R möchte ich eine lineare Beziehung zwischen zwei Variablen zeichnen, aber ich möchte, dass die angepasste Linie nur im Bereich der Daten vorhanden ist.
Wenn ich zum Beispiel den folgenden Code habe, möchte ich, dass die Linie nur aus x- und y-Werten von 1:10 besteht (bei Standardparametern erstreckt sich diese Linie über den Bereich der Datenpunkte hinaus).
x <- 1:10
y <- 1:10
plot(x,y)
abline(lm(y~x))
Anstatt abline()
zu verwenden, (a) speichern Sie das angepasste Modell, (b) verwenden Sie predict.lm()
, um die angepassten y-Werte zu finden, die x = 1 und x = 10 entsprechen, und (c) verwenden Sie lines()
, um eine Linie zwischen den beiden Punkten hinzuzufügen :
f <- lm(y~x)
X <- c(1, 10)
Y <- predict(f, newdata=data.frame(x=X))
plot(x,y)
lines(x=X, y=Y)
Zusätzlich zur Verwendung von predict
mit lines
oder segments
können Sie auch die Funktion clip
mit abline
verwenden:
x <- 1:10
y <- 1:10
plot(x,y)
clip(1,10, -100, 100)
abline(lm(y~x))
Sie können dies mit predict tun.
Sie können auf bestimmte Werte von x vorhersagen (siehe? Vorhersagen)
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))
Die plotrix-Bibliothek hat hierfür die Funktion ablineclip()
:
x <- 1:10
y <- 1:10
plot(x,y)
ablineclip(lm(y~x),x1=1,x2=5)
Eine Alternative ist die Verwendung der Funktion segments
(doc hier ).
Angenommen, Sie haben die Linie geschätzt und einen Achsenabschnitt von a
und eine Neigung von b
erhalten. Daher lautet Ihre angepasste Funktion y = a + bx
.
Angenommen, Sie möchten die Linie für x zwischen x0
und x1
anzeigen. Dann zeichnet der folgende Code Ihre Zeile:
# 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)
Ersetzen Sie einfach die Werte von a, b, x0, x1
durch die Ihrer Wahl .
Für diejenigen wie mich, die auf diese Frage gekommen sind, um eine Linie für ein beliebiges Zahlenpaar (und nicht für diejenigen, die zu einer bestimmten Regression passen) zu zeichnen, benötigen Sie den folgenden Code:
plot(c(0,5), c(0,5), type = "n", xlab = "", ylab = "", bty='l')
segments(x0, yo, x1, y1)
Ersetzen Sie einfach die Werte von x0, y0, x1, y1
durch die Ihrer Wahl .