# [R] ggplot2: Get the regression line with 95% confidence bands

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sun Dec 10 23:50:56 CET 2023

```À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 using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> 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,