前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言_方差分析

R语言_方差分析

作者头像
用户1147754
发布2019-05-26 21:39:07
1.4K0
发布2019-05-26 21:39:07
举报
文章被收录于专栏:YoungGyYoungGy

方差分析与回归分析

在回归分析中,通过量化的预测变量来预测量化的响应变量,建立了相应的回归模型。 同时,预测变量也不一定是量化的,还可以是名义型或者有序型变量。这种情况下,关注的重点通常在组间的差异性分析,称为方差分析(ANOVA)。

术语

单因素组间方差分析

这里写图片描述
这里写图片描述

这里,观测数相同,称为均衡设计,若不同称为非均衡设计。 方差显著性通过F检定来检定。

单因素组内方差分析

这里写图片描述
这里写图片描述

单因素组内方差分析,又叫做重复测量方差分析。

含组间和组内因子的双因素方差分析

这里写图片描述
这里写图片描述

含有疗法和时间两个因子时,既可以分析疗法的影响(时间跨度上的平均),也可以分析时间的影响(疗法类型跨度上的平均),还可以分析疗法与时间的交互影响。 前两个称之为主效应,后两个称之为交互效应

当设计包含两个或者更多因子时,便是因素方差设计,比如两因子时称作双因素方差分析,三因子时称为三因素方差分析。若因子设计中包含组内和组件因子,又称为混合模型方差分析。 上图例子为典型的双因素混合模型方差分析

本例中,需要做三次F检定。主效应两次,交互效应一次。 若疗法效果显著,说明CBT和EMDR对焦虑症的治疗效果不同。 若时间结果显著,说明焦虑度从五周到六个月发生了变化。 若两者交互效应显著,说明:(1)焦虑症从周五到周六的改变程度在两种疗法中是不同的。(2)焦虑症在CBT和EMDR中得效果程度在时间跨度上是不同的。

协方差分析

上面分析了疗法和时间两个因素对焦虑症的影响,属于双因素混合模型方差分析。

有一个问题需要考虑:治疗后的差异可能是由于治疗前情况的差异产生。即:抑郁症对病症有影响,且抑郁症和焦虑症经常同时出现。 抑郁症也可以解释因变量的组件差异,因此被称为混淆变量(confounding factor)。如果对抑郁症不感兴趣,被称为干扰变数(nuisance variable)

如果事先知道患者的抑郁症水平(BDI),那么就可以在评测疗法类型的影响前,对任何抑郁水平的组间差异进行调整。 本案例中,BDI为协变量,该设计分析为协方差分析(ANCOVA)。

多元方差分析

以上,因变量只有一个(STAI),为增强结果的有效性,可以对焦虑症进行其他测量(家庭评分,医生评分,对日常行为的影响评价)。 当因变量不只有一个,设计被称为多元方差分析(MANOVA)

多元协方差分析

多元方差分析中,如果协变量也存在,就叫做多元协方差分析

总结

ANOVA 方差分析 ANCOVA 协方差分析 MANOVA 多元方差分析

ANOVA模型拟合

ANOVA和回归方法,都是广义线性模型的特例。

aov函数

这里写图片描述
这里写图片描述

表达式中各项顺序

这里写图片描述
这里写图片描述

越基础的效应更应该放在前面。 协变量——主效应——双因素的交互项——三因素的交互项。

单因素方差分析

单因素方差分析,感兴趣的是:针对该单因素的不同组别的因变量,均值是否存在显著差异。

一个例子

代码语言:javascript
复制
library(multcomp)
attach(cholesterol)
table(trt)
aggregate(response,by=list(trt),FUN=mean)
aggregate(response,by=list(trt),FUN=sd)
fit = aov(response~trt)
summary(fit)
library(gplots)
plotmeans(response~trt,
          xlab="treatment",ylab="response",
          main = "mean plot\nwith 95% CI")
boxplot(response~trt)

多重比较

上面例子的ANOVA对各个疗法的F检验表明了五种药物疗法效果不同,但并未指出哪种疗法与其他不同。 多重比较可以解决这个问题。

代码语言:javascript
复制
#删除存在兼容性的包HH
detach("package::HH")
TukeyHSD(fit)
opar = par(no.readonly=TRUE)
par(las=2)
par(mar=c(5,8,4,2))
plot(TukeyHSD(fit)) #置信区间包含0说明差异不显著
#另一种多重比较展现
#有相同字母的组说明均值差异不显著
library(multcomp)
par(opar)
par(mar=c(5,4,6,2))
tuk = glht(fit,linfct=mcp(trt="Tukey"))
plot(cld(tuk,level=.05),col="lightgrey")

