SD, SEM, or confidence interval: which error bar?

Choosing honest error bars and showing your data instead of hiding it behind a bar

TL;DR

SD describes the spread of your data; SEM describes the precision of your mean (and is always smaller, which is why it's tempting and often misleading); a 95% CI shows the plausible range for the true mean and is usually the most informative. Whatever you pick, state it in the legend. And for small samples, show the individual data points, not a bar with an error whisker.

SD vs. SEM vs. CI: they answer different questions

  • Standard deviation (SD): how spread out the individual data points are. Use it to describe variability in your sample. It doesn't shrink as you add more data (it converges to the population spread).
  • Standard error of the mean (SEM): SD ÷ √n. How precisely you've estimated the mean. It gets smaller with larger n, which is exactly why showing SEM can make data look tidier and more "significant" than it is. SEM is not a description of your data's spread.
  • 95% confidence interval: roughly the mean ± ~2×SEM (for reasonable n); the plausible range for the true mean. The most directly interpretable for inference → effect size and confidence intervals.

An unlabeled error bar is uninterpretable. Always state whether it's SD, SEM, or CI, and give n, in the figure legend.

Rule of thumb: to show how variable your data are, use SD; to show how precise your mean estimate is, use a CI; avoid SEM as a default, since it's the smallest bar and the least self-explanatory. Above all, label which one you used, because an unlabeled error bar is uninterpretable.

Show the data, not just a summary

"Bar charts hide the data." A bar with an error whisker can represent wildly different underlying distributions: a few outliers, bimodality, or n = 3. For small samples especially:

  • Prefer dot plots / scatter showing every point, with the mean and an error bar (or a box plot) overlaid.
  • Box plots show median, quartiles, and spread for larger samples.
  • Reserve bar charts for counts/proportions, not continuous measurements where the distribution matters.

This is now an explicit expectation at many journals: plot individual data points when n is small.

Reading overlap (carefully)

A frequent question: "if error bars overlap, is it non-significant?" There's no clean shortcut:

  • SEM bars overlapping says little; bars can overlap and still be significantly different.
  • 95% CIs: for two independent groups, clearly non-overlapping CIs usually imply significance, but a moderate overlap does not guarantee non-significance.

Don't eyeball significance from error bars; report the actual test, effect size, and CI.

How to do it

  • R: ggplot2 with geom_jitter() for points plus stat_summary() for mean/CI; geom_boxplot() for box plots.
  • GraphPad Prism: choose the error-bar type in the graph settings and enable "plot individual values"; Prism makes scatter-with-mean easy.
  • Python: seaborn stripplot/swarmplot overlaid on pointplot or boxplot.

A biology example

Three independent experiments per condition. A bar ± SEM looks clean and tiny, but with n = 3 it's hiding almost everything. Far better: a dot plot showing all three points per group, the mean, and a 95% CI (or just the points and mean for such a small n). The reader instantly sees the sample size, the spread, and any outlier.

Common mistakes

  • Unlabeled error bars. Always say SD, SEM, or CI, and give n, in the legend.
  • Using SEM to look more precise. It's the smallest bar; choose it for the right reason, not the flattering one.
  • Bar charts for small-n continuous data. Show the points.
  • Judging significance by error-bar overlap. Report the test.
  • Mismatched n and error type, e.g., SEM with n = 2 conveys almost nothing.

Effect size and confidence intervals · Replicates and pseudoreplication · Reporting statistics

Ready to run this analysis on your own data?