Often, we’ll want to show not only the mean of a value but also its standard error. This tells us how much variation there is around the mean – are most values close to the averages shown, or is there a wide range of values above and below the average?

To add error bars, we need to first calculate our standard errors. Continuing with our `msleep`

dataset, the code below calculates means and standard errors for hours asleep by diet. We compute new variables `mean.hours`

representing the mean of `hours`

, `mean.se`

representing the standard error of our means, and `se.min`

and `se.max`

representing the lower and upper bounds of our error range.

msleep_error_df <- msleep %>% subset(status = "asleep") %>% na.omit() %>% group_by(diet) %>% summarize(mean.hours = mean(hours), mean.se = std.error(hours)) %>% mutate(se.min = mean.hours - mean.se, se.max = mean.hours + mean.se)

We can then create our bar plot showing means and standard errors as follows. We add a `geom_errorbar()`

layer specifying `ymin`

and `ymax`

variables for our error bar and set its width to `0.2`

of the bar’s width. Because we’ve already calculated mean values in our summary data frame, we specify `stat = "identity"`

to display the `mean.hours`

values as is.

msleep_sebar <- ggplot(msleep_error_df, aes(x = diet, y = mean.hours)) + geom_bar(stat = "identity") + geom_errorbar(aes(ymin = se.min, ymax = se.max), width = 0.2) + labs(title = "Mean Hours Asleep by Diet")

This produces the following plot, which should look familiar from the last exercise! Now that we have error bars, we can see how much variation there is around the mean hours asleep for each diet group.

### Instructions

**1.**

We now want to add error bars to our plot of mean graduation rates by year. We’ve created summary data frame called `graduation_error_df`

containing means and standard errors for graduation rates by year. Examine `graduation_error_df`

using the `head()`

function.

**2.**

Create a bar plot named `graduation_sebar`

mapping `Year`

to the `x`

axis and `Mean.Pct`

to the `y`

axis, using our newly created `graduation_error_df`

data frame. First, add a `geom_bar()`

layer with the appropriate `stat`

. Second, add a `geom_errorbar()`

layer mapping `SE.Min`

to `ymin`

and `SE.Max`

to `ymax`

with a width of `0.2`

.

Print `graduation_sebar`

to see what it looks like.