Skewness and Kurtosis: The Shape of Your Data

If you have followed this learning path from the beginning, you now have a powerful descriptive toolkit. You know how to find the center of your data (Mean, Median), you know how to measure the chaos (Standard Deviation), and you know how to slice it up (Quartiles).

There is only one thing left to describe: the physical shape of the data.

If you take a dataset and plot it on a bar chart or a histogram, it creates a visual curve. In a perfect world, that curve looks like a symmetrical bell (the famous Normal Distribution), where the left side is a perfect mirror image of the right side.

But the real world is rarely perfect. Data gets warped, stretched, and squished. To describe these imperfections mathematically, statisticians use two measurements: Skewness and Kurtosis.

1. Skewness: When Data Leans to One Side

Skewness measures the lack of symmetry in your data. It tells you if the bulk of your data is pushed to one side, leaving a long, trailing “tail” on the other.

The direction of the skew is always named after the direction the tail is pointing, not where the bulk of the data sits.

  • Positive Skew (Right-Skewed): The long tail stretches out to the right (toward the higher numbers). The bulk of the data is clustered on the low end.
  • Example of Positive Skew: Income. Most people make a standard salary, clustering on the left side of the graph. But a few billionaires create a massive, long tail stretching far out to the right. In a right-skewed dataset, the Mean is artificially pulled higher than the Median.
  • Negative Skew (Left-Skewed): The long tail stretches out to the left (toward the lower numbers). The bulk of the data is clustered on the high end.
  • Example of Negative Skew: Scores on a very easy exam. Most students score between 80% and 100%, clustering on the right side. But a few students who completely failed drag a long tail out to the left. In a left-skewed dataset, the Mean is dragged lower than the Median.

2. Kurtosis: The Danger of Fat Tails

For decades, textbooks taught that Kurtosis measures how “pointy” or “flat” the peak of a distribution is. Modern statisticians hate this definition because it is mathematically misleading.

Kurtosis actually measures the tails of your distribution. Specifically, it measures how much of your data is made up of extreme outliers compared to a perfectly normal bell curve. It is a measurement of risk.

There are three categories of Kurtosis:

  • Mesokurtic (Normal): The baseline. The tails are standard, and outliers happen at a predictable, normal rate. (A perfect normal distribution has a kurtosis of exactly 3).
  • Leptokurtic (Fat Tails): The data has a high kurtosis (greater than 3). This means the distribution has “fat tails.” You have significantly more extreme, wild outliers than you would normally expect. In finance, leptokurtic data is incredibly dangerous because market crashes happen far more often than the standard models predict.
  • Platykurtic (Thin Tails): The data has a low kurtosis (less than 3). The distribution has “thin tails.” The data is highly predictable, and extreme outliers are incredibly rare.

The Excess Kurtosis Cheat Code: Because a normal distribution has a kurtosis of 3, many software programs subtract 3 from the final answer to make things easier. This is called Excess Kurtosis. If Excess Kurtosis is greater than 0, you have fat tails. If it is less than 0, you have thin tails.

How to Calculate Shape in Software

Here is how you can calculate Skewness and Kurtosis using standard software tools.

Microsoft Excel

Excel automatically calculates Excess Kurtosis, meaning a perfectly normal distribution will return a value of 0. Assuming your data is in cells A1 through A10:

  • Skewness: Type =SKEW(A1:A10)
  • Kurtosis: Type =KURT(A1:A10)
Python

The easiest way to calculate these in Python is by using the scipy.stats library, which is the industry standard for scientific mathematics.

from scipy.stats import skew, kurtosis
import numpy as np

data = [12, 15, 22, 29, 34, 45, 51, 62, 78, 90, 105, 300] # Added an outlier

# Calculate Skewness
data_skew = skew(data)
print(data_skew) # Output will be positive (right-skewed) due to the 300

# Calculate Kurtosis (Fisher's definition calculates Excess Kurtosis by default)
data_kurt = kurtosis(data)
print(data_kurt)
R

Base R does not have native functions for skewness and kurtosis, but the incredibly popular e1071 package handles them perfectly.

data <- c(12, 15, 22, 29, 34, 45, 51, 62, 78, 90, 105, 300)

install.packages("e1071")
library(e1071)

# Calculate Skewness and Kurtosis
skewness(data)
kurtosis(data)

Congratulations! You have finished Path 2.

You have officially mastered Descriptive Statistics. You can now confidently take a messy, massive dataset and completely describe its centre, its spread, its slices, and its shape.

You are no longer just looking at data; you are ready to start modelling it.

πŸ—ΊοΈ Part of Path 2: Descriptive Statistics

You have completed the final lesson in the Descriptive Statistics module! Test your knowledge before moving on.

← Previous Lesson
Quartiles & Percentiles
Take the Quiz →
Path 2 Final Knowledge Check