Answer

What does kurtosis actually tell you about your data?

A frequently asked statistics question ·

distributionsdescriptive statistics

The short answer

Kurtosis measures how prone a distribution is to extreme values. Compared with a normal distribution (excess kurtosis of 0), positive values mean heavier tails and more outliers, and negative values mean lighter tails. It is not a measure of how peaked the curve looks.

What kurtosis measures

Kurtosis is a summary of a distribution's tails: how much of the variability comes from rare, extreme values rather than from values near the middle. A distribution with high kurtosis produces outliers more often than a normal distribution with the same standard deviation would.

Technically, it is the average of the fourth power of the standardized values, mean(z^4). Raising values to the fourth power lets extreme observations dominate the result, which is why kurtosis is really a tail statistic. The normal distribution has a kurtosis of 3.

How to read the number

Most people work with excess kurtosis, which is kurtosis minus 3, so the normal distribution scores 0.

Check which convention your software uses before you interpret a value. For example, Excel's KURT and SPSS report excess kurtosis, while Stata's summarize, detail reports raw kurtosis, where the normal distribution is 3.

What you can say about a graph

In a histogram, high kurtosis shows up as a thin stretch of observations far from the center. It is easier to judge in a normal Q-Q plot: with heavy tails, the points at both ends curve away from the reference line, the left end below it and the right end above it. With light tails, the ends bend the other way.

Skewness is a separate question. Skewness describes asymmetry, while kurtosis describes tail weight in both directions combined. A distribution can be symmetric with heavy tails, or skewed with light ones, so look at both.

Common mistakes

See it in R

This simulation compares three distributions with known excess kurtosis. The Laplace distribution here is built from two exponentials, so it needs no extra packages.

set.seed(42)
n <- 100000

normal  <- rnorm(n)             # excess kurtosis 0
laplace <- rexp(n) - rexp(n)    # heavy tails: excess kurtosis 3
uniform <- runif(n)             # light tails: excess kurtosis -1.2

excess_kurtosis <- function(x) {
  z <- (x - mean(x)) / sd(x)
  mean(z^4) - 3
}

round(sapply(list(normal = normal, laplace = laplace, uniform = uniform),
             excess_kurtosis), 2)
# Roughly: normal 0, laplace 3, uniform -1.2

qqnorm(laplace); qqline(laplace)   # the ends curve away from the line

A sample of 100,000 is only for illustration. With a few dozen observations, treat the estimate as a rough guide and rely on the plot.

Related tools and guides

More answered questions

Working with your own data?

General answers only go so far. Send us your situation and we'll reply by email within two business days.

Ask your question

Written by AskStats with AI assistance. This is general information, not advice for your specific data or study. When the results matter, check your approach with a qualified statistician.