R语言实战(五)方差分析与功效分析

本文对应《R语言实战》第9章:方差分析;第10章:功效分析

====================================================================

方差分析:

回归分析是通过量化的预测变量来预测量化的响应变量,而解释变量里含有名义型或有序型因子变量时,我们关注的重点通常会从预测转向组别差异的分析,这种分析方法就是方差分析(ANOVA)。因变量不只一个时,称为多元方差分析(MANOVA)。有协变量时,称为协方差分析(ANCOVA)或多元协方差分析(MANCOVA)。

#基本格式
aov(formula, data = dataframe)

  

基本表达式符号参考回归中的表格

研究设计的表达式

下表中,小写字母表示定量变量,大写字母表示组别因子,Subject是对被试者独有的标识变量


设计


表达式


单因素ANOVA


y ~ A


含单个协变量的单因素ANCOVA


y ~ x + A


双因素ANOVA


y ~ A * B


含两个协变量的ANCOVA


y ~ x1 + x2 + A*B


随机化区组


y ~ B + A (B是区组因子)


单因素组内ANOVA


y ~ A + Error(Subject/A)


含单个组内因子(W)和单个组间因子(B)的重复测量ANOVA


y ~ B * W + Error(Subject/W)

表达式中的各项顺序:

有两种情况会造成影响:(1)因子不止一个,并且是非平衡设计;(2)存在协变量。出现任意一种情况时,等式右边的变量都与其他每个变量相关,此时我们无法清晰地划分它们对因变量的影响。

例如,对于双因素方差分析,若不同处理方式中的观测数不同,那么模型y ~ A * B与模型y ~ B * A的结果不同

R默认类型1(序贯型)方法计算ANOVA效应。第一个模型可以这样写:y ~ A + B + A : B

R中的ANOVA表的结果将评价:

  1. A对y的影响
  2. 控制A时,B对y的影响
  3. 控制A和B的主效应时,A与B的交互效应

顺序很重要


当自变量与其他自变量或者协变量相关时,没有明确的方法可以评价自变量对因变量的贡献。例如,含因子A、B和因变量y的双因素不平衡因子设计,有三种效应:A和B的主效应,A和B的交互效应。假设你正使用如下表达式对数据进行建模:

Y ~ A + B + A : B

有三种类型的方法可以分解等式右边各效应对y所解释的方差。

类型1(序贯型)

效应根据表达式中先出现的效应进行调整。A不做调整,B根据A调整,A:B交互项根据A和B调整。

类型2(分层型)

效应根据同水平或低水平的效应做调整。A根据B调整,B依据A调整,A:B交互项同时根据A和B调整

类型3(边界型)

每个效应根据模型其他各效应做相应调整。A根据B和A:B做调整,A:B交互项根据A和B调整。

R默认调用类型1方法,其他软件(比如SAS或SPSS)默认调用类型3方法。

样本大小越不平衡,效应项的顺序对结果的影响越大。一般来说,越基础性的效应越需要放在表达式前面。

具体来讲,首先是协变量,然后是主效应,接着是双因素的交互项,再接着是三因素的交互项,以此类推。

对于主效应,越基础性的变量越应放在表达式前面,比如性别要放在处理方式之前。有一个基本准则:若研究设计不是正交的(即因子与协变量相关),一定要谨慎设置效应的顺序。

需要注意的是,car包中的Anova()函数提供了类型2和类型3方法的选项,而aov()函数使用的是类型1方法。若想使结果与其他软件提供的结果保持一致,可以使用Anova()函数。

单因素方差分析:

多重比较:

#各组均值差异的成对检验
TukeyHSD(fit)

#glht()函数提供了更为全面的方法,适用于线性模型和广义线性模型
library(multcomp)
tuk <- glht(fit, linfct = mcp(trt = “Tukey”))
plot(cld(tuk, level = 0.05), col = “lightgrey”)

  

评估检验的假设条件:

单因素方差分析的假设条件:因变量服从正态分布;各组方差相等。

#Q-Q图检验正态性假设
library(car)
qqPlot(lm(response ~ trt, data = cholesterol), simulate = TRUE, labels = FALSE)
#数据落在95%置信区间范围内,说明满足正态性假设

#方差齐性检验(Bartlett检验)
bartlett.test(response ~ trt, data = cholesterol)
#p大于0.05说明没有显著不同

#方差齐性分析对离群点非常敏感,需要补做一次离群点的检测
library(car)
outlierTest(fit)
#若没有离群点,说明上述结果较为可信

  

单因素协方差分析:

