wake-up-neo.com

Handle in einem bestimmten Bereich R

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

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)
14
Josh O'Brien

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))
18
Greg Snow

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

enter image description here

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)
3
Dr.J

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 .

 enter image description here


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 .

0
luchonacho