R 编程中的 Bartlett 测试
在统计学中,巴特利特检验用于检验k个样本是否来自方差相等的总体。总体上的相等方差称为方差同质性或同质性。一些统计检验(例如ANOVA 检验)假设组或样本之间的方差相等。 Bartlett 检验可用于验证该假设。巴特利特的测试使 我们比较两个或多个样本的方差,以确定它们是否来自方差相等的总体。它适合正态分布的数据。 有几种解决方案可以测试组间方差的相等性(同质性),包括:
- F检验
- 巴特利特试验
- 列文的测试
- Fligner-Killeen 测试
在 R 编程中执行这些测试非常容易。在本文中,让我们在 R 中执行Bartlett 检验。
Bartlett 检验的统计假设
一个假设 是 一种 关于给定问题的陈述。假设检验是一种统计方法,用于使用实验数据做出统计决策。假设检验基本上是我们对总体参数所做的假设。它评估关于总体的两个相互排斥的陈述,以确定样本数据最能支持哪个陈述。要了解有关统计假设的更多信息,请参阅了解假设检验。对于 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
Returns:
statistic: Bartlett’s K-squared test statistic
parameter: the degrees of freedom of the approximate chi-squared distribution of the test statistic.
p.value: the p-value of the test
根据数据的格式,可能会出现两种情况。我们必须对这两种不同格式的数据应用不同的公式。
如果数据采用堆叠形式:数据采用堆叠形式意味着两个样本的值都存储在一个变量中,因此在这种情况下,请使用以下命令:
bartlett.test(values ~ groups, dataset)
where:
values: the name of the variable containing the data values
groups: the name of the variable that specifies which sample each value belongs too
如果数据是非堆叠形式:数据是非堆叠形式意味着样本存储在一个单独的变量中,因此在这种情况下,将变量名称嵌套在list()函数中,如下所示:
bartlett.test(list(dataset$sample1, dataset$sample2, dataset$sample3))
Bartlett 检验的示例
具有一个自变量的 Bartlett 检验:
考虑 R 的内置PlantGrowth数据集,该数据集给出了三组十批次植物的干重,其中每十批次的每组都进行了不同的处理。权重变量给出批次的权重,组变量给出收到的处理ctrl、trt1 或 trt2 。要查看数据集,请键入以下命令:
R
print(PlantGrowth)
R
# R program to illustrate
# Bartlett’s test
# Using bartlett.test()
result = bartlett.test(weight~group, PlantGrowth)
# print the result
print(result)
R
# R program to illustrate
# Bartlett’s test
# Print the first 10 rows
# of the data set
print(head(ToothGrowth, 10))
# Applying bartlett.test()
result = bartlett.test(len ~ interaction(supp, dose),
data = ToothGrowth)
# Print the result
print(result)
输出:
weight group
1 4.17 ctrl
2 5.58 ctrl
3 5.18 ctrl
4 6.11 ctrl
5 4.50 ctrl
6 4.61 ctrl
7 5.17 ctrl
8 4.53 ctrl
9 5.33 ctrl
10 5.14 ctrl
11 4.81 trt1
12 4.17 trt1
13 4.41 trt1
14 3.59 trt1
15 5.87 trt1
16 3.83 trt1
17 6.03 trt1
18 4.89 trt1
19 4.32 trt1
20 4.69 trt1
21 6.31 trt2
22 5.12 trt2
23 5.54 trt2
24 5.50 trt2
25 5.37 trt2
26 5.29 trt2
27 4.92 trt2
28 6.15 trt2
29 5.80 trt2
30 5.26 trt2
假设想要使用 Bartlett 检验来确定所有治疗组的体重方差是否相同,显着性水平为 0.05。这里我们只考虑一个自变量。要执行测试,请使用以下命令:
R
# R program to illustrate
# Bartlett’s test
# Using bartlett.test()
result = bartlett.test(weight~group, PlantGrowth)
# print the result
print(result)
输出:
Bartlett test of homogeneity of variances
data: weight by group
Bartlett's K-squared = 2.8786, df = 2, p-value = 0.2371
解释:
从输出中可以看出,0.2371的p值不小于0.05的显着性水平。这意味着不能拒绝所有治疗组的方差相同的零假设。这得出结论,没有证据表明三个处理组的植物生长差异是不同的。
具有多个自变量的 Bartlett 检验:
如果一个人想与多个独立的人一起做测试 变量,则必须函数交互()函数将多个因子折叠为包含所有因子组合的单个变量。这里让我们以 R 的内置ToothGrowth数据集为例。
R
# R program to illustrate
# Bartlett’s test
# Print the first 10 rows
# of the data set
print(head(ToothGrowth, 10))
# Applying bartlett.test()
result = bartlett.test(len ~ interaction(supp, dose),
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
Bartlett test of homogeneity of variances
data: len by interaction(supp, dose)
Bartlett's K-squared = 6.9273, df = 5, p-value = 0.2261