#单因素ANCOVA
data(litter, package = “multcomp”)
attach(litter)
table(dose)
aggregate(weight, by = list(dose), FUN = mean)
fit <- aov(weight ~ gesttime + dose)
summary(fit)

#获取调整的组均值(即去除协变量效应后的组均值)
library(effects)
effect(“dose”, fit)

  

评估检验的假设条件:

单因素协方差分析的假设条件:正态性、同方差性。

与单因素方差分析的假设条件判断相同。

结果可视化:

library(HH)
ancova(weight ~ gesttime + dose, data = litter)

  

双因素方差分析:

#table()函数观察是否是均衡设计
attach(ToothGrowth)
table(supp, dose)
aggregate(len, by = list(supp, dose), FUN = mean)
aggregate(len, by = list(supp, dose), FUN = sd)
fit <- aov(len ~ supp*dose)
summary(fit)

#可视化处理
interaction.plot(dose, supp, len, type = “b”,
col = c(“red”, “blue”), pch = c(16, 18),
main = “Interaction between Dose and Supplement Type”)
#或者是
library(gplots)
plotmeans(len ~ interaction(supp, dose, sep = “ ”),
connect = list(c(1, 3, 5), c(2, 4, 6)),
col = c(“red”, “darkgreen”),
main = “Interaction Plot with 95% CIs”,
xlab = “Treatment and Dose Combination”)
#也可以(推荐)
library(HH)
interaction2wt(len ~ supp * dose)

  

重复测量方差分析:受试者被测量不止一次,重点关注含一个组内和一个组间因子的重复测量方差分析。

混合模型设计概述:

由于传统的重复测量方差分析假设任意组内因子的协方差矩阵为球形,并且任意组内因子两水平间的方差之差都相等。但在现实中这种假设不可能满足,于是衍生了一系列备选方法:

使用lme4包中的lmer()函数拟合线性混合模型;

使用car包中的Anova()函数调整传统检验统计量以弥补球形假设的不满足(例如Geisser-Greenhouse校正);

使用nlme包中的gls()函数拟合给定方差-协方差结构的广义最小二乘模型;

用多元方差分析对重复测量数据进行建模。

多元方差分析:

当因变量(结果变量)不止一个时,可用多元方差分析(MANOVA)对它们同时进行分析。

评估假设检验:单因素多元方差分析的假设前提,一个是多元正态性,一个是方差-协方差矩阵同质性。

多元正态性假设即指因变量组合成的向量服从一个多元正态分布,可以用Q-Q图来检验该假设条件。方差-协方差矩阵同质性即指各组的协方差矩阵相同,通常可用Box’s M检验来评估该假设。

最后可使用mvoutlier包中的aq.plot()函数来检验多元离群点。

library(mvoutlier)
outliers <- aq.plot(y)
ouliers

  

稳健多元方差分析:

如果多元正态性或者方差-协方差均值假设都不满足,又或者担心多元离群点,那么可以考虑用稳健或非参数版本的MANOVA检验。

稳健单因素MANOVA可通过rrcov包中的Wilks.test()函数实现。vegan包中的adonis()函数则提供了非参数MANOVA的等同形式。

#Wilks.test()函数应用示例
library(rrcov)
Wilks.test(y, shelf, method = “mcd”)

  

用回归做ANOVA:

事实上,ANOVA和回归都是广义线性模型的特例。因此可以用lm()函数来分析。

这部分看不大懂,以后再回头看吧。

=========================================================================

功效分析:

功效分析可以帮助在给定置信度的情况下,判断检测到给定效应值时所需的样本量。反过来,它也可以帮助你在给定置信度水平情况下,计算在某样本量内能检测到给定效应值的概率。如果概率低得难以接受,修改或者放弃这个实验将是一个明智的选择。

本章中将学习如何对多种统计检验进行功效分析,包括比例检验、t检验、卡方检验、平衡的单因素ANOVA、相关性分析,以及线性模型分析。由于功效分析针对的是假设检验,我们将首先简单回顾零假设显著性检验(NHST)过程,然后学习如何用R进行功效分析,主要关注于pwr包。

假设检验回顾:

首先对总体分布参数作零假设H0, 从总体分布中抽样,通过样本计算统计量对总体参数进行推断。假定H0为真,如果计算获得的观测样本的统计量的概率非常小,便可以拒绝原假设,接受备择假设H1。

Ⅰ型错误:H0为真却拒绝H0

Ⅱ型错误:H0为假却不拒绝H0

研究过程中,研究者通常关注四个量:

样本大小:实验设计中每种条件/组中观测的数目

