首页 > 编程 > R > 正文

R语言中进行多重均值检验的方法

2023-04-28 12:24:12
字体:
来源:转载
供稿:网友

本站在《使用R语言进行单因素方差分析》一文中介绍了在R语言中使用aov函数进行方差分析的方法,并给出具体的例子讲解了该函数的使用方法及其正态性检验和方差齐性检验的方法。在实际中,在进行单因素方差分析时,可能检验结果拒绝了零假设,即因素A的r个水平效应具有显著的差异,也就是说r个均值之间有显著区别。但这并不能说明r个均值之间都会存在这个显著差异,只能说明至少2个总体的均值有显著差异。那么,到底是哪些水平之间存在差异呢?我们需要对每两个水平间的均值做一一比较,即多重比较。

同时比较任意两个水平均值间有无明显差异的问题称为多重比较。通常采用多重T检验方法进行多重比较,这种方法本质上就是针对每组数据进行T检验,只不过估计方差时利用的是全体数据,因而自由度变大。具体地说,要比较第i个总体与第j个总体的均值是否相同,即检验:(薛毅,陈立萍.R语言在统计中的应用)

H0: μi = μj,H1:μi ≠ μj,i ≠ j,i,j=1,2,...,r

在R中,使用pairwise.t.test()函数可以帮助我们完成多重T检验,该函数的原型如下:

pairwise.t.test(x, g, p.adjust.method = p.adjust.methods, pool.sd = !paired,
paired = FALSE, alternative = c("two.sided", "less", "greater"), ...)

其中,主要参数的含义如下:

x 是一个向量,代表响应变量(因变量);

g 代表响应向量的因子或向量;

p.adjust.method 调整p值所使用的方法;

paired 逻辑变量,表示是否做成对的t检验,默认为FALSE,此变量和pool.sd不能同时为TRUE;

alternative 字符串,表示备择假设。取值为two.sided(双侧检验),less(单侧小于),greater(单侧大于),默认为two.sided.

下面用一个例子来说明本函数的具体使用方法:

为了减小失业保险支出,促进就业,政府试图为失业者提供再就业奖励:如果失业者可以在限定的时间内重新就业,他将可以获得一定数额的奖金,这个政策是否有效呢?下图给出了不同奖励下再就业的天数。

R语言多重T检验的例子

(本例子来源于网络)

编写程序如下:

#定义数据
x<-c(92,100,85,88,89,90,94,80,78,
86,108,93,88,89,75,78,72,79,
96,92,90,77,79,71,82,75,81,
78,75,76,87,73,83,82,68,72)
A<-factor(rep(1:4,c(9,9,9,9)))

#定义数据框
dat<-data.frame(x,A)

#方差分析
aovResult<-aov(x~A,data=dat)

#提取方差分析表
summary(aovResult)

#多重比较
pairwise.t.test(x,A)

方差分析结果如下图所示:

 多重比表T检验

由上图方差分析的结果来看,p值=0.0433<0.05,则可以认为有充分理由认为水平间的效用是不同的。

那么,不同产生在哪些水平间呢,下面是多重比较的结果:

多重比较的结果

 从上图可以看出1和4之间的p值为0.04,则可以认为有充足的理由认为水平1和水平4之间差异显著,即无奖金组和高奖金组的再就业时间有显著性差异。而其它组之间没有差异。

上图还给出了p值调整所用的方法:holm修正的方法。

因为在多重T检验时,当因素的水平较多,而检验又是同时进行的,则多次重复使用T检验会增大犯第一类错误的概率,得到的“有显著差异”的结论不可靠。为了克服这一缺陷,统计学家提出了多种方法来调整P值,这里使用的是holm调整方法。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表