dat<-data.frame(x=c(2,3,4,5,6),y=c(4,4,6,6,10)) x<-dat$x y<-dat$y min.RSS <- function(data, par) { with(data, sum((par[1] + par[2] * x - y)^2)) } (result <- optim(par = c(0, 1), fn = min.RSS, data = dat)) plot(y ~ x, data = dat, main="Least square regression", xlim=c(0,6), ylim=c(0,10)) abline(a = result$par[1], b = result$par[2], col = "red")