Non-parametric tests offer alternatives to traditional parametric statistical tests and are often applicable when the assumptions for parametric tests are violated. Among these is the Friedman test, a non-parametric equivalent to a one-way repeated measures ANOVA. The Friedman test is used to compare more than two paired groups when the dependent variable is either ordinal or interval data that is not normally distributed. This article will guide you through conducting a Friedman test in R, from data preparation to interpreting the results.
Table of Contents
- Prerequisites
- Understanding the Friedman Test
- Data Preparation
- Assumptions of Friedman Test
- Conducting the Friedman Test
- Interpretation of Results
- Data Visualization
- Conclusion
1. Prerequisites
Install and Load Necessary Packages
Ensure that R is installed on your system. The FSA
, PMCMRplus
, and ggplot2
packages will be useful for this guide.
# Install packages
install.packages(c("FSA", "PMCMRplus", "ggplot2"))
# Load packages
library(FSA)
library(PMCMRplus)
library(ggplot2)
2. Understanding the Friedman Test
The Friedman test is a non-parametric alternative to the one-way repeated measures ANOVA. It’s used to test for differences between groups when the dependent variable is not normally distributed and the data are paired. It’s commonly used in clinical trials or any repeated-measures experiment with a non-normal outcome variable.
3. Data Preparation
Example Dataset
We will use a hypothetical dataset, where we have test scores of 30 students under three different teaching methods:
# Create sample data
set.seed(123)
Method_A <- c(rnorm(30, 70, 10))
Method_B <- c(rnorm(30, 75, 10))
Method_C <- c(rnorm(30, 80, 10))
# Combine data into a data frame
data <- data.frame(Student = 1:30, Method_A, Method_B, Method_C)
head(data)
4. Assumptions of the Friedman Test
The Friedman test has several assumptions:
- Dependent Variable: Should be at least ordinal.
- Independent Variable: Should consist of two or more related groups.
- Random Sampling: Observations should be randomly sampled.
- Mutual Independence: Observations should be mutually independent.
5. Conducting the Friedman Test
The friedman.test()
function in R is used to conduct the Friedman test.
# Running the Friedman test
friedman_result <- friedman.test(cbind(Method_A, Method_B, Method_C))
print(friedman_result)
6. Interpretation of Results
The output from friedman.test()
includes a chi-square statistic and a p-value. If the p-value is less than the significance level (commonly 0.05), you can reject the null hypothesis.
7. Data Visualization
It is often helpful to visualize the data to understand how the different groups differ.
library(tidyverse)
# Data transformation for ggplot
data_long <- data %>%
pivot_longer(cols = -Student, names_to = "Method", values_to = "Score")
# Create the boxplot
ggplot(data_long, aes(x = Method, y = Score)) +
geom_boxplot() +
ggtitle("Comparison of Scores by Teaching Method") +
xlab("Teaching Method") +
ylab("Scores")

8. Conclusion
The Friedman test offers a robust way to compare more than two related groups when the assumptions for parametric tests aren’t met. This guide has taken you through the complete process of running a Friedman test in R, from understanding what the test is to interpreting the results. Along with data visualization, you can use the Friedman test to make well-informed conclusions about your non-parametric, paired data.