# 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```