[R] ggplot2: Get the regression line with 95% confidence bands
Bert Gunter
bgunter@4567 @end|ng |rom gm@||@com
Mon Dec 11 00:52:42 CET 2023
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 <ruipbarradas using 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 using 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 using 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]]
More information about the R-help
mailing list