The Complete Guide: How to Interpret Q-Q Plots


A Q-Q plot, short for “quantile-quantile” plot, is used to assess whether or not a set of data potentially came from some theoretical distribution.

In most cases, this type of plot is used to determine whether or not a set of data follows a normal distribution.

As a rule of thumb, the more that the points in a Q-Q plot lie on a straight diagonal line, the more normally distributed the data.

Conversely, the more that the points deviate from a straight diagonal line, the less normally distributed the data.

It’s important to note that a Q-Q plot doesn’t represent a formal statistical test to check for normality.

Instead, it’s a visual way to check if a dataset roughly follows a normal distribution.

The following examples show how to interpret various Q-Q plots in R.

Example 1: Q-Q Plot for Normal Data

The following code shows how to generate a normally distributed dataset with 500 observations and create a Q-Q plot for the dataset in R:

#make this example reproducible
set.seed(1)

#generate dataset that follows a normal distribution
normal_data <- rnorm(500)

#create Q-Q plot to visualize distribution of dataset
qqnorm(normal_data, main='Q-Q Plot of Normally Distributed Data')

From the plot we can see that the points mostly fall along a straight diagonal line with some minor deviations along each of the tails.

Based on this plot, we could safely assume that this dataset is normally distributed.

Example 2: Q-Q Plot for Left-Skewed Data

The following code shows how to generate a left-skewed dataset with 500 observations and create a Q-Q plot for the dataset in R:

#make this example reproducible
set.seed(1)

#generate left-skewed dataset
left_skewed <- rbeta(500,7,2)

#create Q-Q plot to visualize distribution of dataset
qqnorm(left_skewed, main='Q-Q Plot of Left-Skewed Distribution')

We can see that the points have an “arch” on the top left side of the plot, which is indicative of a left-skewed distribution.

Example 3: Q-Q Plot for Right-Skewed Data

The following code shows how to generate a right-skewed dataset with 500 observations and create a Q-Q plot for the dataset in R:

#make this example reproducible
set.seed(1)

#generate right-skewed dataset
right_skewed <- rbeta(500,2,7)

#create Q-Q plot to visualize distribution of dataset
qqnorm(right_skewed, main='Q-Q Plot of Right-Skewed Distribution')

We can see that the points have a “dip” on the bottom right side of the plot, which is indicative of a right-skewed distribution.

Example 4: Q-Q Plot for Non-Normal Data

The following code shows how to create a Q-Q plot for a dataset that follows an exponential distribution with 200 observations:

#make this example reproducible
set.seed(1)

#generate dataset that follows an exponential distribution
exponential_data <- rexp(200, rate=5)

#create Q-Q plot to visualize distribution of dataset
qqnorm(exponential_data, main='Q-Q Plot of Exponential Distribution'))

We can see that the points deviate significantly from the straight diagonal line.

This is an indication that the dataset is not normally distributed.

This makes sense considering we generated the dataset using based on an exponential distribution.

Additional Resources

The following tutorials explain how to create Q-Q plots using various statistical software:

How to Create a Q-Q Plot in R
How to Create a Q-Q Plot in Excel
How to Create a Q-Q Plot in Python

One Reply to “The Complete Guide: How to Interpret Q-Q Plots”

Leave a Reply

Your email address will not be published. Required fields are marked *