How to Perform Dunnett’s Test in R

[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.

Dunnett’s test in R, After the ANOVA test has been completed the next step is to determine which group means are significantly different from one another.

Different types of post hoc tests are available and most often used once are Tukey HSD multiple comparison test and Dunnet test.

If our treatment groups contain a control group, and the experimenter wishes to determine whether the tested groups are significantly different from the control group, Dunnett’s test comes in handy.

This tutorial describes how to employee Dunnett’s test in R

How to find dataset differences in R Quickly Compare Datasets »

Dunnett’s test in R

Assume there are three groups. A first group is a control group, while the other two are test groups. The dosages of the test groups are varied, and we want to know if the test groups differ significantly from the control group.

As we all know, the first step is to visually inspect the data and run a one-way ANOVA followed by a Dunnett test.

Step 1: Create a Data Frame

data <- data.frame(Group = rep(c("control", "Test1", "Test2"), each = 10),
value = c(rnorm(10), rnorm(10),rnorm(10)))

Let’s see the data frame

   Group      value
1 control  0.1932123
2 control -0.4346821
3 control  0.9132671
4 control  1.7933881
5 control  0.9966051
6 control  1.1074905

Step 2: Visualize the values for each group.

To see the distribution of values in each group, we can use a box plot or a violin plot.

Box plot in R

boxplot(value~ Group,
        data = data,
        main = "Product Values",
        xlab = "Groups",
        ylab = "Value",
        col = "red",
        border = "black")

On the basis of visualization, it is possible to distinguish Test1 and Test2 from the control groups. Let’s look at the data using ANOVA and then Dunnett’s test.

Stringr in r 10 data manipulation Tips and Tricks »

Step 3: ANOVA Comparison

We can calculate F and p values using the aov function. Let’s put the model together.

model <- aov(value ~ Group, data = data)
Df Sum Sq Mean Sq F value Pr(>F) 
Group        2  4.407  2.2036    3.71 0.0377 *
Residuals   27 16.035  0.5939                 
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Based on the ANOVA model the p-value is statistically significant (p<0.05), indicate that each group does not have the same average values.

Let’s perform Dunnett’s test and identify which groups are statistically significant.

How to find the Mean Deviation? MD Vs MAD-Quick Guide »

Step 4: Dunnett’s Test.

We can make use of DunnettTest() function from the DescTools package.

Dunnett’s Function syntax is as follows,

DunnettTest(x, g)


x: Numerical values

g: Group Names

Let’s load the library and perform Dunnett’s test

DunnettTest(x=data$value, g=data$Group)
  Dunnett's test for comparing several treatments with a control : 
    95% family-wise confidence level
                    diff   pval   
Test1-control -0.8742469 -1.678514 -0.06998022 0.0320 * 
Test2-control -0.7335283 -1.537795  0.07073836 0.0768 . 
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


The Control group scored significantly higher values compared to Test 1 (p<0.05) and Test2 (p<0.1).

Intraday Stock Trading in R » Strategy & Chart Reading »

The post How to Perform Dunnett’s Test in R appeared first on finnstats.

To leave a comment for the author, please follow the link and comment on their blog: Methods – finnstats. 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)