R编程中方差检验的同质性
在统计学中,如果所有随机变量都具有相同的有限方差,则随机变量序列是同方差的。这也称为方差同质性。在这篇文章中, 让我们解释一下检查两个或多个组的 R 编程中方差检验的同质性的方法。一些统计检验,例如两个独立样本 T 检验和 ANOVA 检验,假定组间方差相等。有多种方差检验可用于评估方差的相等性。这些包括:
- F检验:比较两组的方差。在这个测试中,数据必须是正态分布的。
- Bartlett 检验:比较两组或更多组的方差。在这个测试中,数据也必须是正态分布的。
- Levene 检验: Bartlett 检验的稳健替代方案,对偏离正态性不太敏感。
- Fligner-Killeen 检验:一种非参数检验,对于偏离正态性非常稳健。
准备数据集
在解释每个测试之前,让我们先准备和理解数据集。考虑 R 中包含的标准学习数据集之一是“ ToothGrowth ”数据集。牙齿生长数据集是 10 只豚鼠在三种维生素 C 剂量水平(0.5、1 和 2 毫克)和两种递送方法(橙汁或抗坏血酸)下每只的牙齿长度。该文件包含 3 个变量的 60 个观察值
- len:齿长
- supp:补充类型(VC 或 OJ)
- 剂量:以毫克为单位的剂量
R
# Exploring the ToothGrowth data set
print(head(ToothGrowth, 10))
print(str(ToothGrowth))
R
# R program to illustrate
# F-test
# Using var.test()
result = var.test(len ~ supp, data = ToothGrowth)
# print the result
print(result)
R
# R program to illustrate
# Barlett’s test
# Using bartlett.test()
result = bartlett.test(len ~ supp, data = ToothGrowth)
# print the result
print(result)
R
# R program to illustrate
# Levene's test
# Import required package
library(car)
# Using leveneTest()
result = leveneTest(len ~ supp, data = ToothGrowth)
# print the result
print(result)
R
# R program to illustrate
# Fligner-Killeen test
# Import required package
library(stats)
# Using fligner.test()
result = fligner.test(len ~ supp, data = ToothGrowth)
# print the result
print(result)
输出:
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
7 11.2 VC 0.5
8 11.2 VC 0.5
9 5.2 VC 0.5
10 7.0 VC 0.5
'data.frame': 60 obs. of 3 variables:
$ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
$ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
$ dose: num 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
NULL
F检验
它用于比较两组的方差。 F检验用于评估两个总体的方差是否相等。在这个测试中,数据必须是正态分布的。
统计假设:
一个假设 是 一种 关于给定问题的陈述。假设检验是一种统计方法,用于使用实验数据做出统计决策。假设检验基本上是我们对总体参数所做的假设。它评估关于总体的两个相互排斥的陈述,以确定样本数据最能支持哪个陈述。要了解有关统计假设的更多信息,请参阅了解假设检验。对于 F 检验,统计假设是:
- 零假设:两组的方差相等
- 替代假设:方差不同
R中的实现:
在var.test()方法的帮助下,可以在 R 编程中假设两个总体的方差相等的情况下在两个正态总体之间进行 f 检验。
Syntax:
var.test(formula, dataset)
Parameters:
formula: a formula of the form values ~ groups
dataset: a matrix or data frame
例子:
R
# R program to illustrate
# F-test
# Using var.test()
result = var.test(len ~ supp, data = ToothGrowth)
# print the result
print(result)
输出:
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
解释:
p 值为 p = 0.2,大于显着性水平 0.05。总而言之,这两个方差之间没有显着差异。
巴特利特试验
巴特利特试验 用于测试k个样本是否来自方差相等的总体。总体上的相等方差称为方差同质性或同质性。一些统计检验(例如ANOVA 检验)假设组或样本之间的方差相等。 Bartlett 检验可用于验证该假设。巴特利特的测试使 我们比较两个或多个样本的方差,以确定它们是否来自方差相等的总体。它适合正态分布的数据。
统计假设:
- 零假设:所有总体方差都相等
- 替代假设:至少有两个不同
R中的实现:
R提供了一个函数 stats 包中的bartlett.test ()可用于计算 Barlett 检验。该函数的语法如下:
Syntax:
bartlett.test(formula, dataset)
Parameters:
formula: a formula of the form values ~ groups
dataset: a matrix or data frame
例子:
R
# R program to illustrate
# Barlett’s test
# Using bartlett.test()
result = bartlett.test(len ~ supp, data = ToothGrowth)
# print the result
print(result)
输出:
Bartlett test of homogeneity of variances
data: len by supp
Bartlett's K-squared = 1.4217, df = 1, p-value = 0.2331
列文的测试
在统计学中, Levene 检验是一种推断统计量,用于评估为两个或多个组确定的变量的方差相等性。一些标准的统计程序发现,构成各种样本的总体的方差是相等的。 Levene 的检验评估了这一假设。它检查总体方差相等的零假设,称为方差同质性或同方差性。它比较k个样本的方差,其中 k 可以是两个以上的样本。它是Bartlett 检验的替代方案,对偏离常态不太敏感。
统计假设:
- 零假设:所有总体方差都相等
- 替代假设:至少有两个不同
R中的实现:
R提供了一个函数 leveneTest ()在car包中可用,可用于计算 Levene 的测试。该函数的语法如下:
Syntax:
leveneTest(formula, dataset)
Parameters:
formula: a formula of the form values ~ groups
dataset: a matrix or data frame
例子:
R
# R program to illustrate
# Levene's test
# Import required package
library(car)
# Using leveneTest()
result = leveneTest(len ~ supp, data = ToothGrowth)
# print the result
print(result)
输出:
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 1 1.2136 0.2752
58
Fligner-Killeen 测试
Fligner-Killeen检验是基于等级的组方差同质性的非参数检验。当数据非正态分布或无法解决与数据集中异常值相关的问题时,它很有用。它也是众多方差同质性检验之一,对偏离正态性最有效。
统计假设:
- 零假设:所有总体方差都相等
- 替代假设:至少有两个不同
R中的实现:
R提供了一个函数 fligner.test()在stats包中可用,可用于计算Fligner-Killeen 测试。该函数的语法如下:
Syntax:
fligner.test(formula, dataset)
Parameters:
formula: a formula of the form values ~ groups
dataset: a matrix or data frame
例子:
R
# R program to illustrate
# Fligner-Killeen test
# Import required package
library(stats)
# Using fligner.test()
result = fligner.test(len ~ supp, data = ToothGrowth)
# print the result
print(result)
输出:
Fligner-Killeen test of homogeneity of variances
data: len by supp
Fligner-Killeen:med chi-squared = 0.97034, df = 1, p-value = 0.3246