特定の点を通過するように強制されるabline(lm(...))
を使用して、最小二乗回帰直線を描画しようとしています。 この質問 は関連しているようですが、私が望んでいるものとはまったく異なります。次に例を示します。
test <- structure(list(x = c(0, 9, 27, 40, 52, 59, 76), y = c(50, 68,
79, 186, 175, 271, 281)), .Names = c("x", "y"))
# set up an example plot
plot(test,pch=19,ylim=c(0,300),
panel.first=abline(h=c(0,50),v=c(0,10),lty=3,col="gray"))
# standard line of best fit - black line
abline(lm(y ~ x, data=test))
# force through [0,0] - blue line
abline(lm(y ~ x + 0, data=test), col="blue")
これは次のようになります。
次に、他のポイントまでの距離を最小限に抑えながら、(x=10,y=50)
のマークされた任意のポイントにラインを強制する方法を教えてください。
# force through [10,50] - red line
??
大まかな解決策は、モデルの原点をそのポイントに移動し、切片のないモデルを作成することです
nmod <- (lm(I(y-50)~I(x-10) +0, test))
abline(predict(nmod, newdata = list(x=0))+50, coef(nmod), col='red')
lm()
の式を変更して、データをオフセットできます。
p=10
q=50
abline(lm(I(y-q) ~ I(x-p) + 0, data=test), col="red")