评估检验的假设条件

统计中,我们对检验结果的信心程度依赖于检验的数据是否满足条件的假设。

单因素方差分析中,假设因变量服从正态分布,各组方差相等。

正态假设

代码语言:javascript
复制
#正态检验
library(car)
qqPlot(lm(response~trt,data=cholesterol),
       simulate=T, main="Q-Q plot",
       labels = F)
#数据落在95%置信区间,说明满足正态假设

方差齐性假设

代码语言:javascript
复制
#方差齐性检验
bartlett.test(response~trt,data=cholesterol)
#方差检验,表明五组方差并没有显著不同

离群点检测

代码语言:javascript
复制
#离群点
#方差齐性分析对离群点非常敏感
library(car)
outlier.test(fit)

单因素协方差分析

一个例子

代码语言:javascript
复制
detach(cholesterol)
#自变量是怀孕小鼠不同剂量的药物处理,因变量是剩下幼崽的体重均值
#协变量是怀孕时间
data(litter,package="multcomp")
attach(litter)
table(dose)
table(gesttime)
aggregate(weight,by=list(dose),mean)
aggregate(weight,by=list(dose,gesttime),mean)
fit = aov(weight~gesttime+dose)
summary(fit)
#ANCOVA表明
#(1)怀孕时间与幼崽的出生体重有关
#(2)控制怀孕时间,药物剂量与幼崽的出生体重有关
#去除协变量效应后的组均值
library(effects)
effect("dose",fit)

多重比较

代码语言:javascript
复制
#用户定义的对照的多重比较
#假设:未用药与其他三种用药影响不同
library(multcomp)
contrast = rbind("no drug vs. drug" = c(3,-1,-1,-1))
class(contrast)
summary(glht(fit,linfct=mcp(dose=contrast)))
#p值小,表明0.05水平下影响不同

评估检验假设条件

ANCOVA和ANOVA一样,都需要正态性还有方差齐性的假设。 此外,ANCOVA还假设回归斜率相同。

在这个问题中,回归斜率相同指的是:四个处理组中,通过怀孕时间预测出生体重的回归斜率相同。 ANCOVA模型包含的怀孕时间*剂量的交互项,可对回归斜率的同质性进行检验。交互效应如果显著,表明时间和幼崽出生体重间的关系依赖于药物剂量的水平。

代码语言:javascript
复制
#检验回归斜率的同质性
library(multcomp)
fit2 = aov(weight~gesttime*dose,data=litter)
summary(fit2)
#可以看到,交互效益不显著,支持了斜率相等的假设。
#如果显著,可以尝试变换协变量与因变量

可视化

HH包中的ancova()可以绘制因变量、协变量、因子之间的关系。

代码语言:javascript
复制
detach("multcomp")
library(HH)
ancova(weight~gesttime+dose,data=litter)

双因素方差分析

代码语言:javascript
复制
#自变量为“喂食方法”*“抗坏血酸含量”
#因变量为牙齿长度
attach(ToothGrowth)
table(supp,dose) #均衡设计,不用担心顺序问题
aggregate(len,by=list(supp,dose),mean)
aggregate(len,by=list(supp,dose),sd)
fit = aov(len~supp*dose)
summary(fit)

#可视化
#(1)
interaction.plot(dose,supp,len,type="b",
                 col=c("red","blue"),pch=c(16,18),
                 main = "interaction between dose and supplement type")
#(2)
library(HH)
interaction2wt(len~supp*dose)

重复测量方差分析

多元方差分析

用回归来做ANOVA

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年08月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方差分析与回归分析
  • 术语
    • 单因素组间方差分析
      • 单因素组内方差分析
        • 含组间和组内因子的双因素方差分析
          • 协方差分析
            • 多元方差分析
              • 多元协方差分析
                • 总结
                • ANOVA模型拟合
                  • aov函数
                    • 表达式中各项顺序
                    • 单因素方差分析
                      • 一个例子
                        • 多重比较
                          • 评估检验的假设条件
                            • 正态假设
                            • 方差齐性假设
                            • 离群点检测
                        • 单因素协方差分析
                          • 一个例子
                            • 多重比较
                              • 评估检验假设条件
                                • 可视化
                                • 双因素方差分析
                                • 重复测量方差分析
                                • 多元方差分析
                                • 用回归来做ANOVA
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档