How can I perform Mood’s Median Test in R?

Mood’s Median Test is a non-parametric statistical test used to determine if there is a significant difference between the medians of two independent samples. This test is commonly used when the data does not meet the assumptions of parametric tests, such as the t-test. In R, this test can be performed using the “med.test” function from the “stats” package. This function requires the two samples to be compared as input parameters and outputs the test statistic, degrees of freedom, and p-value. The p-value can then be compared to a pre-determined significance level to determine if there is a significant difference between the medians of the two samples. This test is useful in situations where the data is not normally distributed or when the sample size is small.

Perform Mood’s Median Test in R


Mood’s Median Test is used to compare the medians of two or more independent groups.

The median_test function from the coin library can be used to perform this test in R, which uses the following syntax:

median_test(response~group, data)

where:

  • response: a vector of response values
  • group: a vector of grouping values
  • data: a data frame containing the response and group vectors

The following example illustrates how to use this function to perform Mood’s Median Test in R.

Example: Mood’s Median Test in R

Suppose a teacher wants to know whether or not two different studying methods produce different exam scores among her class of students. To test this, she randomly assigns 10 students to use one studying method and another 10 students to use another. After two weeks, each student takes the same exam.

She decides to use Mood’s Median Test to determine if the median exam score differs between the two groups.

Step 1: Create the data frame.

#create data
method = rep(c('method1', 'method2'), each=10)
score = c(75, 77, 78, 83, 83, 85, 89, 90, 91, 97, 77, 80, 84, 84, 85, 90, 92, 92, 94, 95)
examData = data.frame(method, score)

#view data
examData

    method score
1  method1    75
2  method1    77
3  method1    78
4  method1    83
5  method1    83
6  method1    85
7  method1    89
8  method1    90
9  method1    91
10 method1    97
11 method2    77
12 method2    80
13 method2    84
14 method2    84
15 method2    85
16 method2    90
17 method2    92
18 method2    92
19 method2    94
20 method2    95

Step 2: Perform Mood’s Median Test.

#load the coin library
library(coin)

#perform Mood's Median Test
median_test(score~method, data = examData)

#output
	Asymptotic Two-Sample Brown-Mood Median Test

data:  score by method (method1, method2)
Z = -0.43809, p-value = 0.6613
alternative hypothesis: true mu is not equal to 0

The p-value of the test is 0.6613. Since this value is not less than 0.05, we fail to reject the null hypothesis. We do not have sufficient evidence to say that there is a statistically significant difference in the median exam scores between the two groups.

By default, this function assigns a score of 0 to observations that are exactly equal to the median. However, you can specify this value to instead be 0.5 or 1 by using the mid.score argument.

For example, the following code performs the exact same Mood’s Median Test but it assigns a value of 0.5 to observations that are equal to the median:

#perform Mood's Median Test
median_test(score~method, mid.score="0.5", data = examData)

#output
	Asymptotic Two-Sample Brown-Mood Median Test

data:  score by method (method1, method2)
Z = -0.45947, p-value = 0.6459
alternative hypothesis: true mu is not equal to 00
x