查看原文
其他

R笔记:方差齐性检验

vacleon 统计浆糊 2023-09-26

正如我们在<<正态分布与方差齐性的检验方法与SPSS操作>>一文中的介绍,方差齐性检验有F检验、Bartlett χ2检验、Levene检验、残差图。F检验和Bartlett χ2检验要求数据资料具有正态性,而且F检验只能检验两个总体方差是否齐同,Levence检验所分析资料可不具正态性,结果更为稳健也可以检验多个总体的方差齐性。示例依旧采用<<完全随机资料设计的方差分析>>的数据,演示方差齐性检验的Levene检验和Bartlett χ2以及F检验。

从SPSS中载入数据:在正态性检验时我们的数据导入采用的是采用函数spss.get{Hmisc},本次我们使用read.spss{foreign}read.spss(file, use.value.labels = TRUE, to.data.frame = FALSE,max.value.labels = Inf, trim.factor.names = FALSE,trim_values = TRUE, reencode = NA, use.missings = to.data.frame,          sub = ".", add.undeclared.levels = c("sort", "append", "no"),duplicated.value.labels = c("append", "condense"),duplicated.value.labels.infix = "_duplicated_", ...)。

SPSS数据载入清单:

library(foreign)  #载入foreign程序包

varh<-read.spss(file="D:/Temp/ANOVA.sav",to.data.frame = TRUE)  #新建对象varh,赋值为SPSS文件ANOVA的数据。命令中去掉“file=”结果是一样的

【1】levene检验。leveneTest {car}:leveneTest(y, data, ...)

leveneTest(y, group, center=median, ...),Computes Levene's test for homogeneity of variance across groups.

library(car)  #调用程序包car

library(carData)  #载入程序包carData

leveneTest(LDL_C~Group,data=varh)  #levene方差齐性检验,模型表达形式,默认以中位值进行检测

leveneTest(varh$LDL_C,varh$Group,center=mean)  #leven方差齐性检验,变量表达形式,以均值进行检测

结果如下:不论是中位值还是均值,P值均>0.05,各组方差齐同。

【2】Bartlett χ2检验。

bartlett.test {stats}:bartlett.test(x,g,...)或者bartlett.test(formula,data, subset,na.action,...),Performs Bartlett's test of the null that the variances in each of the groups (samples) are the same.

ols_test_bartlett {olsrr}:ols_test_bartlett(data, ..., group_var = NULL)

,Test if k samples are from populations with equal variances.

bartlett.test {stats}的命令用法跟leveneTest {car}基本一样,有模型表达格式和变量表达格式,命令清单如下:

library(stats)

bartlett.test(varh$LDL_C,varh$Group)

bartlett.test(LDL_C~Group,data=varh)

ols_test_bartlett {olsrr}命令清单:
library(olsrr)

ols_test_bartlett(varh,LDL_C,group_var=Group) 

olsrr程序包中除了bartlett.test 可以进行方差齐性的检验,程序包中的ols_test_f 、ols_test_breusch_pagan、ols_test_score函数也可以进行方差齐性的检验。

【3】F检

var.test {stats}:var.test(x, y, ratio = 1,alternative = c("two.sided", "less", "greater"),         conf.level = 0.95, ...)或者var.test(formula, data, subset, na.action, ...),Performs an F test to compare the variances of two samples from normal populations.

F检验只能检测2个总体间的方差齐性,本例假设使用演示示例中的Placebo和NG2.4g两个组作为新的演示示例。
library(stats)  #调用foreign程序包

var.test(varh[1:30,2],varh[31:60,2])  #使用var.test函数进行方差齐性的F检验。F检验只能检测两个总体间的方差齐性,本例假设结果只有placebo组(数据1:30行)和NG2.4g组(数据31:60行)两组

var.test的另外一种格式是:

varh2<-varh[1:60,]  #新建对象varh2,赋值为数据框varh的前60行。此命令仅生成含有2个组的演示数据,因为F检验只能检测两个总体间的方差齐性

var.test(LDL_C~Group,data=varh2)  #使用var.test函数进行方差齐性的F检验

END


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存