This can easily be done using predict.lm to get the intervals (confidence or prediction). ?predict.lm contains a plotting example using ?matplot from the graphics package. Here's a somewhat verbose version for your example (first converting Year to numeric, of course):
df=data.frame(year= c(2012,2015,2018,2022), score=c(495,493, 495, 474)) fitted <- lm(score ~ year, data = df) with(df, matplot(x = year, y = cbind(score,predict(fitted,interval = 'conf', level = .95)) ,type = c('p', rep('l',3)) ,pch = 16 ,lty = c('blank','solid', 'dashed','dashed') ## or use numeric values of 0,1,2,2 ,lwd = c(0,2,1,1) ,col = c('black','darkblue', 'red','red') ,xlab = 'Year' ,ylab = 'Data with Fitted Line and Conf Intervals' ) ) Cheers, Bert On Sun, Dec 10, 2023 at 2:51 PM Rui Barradas <ruipbarra...@sapo.pt> wrote: > Às 22:35 de 10/12/2023, varin sacha via R-help escreveu: > > > > Dear R-experts, > > > > Here below my R code, as my X-axis is "year", I must be missing one or > more steps! I am trying to get the regression line with the 95% confidence > bands around the regression line. Any help would be appreciated. > > > > Best, > > S. > > > > > > ############################################# > > library(ggplot2) > > > > df=data.frame(year=factor(c("2012","2015","2018","2022")), > score=c(495,493, 495, 474)) > > > > ggplot(df, aes(x=year, y=score)) + geom_point( ) + > geom_smooth(method="lm", formula = score ~ factor(year), data = df) + > labs(title="Standard linear regression for France", y="PISA score in > mathematics") + ylim(470, 500) > > ############################################# > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > Hello, > > I don't see a reason why year should be a factor and the formula in > geom_smooth is wrong, it should be y ~ x, the aesthetics envolved. > It still doesn't plot the CI's though. There's a warning and I am not > understanding where it comes from. But the regression line is plotted. > > > > ggplot(df, aes(x = as.numeric(year), y = score)) + > geom_point() + > geom_smooth(method = "lm", formula = y ~ x) + > labs( > title = "Standard linear regression for France", > x = "Year", > y = "PISA score in mathematics" > ) + > ylim(470, 500) > #> Warning message: > #> In max(ids, na.rm = TRUE) : no non-missing arguments to max; > returning -Inf > > > > Hope this helps, > > Rui Barradas > > > > -- > Este e-mail foi analisado pelo software antivírus AVG para verificar a > presença de vírus. > www.avg.com > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.