显著性水平(即alpha,也就是概率p的阈值):Ⅰ型错误的概率

功效:(1-P(Ⅱ型错误))可以看作是真是效应发生的概率

效应值:指的是在备择或研究假设下效应的量。效应值的表达式依赖于假设检验中使用的统计方法

这四个量紧密相关,给定其中任意三个量,便可推算第四个量。本章就是利用这一点进行各种各样的功效分析。

pwr包中的函数


函数


功效计算的对象


pwr.2p.test()


两比例(n相等)


pwr.2p2n.test()


两比例(n不相等)


pwr.anova.test()


平衡的单因素ANOVA


pwr.chisq.test()


卡方检验


pwr.f2.test()


广义线性模型


pwr.p.test()


比例(单样本)


pwr.r.test()


相关系数


pwr.t.test()


t检验(单样本、两样本、配对)


pwr.t2n.test()


t检验(n不相等的两样本)

t检验

pwr.t.test(n = , d = , sig.level = , power = , alternative = )

  

n为样本大小

sig.level表示显著性水平,默认0.05

power为功效水平

type指检验类型:双样本t检验(two.sample)、单样本检验(one.sample)或相依样本t检验(paired)默认为双样本t检验。

alternative指统计检验是双侧检验(two.sided)还是单侧检验(less或greater)。默认双侧

方差分析

pwr.anova.test(k = , n = , f = , sig.level = , power = )

相关性

pwr.r.test(n = , r = , sig.level = , power = , alternative = )

  

其中,n是观测数目,r是效应值(通过线性相关系数衡量),sig.level是显著性水平,power是功效水平,alternative指定显著性检验是双边检验(two.sided)还是单边检验(less或greater)

线性模型

pwr.f2.test(u = , v = , f2 = , sig.level = , power = )

  

当要评价一组预测变量对结果的影响程度时,适宜用第一个公式计算f2;当要评价一组预测变量对结果的影响超过第二组变量(协变量)多少时,适宜用第二个公式。

比例检验

pwr.2p.test(h = , n = , sig.level = , power = )

  

其中,h是效应值,n是各组相同的样本量。效应值h定义如下:

可用ES.h(p1, p2)函数进行计算

当各组n不相同时:

pwr.2p2n.test(h = , n1 = , n2 = , sig.level = , power = )

同样,alternative可以设定单边检验或双边检验(默认)

卡方检验

卡方检验常常用来评价两个类别型变量的关系:典型的零假设是变量之间独立,备择假设是不独立。

pwr.chisq.test(w = , N = , df = , sig.level = , power = )

其中,w是效应值,N是总样本大小,df是自由度。

此处从1到m进行求和,连加号上的m指的是列联表中单元格的数目。函数ES.w2(P)可以计算双因素列联表中备择假设的效应值,P是一个假设的双因素概率表。

新情况中选择合适的效应值:

功效分析中,预期效应值是最难决定的参数。通常需要你对主题有一定的了解,并有相应的测量经验。当没有经验时,可以用一个基准进行参考,该基准由Cohen(1988)提出,可为各种统计检验划分小、中、大三种效应值:


统计方法


效应测量值


建议的效应值基准





t检验


d


0.20


0.50


0.80


方差分析


f


0.10


0.25


0.40


线性模型


f2


0.02


0.15


0.35


比例检验


h


0.20


0.50


0.80


卡方检验


w


0.10


0.30


0.50

但是要注意,这个参考仅仅是参考,是一般性建议,特殊的研究领域内可能不适用。

绘制功效分析图形:使用for循环将样本量与相关系数之间的关系可视化出来,用图来判断需要的样本量。

其他专业化的功效分析软件包:


软件包


目的


asypow


通过渐进似然比方法计算功效


PwrGSD


组序列设计的功效分析


pamm


混合模型中随机效应的功效分析


powerSurvEpi


流行病研究的生存分析中功效和样本量的计算


powerpkg


患病同胞配对法和TDT(Transmission Disequilibrium Test, 传送不均衡检验)设计的功效分析


powerGWASinteraction


GWAS交互作用的功效计算


pedantics


一些有助于种群基因研究功效分析的函数


gap


一些病例队列研究设计中计算功效和样本量的函数


ssize.fdr


微阵列实验中样本量的计算

时间: 2024-10-01 09:01:22

R语言实战(五)方差分析与功效分析的相关文章

《R语言实战》学习笔记seventh

