Test Homogeneity of Variance in R

This tutorial shows methods test Homogeneity of Variance (or, Equality of Variance) in R. The methods include F-test, Bartlett’s test, Levene’s test, and Fligner-Killeen’s test.

  • F-test: Compare variances of 2 groups. Need assumption of normality.
  • Bartlett’s test: Compare variances of 2 or more groups. Need assumption of normality.
  • Levene’s test: An alternative to Bartlett’s test, as Levene’s test is less sensitive to departures from the assumption of normality.
  • Fligner-Killeen’s test: A non-parametric test, and very robust against the departure from the assumption of normality.

DataSet being Used

R Built-in dataset “ToothGrowth” will be used, which has 60 observations of 3 variables.

  • Y variable is called “len“, which is a numerical variable.
  • One X variable is called “dose“, which has three levels (i.e., 0.5, 1, and 2 mg).
  • Another X variable is called “supp“, which has two levels (i.e., OJ and VC).
> head(ToothGrowth) 
   len supp dose
1  4.2   VC  0.5
2 11.5   VC  0.5
3  7.3   VC  0.5
4  5.8   VC  0.5
5  6.4   VC  0.5
6 10.0   VC  0.5

> summary(ToothGrowth) 
      len        supp         dose      
 Min.   : 4.20   OJ:30   Min.   :0.500  
 1st Qu.:13.07   VC:30   1st Qu.:0.500  
 Median :19.25           Median :1.000  
 Mean   :18.81           Mean   :1.167  
 3rd Qu.:25.27           3rd Qu.:2.000  
 Max.   :33.90           Max.   :2.000  

> table(ToothGrowth$dose) 
0.5   1   2 
 20  20  20 

Example of F-test

The following is the hypothesis for this F-test to test Homogeneity of Variance.

  • Null Hypothesis: The variances of the two groups are equal.
  • Alternative Hypothesis: The variances of the two groups are NOT equal.

We use var.test() to test the homogeneity of variance in R. As we can see the output below, the p-value is 0.2331, suggesting that we failed to reject null hypothesis. Thus, the variances of the two groups are equal.

> var.test(len ~ supp, data=ToothGrowth, alternative = "two.sided") 

	F test to compare two variances

data:  len by supp
F = 0.6386, num df = 29, denom df = 29, p-value =
0.2331
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.3039488 1.3416857
sample estimates:
ratio of variances 
         0.6385951 

Examples of Bartlett’s test

Bartlett’s test has the same hypothesis as F-test to test Homogeneity of Variance. The following is the R code and output. The p-value is 0.2331, suggesting that we failed to reject null hypothesis. Thus, the variances of the two groups are equal.

> bartlett.test(len ~ supp, data=ToothGrowth)  

	Bartlett test of homogeneity of variances

data:  len by supp
Bartlett's K-squared = 1.4217, df = 1, p-value =
0.2331

Since Bartlett’s test can test more than 2 groups, we can also use another X variable, namely dose. Since it has more than 2 groups, the hypothesis writing is slightly different.

  • Null Hypothesis: The variances of the 3 groups are equal.
  • Alternative Hypothesis: At least 2 groups’ variables are NOT equal.

The p-value of 0.717 suggests that variances of the 3 groups are equal.

> bartlett.test(len ~ dose, data=ToothGrowth)   

	Bartlett test of homogeneity of variances

data:  len by dose
Bartlett's K-squared = 0.66547, df = 2, p-value =
0.717

Example of Levene’s test

We need to use leveneTest() function in car package. Thus, the following R code.

  • Null Hypothesis: The variances of the 3 groups are equal.
  • Alternative Hypothesis: At least 2 groups’ variables are NOT equal.

We can see that the p-value is 0.5281. Thus, we failed to reject null hypothesis and concluded that variances of the 3 groups are equal. Thus, we meet the assumption of homogeneity of variance.

> library(car)
> leveneTest(len ~ as.factor(dose), data = ToothGrowth)   

Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  2  0.6457 0.5281
      57    

Example of Fligner-Killeen’s test

fligner.test() is available in stats package. The R code and output are below.

  • Null Hypothesis: The variances of the 3 groups are equal.
  • Alternative Hypothesis: At least 2 groups’ variables are NOT equal.

The p-value of 0.4996 suggests that variances of the 3 groups are equal.

> library(stats)
> fligner.test(len ~ as.factor(dose), data = ToothGrowth)   

	Fligner-Killeen test of homogeneity of variances

data:  len by as.factor(dose)
Fligner-Killeen:med chi-squared = 1.3879, df = 2,
p-value = 0.4996

Reference

Further Reading