Daniel Nordlund
2023-Dec-11 22:27 UTC
[R] ggplot2: Get the regression line with 95% confidence bands
On 12/10/2023 2:50 PM, Rui Barradas 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 at 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 > > >After playing with this for a little while, I realized that the problem with plotting the confidence limits is the addition of ylim(470, 500).? The confidence values are outside the ylim values.? Remove the limits, or increase the range, and the confidence curves will plot. Hope this is helpful, Dan -- Daniel Nordlund Port Townsend, WA USA -- This email has been checked for viruses by Avast antivirus software. www.avast.com
Ben Bolker
2023-Dec-11 22:31 UTC
[R] ggplot2: Get the regression line with 95% confidence bands
On 2023-12-11 5:27 p.m., Daniel Nordlund wrote:> On 12/10/2023 2:50 PM, Rui Barradas 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 at 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 >> >> >> > After playing with this for a little while, I realized that the problem > with plotting the confidence limits is the addition of ylim(470, 500). > The confidence values are outside the ylim values.? Remove the limits, > or increase the range, and the confidence curves will plot. > > Hope this is helpful, > > Dan >Or use + scale_y_continuous(limits = c(470, 500), oob = scales::squish)