17

Rを使用して、2つの変数間の線形関係をプロットしたいのですが、近似直線がデータの範囲内にのみ存在するようにしたいと思います。

たとえば、次のコードがある場合、1:10のx値とy値からのみ線が存在するようにします(デフォルトのパラメーターでは、この線はデータポイントの範囲を超えています)。

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

5 に答える 5

26

で使用することに加えてpredictlinesまたはで関数をsegments使用することもできます:clipabline

x <- 1:10
y <- 1:10
plot(x,y)
clip(1,10, -100, 100)
abline(lm(y~x))
于 2012-04-06T16:35:34.877 に答える
17

を使用する代わりにabline()、(a)適合モデルを保存し、(b)predict.lm()x=1およびx=10に対応する適合y値を見つけるために使用し、次に(c)lines()2つのポイントの間に線を追加するために使用します。

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

plot(x,y)
lines(x=X, y=Y)
于 2012-04-05T21:53:36.377 に答える
8

これは、predictを使用して行うことができます。

xの特定の値を予測できます(?predictを参照)

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

ここに画像の説明を入力してください

于 2012-04-05T22:05:25.387 に答える
4

plotrixライブラリには、ablineclip()このための機能があります。

x <- 1:10
y <- 1:10
plot(x,y)
ablineclip(lm(y~x),x1=1,x2=5)
于 2016-03-15T16:45:22.307 に答える
0

別の方法は、関数を使用することです(ここでsegmentsドキュメント)。

線を推定し、切片aとの傾きを取得したとしますb。したがって、近似関数はy = a + bxです。

ここで、との間のxの線を表示するx0としx1ます。次に、次のコードが線をプロットします。

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

a, b, x0, x1 の値を選択した値に置き換えるだけです。

ここに画像の説明を入力してください


この質問に来て、任意の数のペア(特定の回帰に適合するものではない)の線をプロットしたい場合は、次のコードが必要です。

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

x0, y0, x1, y1 の値を選択した値に置き換えるだけです。

于 2017-03-17T10:47:09.770 に答える