Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plot fitted line within certain range R

Tags:

plot

r

lm

par

Using R, I would like to plot a linear relationship between two variables, but I would like the fitted line to be present only within the range of the data.

For example, if I have the following code, I would like the line to exist only from x and y values of 1:10 (with default parameters this line extends beyond the range of data points).

x <- 1:10
y <- 1:10
plot(x,y)
abline(lm(y~x))
like image 570
Thraupidae Avatar asked Apr 05 '12 21:04

Thraupidae


People also ask

How do I add a line of best fit in ggplot2?

Adding a regression line on a ggplot You can use geom_smooth() with method = "lm" . This will automatically add a regression line for y ~ x to the plot.

How do you fit a regression line in R?

A scatter plot can be created using the function plot(x, y). The function lm() will be used to fit linear models between y and x. A regression line will be added on the plot using the function abline(), which takes the output of lm() as an argument. You can also add a smoothing line using the function loess().


2 Answers

In addition to using predict with lines or segments you can also use the clip function with abline:

x <- 1:10
y <- 1:10
plot(x,y)
clip(1,10, -100, 100)
abline(lm(y~x))
like image 194
Greg Snow Avatar answered Oct 15 '22 09:10

Greg Snow


Instead of using abline(), (a) save the fitted model, (b) use predict.lm() to find the fitted y-values corresponding to x=1 and x=10, and then (c) use lines() to add a line between the two points:

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

plot(x,y)
lines(x=X, y=Y)
like image 25
Josh O'Brien Avatar answered Oct 15 '22 07:10

Josh O'Brien