由于在准备软考中级数据库系统工程师外加巩固SQL Server 2012,所以拖了好久一直没继续学R 下去 所以今天重开R 的战事 这次是关于基本统计分析的内容,即关于用于生成基本的描述性统计量和推断统计量的R 函数 首先,将着眼于定量变量的位置和尺度的衡量方式 然后将是生成类别型变量的频数表和列联表的方法(以及连带的卡方检验) 接下来将考察连续型和有序型变量相关系数的多种形式 最后转而通过参数检验(t检验)和非参数检验(Mann-Whitney U检验.Kruskal-Wallis检验)方法研

《R语言实战》(中文完整版)pdf

下载地址:网盘下载 基本介绍 编辑 原作名: R in Action[2] 作者: Robert I. Kabacoff 译者: 高涛 / 肖楠 / 陈钢 出版社: 人民邮电出版社 出版年: 2013-1 页数: 388 定价: 79.00元 装帧: 平装 ISBN: 978-711-529-990-1 内容简介 编辑 数据时代已经到来,但数据分析.数据挖掘人才却十分短缺.由于"大数据"对每个领域的决定性影响,相对于经验和直觉,在商业.经济及其他领域中基于数据和分析去发现问题并作出科学

R语言实战(八)广义线性模型

本文对应<R语言实战>第13章:广义线性模型 广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析. 两种流行模型:Logistic回归(因变量为类别型)和泊松回归(因变量为计数型) glm()函数的参数 分布族 默认的连接函数 binomial (link = "logit") gaussian (link = "identity") gamma (link = "inverse") inverse.gaussian (lin

《数据挖掘:R语言实战》

<数据挖掘:R语言实战> 基本信息 作者: 黄文    王正林 丛书名: 大数据时代的R语言 出版社:电子工业出版社 ISBN:9787121231223 上架时间:2014-6-6 出版日期:2014 年6月 开本:16开 页码:292 版次:1-1 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计 更多关于>>><数据挖掘:R语言实战> 内容简介 书籍 计算机书籍 数据挖掘技术是当下大数据时代最关键的技术,其应用领域及前景

《R语言实战》学习笔记fourth

又拖了好久继续写R 语言的学习笔记了啊 这次到了基本数据管理了,众所周知数据准备是数据分析的最重要的前提 书本是从一个例子开始本章的内容的,例子是一个类似调查问卷的 然后把回答标为从1到5,再进行分析(这让我想到了自学SPSS 的时候啊) > manager <- c(1, 2, 3, 4, 5) > date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08&q

《数据挖掘R语言实战》图书介绍,数据挖掘相关人员看过来!

今天介绍一本书<数据挖掘R语言实战>.数据挖掘技术是当下大数据时代最关键的技术,其应用领域及前景不可估量.R是一款极其优秀的统计分析和数据挖掘软件,R语言的特点是入门容易,使用简单. 这本书侧重使用R进行数据挖掘,重点进述了R的数据挖掘流程.算法包的使用及相关工具的应用,同时结合大量精选的数据挖掘实例对R软件进行深入潜出和全面的介绍,以便读者能深刻理解R的精髓并能快速.高效和灵活地掌握使用R进行数据挖掘的技巧. 本书以数据预处理.基本算法及应用和高级算法及应用这三篇展示. (1)上篇:数据预处

下载零基础数据分析与挖掘R语言实战课程(R语言)

随着大数据在各行业的落地生根和蓬勃发展,能从数据中挖金子的数据分析人员越来越宝贝,于是很多的程序员都想转行到数据分析,挖掘技术哪家强?当然是R语言了,R语言的火热程度,从TIOBE上编程语言排名情况可见一斑.于是善于学习的程序员们开始了R语言的学习之旅.对于有其他语言背景的程序员来说,学习R的语法小菜一碟,因为它的语法的确太简单了,甚至有的同学说1周就能掌握R语言,的确如此.但是之后呢?……好像进行不下去了!死记硬背记住了两个分析模型却不明其意,输出结果如同天书不会解读,各种参数全部使用缺省值,

R入门&lt;三&gt;-R语言实战第4章基本数据管理摘要

入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好,相应的导入导出均较为方便(read.table, write等) reshape:目前用到rename函数,可以方便的对数据变量重命名 fCalendar:在日期输入处提及,据说对日期运算有奇效,但无具体示例.同理如lubridate sqldf:在数据选取处提及,可代替subset以及各种whe

R语言实战(四)回归

本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来挑选与相应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量. 回归分析的各种变体 回归类型 用途 简单线性 用一个量化的解释变量预测一个量化的响应变量 多项式 用一个量化的解释变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性 用两个或多个量化的解释变量预测一个