QQ-plots in R: Quantile-Quantile Plots-Quick Start Guide

[This article was first published on Methods – finnstats, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

QQ-plots in R, first need to understand the Q-Q plot. The Q-Q plot is a graphical tool to help us examine if a set of data plausibly came from some theoretical distribution such as a Normal or not.

Suppose, if we are executing a statistical analysis the test comes under parametric methods assumes variable is Normally distributed, we can make use of a Q-Q plot to check that assumption.

It’s just a visual verification, not full proof, so we can make use of some other statistical test also. But Q-Qplot allows us to see at-a-glance if our assumption is valid or not.

Basically, a Q-Q plot is a scatterplot created with the aid of using plotting units of quantiles towards one another.

If each unit of quantiles got here from the identical distribution, we have to see the factors forming a line that’s more or less straight.

Discriminant Analysis in r » Discriminant analysis in r »

Here we are going to discuss an example of a Normal Q-Q plot when both sets of quantiles come from Normal distributions.

QQ-plots in R

We are making use of mtcars package in R.

                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
 Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
 Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
 Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
 Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
 Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
 Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Make a plot for the variable mpg, qqnorm function produces a normal QQ plot of the variable

qqnorm(mtcars$mpg, pch = 1, frame = FALSE)

Add a line to the plot, qqline function adds a reference line

Intraday Stock Trading in R » Strategy & Chart Reading »

qqline(mtcars$mpg, col = "steelblue", lwd = 2)

More or less points are closer to the straight line.

qqPlot function also avilable from car package, Let’s see how to plot the same.


qqPlot function provides better visualization compared to previous one. Almost all points fall approximately along this straight line, so we can assume normality.

Normality Test in R » How to Perform » Easy Steps »

Let’s see how to plot the same in ggplot.

ggplot(mtcars, aes(sample=mpg))+stat_qq()+theme_bw()

We can make use of qplot function also,

qplot(sample = mpg, data = mtcars)+theme_bw()

We can change qq plot point shapes by groups

Decision Trees in R » Classification & Regression »

Create Q-Q plot based on groups

p<-qplot(sample = mpg, data = mtcars, color=cyl)+theme_bw()

You can legend position to different places.

KNN Algorithm Machine Learning » Classification & Regression »

p + theme(legend.position="top")
p + theme(legend.position="bottom") # legend at bottom
p + theme(legend.position="left") #legend at left
p + theme(legend.position="none") # Remove legend

The result you got from Q-Q plot you can verify the same based on shapiro test.


Shapiro-Wilk normality test

data: mtcars$mpg
W = 0.94756, p-value = 0.1229

The result is not significant, so we can assume the normality.

Enjoyed this article? Don’t forget to show your love, Please Subscribe Newsletter and COMMENT below!

Line types in R: Ultimate Guide For R Baseplot and ggplot »

The post QQ-plots in R: Quantile-Quantile Plots-Quick Start Guide appeared first on finnstats.

To leave a comment for the author, please follow the link and comment on their blog: Methods – finnstats.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)