在一定范围R内绘制拟合线

Thr*_*dae 14 plot r par lm

使用R,我想绘制两个变量之间的线性关系,但我希望拟合线仅存在于数据范围内.

例如,如果我有以下代码,我希望该行仅存在于x和y值1:10(默认参数此行超出数据点范围).

x <- 1:10
y <- 1:10
plot(x,y)
abline(lm(y~x))
Run Code Online (Sandbox Code Playgroud)

Gre*_*now 19

除了使用predict具有lines或者segments你也可以使用clip函数abline:

x <- 1:10
y <- 1:10
plot(x,y)
clip(1,10, -100, 100)
abline(lm(y~x))
Run Code Online (Sandbox Code Playgroud)

  • +1,因为它适用于任何一行,也适用于abline(),而不使用带有predict()的hack.这样,例如,也可以修剪延伸到绘图边缘的直线,但是仅修剪到一侧,例如向右,而不是向左. (4认同)

Jos*_*ien 16

代替使用的abline(),(a)中保存的拟合模型,(b)中使用predict.lm(),以找到对应于x = 1和x = 10,且然后(c)中使用的拟合y值lines()添加的两个点之间的线:

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

plot(x,y)
lines(x=X, y=Y)
Run Code Online (Sandbox Code Playgroud)


Eti*_*rie 8

您可以使用预测来完成此操作.

您可以预测x的特定值(参见?预测)

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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述