#第九章方差分析
#需要的packages:car gplots HH rrcov multicomp effects MASS mvotlier
#单因素方差分析
#数据集来源multcomp包的cholesterol数据集
library(multcomp)
attach(cholesterol)
table(trt)
aggregate(response,by=list(treatment=trt),FUN=mean)
aggregate(response,by=list(treatment=trt),FUN=sd)
fit <- aov(response~trt)
summary(fit)
library(gplots)
gplots::plotmeans(response~trt,xlab = "treatment",ylab="response")
#plotmeans可以绘制带有置信区间的组均值图形

#多重比较 明确两两之间的显著性差异
#方法1
TukeyHSD(fit)
par(las=1)# =2时表示旋转轴标签
par(mar=c(5,8,4,2))
plot(TukeyHSD(fit))#图形中置信区间若包含0,表示差异不显著

#方法2
library(multcomp)
par(mar=c(5,4,6,2))
tuk <- multcomp::glht(fit,linfct = mcp(trt="Tukey"))
plot(cld(tuk,level=0.05),col="lightgrey")#level设置显著水平

#评估检验的假设条件
#正态假设性
library(car)
car::qqPlot(lm(response~trt,data = cholesterol),
            simulate=TRUE,main="QQ plot",labels=FALSE)
#数据均落在置信区间内,满足正态性假设

#方差齐性检验
#方法1 bartlett.test
bartlett.test(response~trt,data = cholesterol)
#p值表明五组数据方差没有显著不同,满足方差齐性

#方法2 fligner.test
fligner.test(response~trt,data = cholesterol)

#方法3 HH::hov

#利群点的检测 方差齐性对离群点非常敏感
library(car)
outlierTest(fit)

#综上 根据QQ图 bartlett检验 离群点检验证明数据可以用ANOVA模型模拟的很好
data(litter,package="multcomp")
attach(litter)
aggregate(weight,by=list(dose),mean)
fit <- aov(weight~gesttime+dose)
summary(fit)
#怀孕时间与幼崽出生体重相关,控制怀孕时间,药物剂量与出生体重相关

#如何去除协变量效应后的组均值
library(effects)
effects::effect("dose",fit)

#单因素协方差分析的多重比较
library(multcomp)
contrast <- rbind("no drug vs.drug"=c(3,-1,-1,-1))
summary(glht(fit,linfct=mcp(dose=contrast)))

#评估检验单因素协方差分析检验的假设条件
#正态性 方差齐性 回归斜率相同
library(multcomp)
fit2 <- aov(weight~gesttime*dose,data = litter)
summary(fit2)
#若交互效应显著 则意味着时间和出生体重间的关系依赖于药物剂量
#结果可视化HH::ancova
library(HH)
HH::ancova(weight~gesttime+dose,data=litter)

#双因素方差分析
attach(ToothGrowth)
table(supp,dose)
aggregate(len,by=list(supp,dose),mean)
aggregate(len,by=list(supp,dose),sd)
dose <- as.factor(dose)
fit <- aov(len~supp*dose)
summary(fit)
#主效应和交互响应都十分显著

#可视化双因素方差分析
#method 1
interaction.plot(dose,supp,len,type = "b",
                 col = c("red","blue"),pch = c(16,18),
                 main = "picture")

#method 2
library(gplots)
plotmeans(len~interaction(supp,dose,sep = " "),
          connect=list(c(1,3,5),c(2,4,6)),#设置线条连接方式
          col = c("red","blue"),
          main = "picture 2",
          xlab = "Treatment and dose combination")

#method 3
library(HH)
interaction2wt(len~supp*dose)
aggregate(len,by=list(supp),quantile) #左下角图
aggregate(len,by=list(dose),quantile) #有上角图

#重复测量方差分析及其可视化
#使用数据为基础安装包中的CO2数据集
CO2
str(CO2)
#关注寒带植物 因变量是CO2吸收量 自变量是植物类型(组间因子) 和 CO2浓度(组内因子)
attach(CO2)
conc <- as.factor(conc)
w1b1 <- subset(CO2,Treatment=="chilled")
fit <- aov(uptake~conc*Type+Error(Plant/(conc)))
summary(fit)

#可视化 1
par(las=2)
par(mar=c(10,4,4,2))
with(w1b1,interaction.plot(conc,Type,uptake,
                           type = 'b',col = c("red","blue"),pch = c(16,18),
                           main = "picture 3"))
#可视化 2
boxplot(uptake~Type*conc,data = w1b1,col=c("red","gold"))

#多元方差分析
#使用MASS包中的UScereal数据集
#卡路里 脂肪和糖含量是因变量;货架三水平是自变量
library(MASS)
attach(UScereal)
shelf <- as.factor(shelf)
y <- cbind(calories,fat,sugars)
aggregate(y,by=list(shelf=shelf),FUN=mean)
aggregate(y,by=list(shelf=shelf),FUN=sd)
cov(y)#方差和协变量
fit <- manova(y~shelf)
summary(fit) #是否存在显著差异
summary.aov(fit) #哪些因变量存在显著差异

#评估假设检验
#检验多元正态性
#方法1 QQ图
center <- colMeans(y)
n <- nrow(y)
p <- ncol(y)
cov <- cov(y)
d <- mahalanobis(y,center,cov)
coord <- qqplot(qchisq(ppoints(n),df=p),d)
abline(a=0,b=1)
identify(coord$x,coord$y,labels = row.names(UScereal))
#如果全部点落在斜率为1,截距为0的直线上,表明数据服从多元正态分布
#从图中可以发现,右上角两个点异常,违反了多元正态分布,可以删除这两个点再重新分析

#方法 2 box's M检验
#Box's M 检验验证方差-协方差矩阵同质性(即各组的协方差矩阵相同)
#p 值大于 0.05 即说明各组的协方差矩阵相同
merge <- cbind(shelf,y)
dim(y)
dim(merge)
head(merge)
merge <- as.data.frame(merge)
merge$shelf <- as.factor(merge$shelf)
library(biotools)
boxM(merge[ ,c("calories","fat","sugars")], merge[ ,"shelf"])
#p值小于0.05 各组的协方差矩阵不相同 不符合多元正态性

#方法3 mvoutlier::ap.plot函数检验多元离群点
library(mvoutlier)
outliers <- aq.plot(y)
outliers

#如果多元正态性或方差-协方差均值假设均不满足,可使用稳健单因素 MANOVA检验
#通过 rrcov 包中的 Wilks.test() 函数实现,详情可使用 ?Wilks.test 查看帮助
library(rrcov)
Wilks.test(y,shelf, method = "mcd")
#稳健检验对离群点和违反MANOVA假设的情况不敏感,并再次验证了自变量对3个因变量显著差异

#用回归做ANOVA(模糊 再理解一下)
#用单因素ANOVA为例
library(multcomp)
levels(cholesterol$trt)
fit.aov <- aov(response~trt,data = cholesterol)
summary(fit.aov)
#回归方法
fit.lm <- lm(response~trt,data = cholesterol)
summary(fit.lm)

R语言实战-第九章 R in action-chapter9相关推荐

  1. R语言实战前四章学习小结-支付宝账单的简单作图

    学习了R语言的前四章后,决定做个小项目练练手,翻了下知乎,发现有人用自己的支付宝账单做过相关的简单分析,所以我也打算用这个练练手 首先从支付宝首页下载了2017年1月到6月的支付宝账单,对其中的付款时 ...

  2. R语言实战应用-基于R语言的对应分析

    一.基本概念和原理 对应分析(Correspondence Analysis)是在因子分析的基础上发展起来的,对应分析是多变量统计分析中有用的分析方法.对应分析把R型和Q型因子统一起来,通过R型因子分 ...

  3. R语言实战-第八章 R in action-chapter8

    #第八章 回归 #简单线性回归 #用到基础包中的women数据集,研究身高与体重的关系 head(women) fit <- lm(weight~height,data=women) summa ...

  4. R语言实战笔记--第九章 方差分析

    R语言实战笔记–第九章 方差分析 标签(空格分隔): R语言 方差分析 术语 组间因子,组内因子,水平:组间因子和组同因子的区别是,组间因子对所有测试对象进行分组,而组内因子则把所有测试对象归为同一组 ...

  5. R语言实战笔记--第十五章 处理缺失数据

    R语言实战笔记–第十五章 处理缺失数据 标签(空格分隔): R语言 处理缺失数据 VIM mice 缺失值(NA),是导致我们计算错误的一大来源,处理缺失数据在实际的应用中有着较为重要的作用. 基本方 ...

  6. R语言实战笔记--第十二章 重抽样(置换检验)与自助法

    R语言实战笔记–第十二章 重抽样(置换检验)与自助法 标签(空格分隔): R语言 重抽样 自助法 置换检验 置换检验 双样本均值检验的时候,假设检验的方法就是,检查正态性.独立性.方差齐性,分别对应的 ...

  7. R语言实战-读书笔记(第1 章 R语言介绍)

    *R语言实战所有学习笔记,如涉及侵权,请联系撤稿.* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍     1.2 R的获取与安装         R可以在CRAN(Comprehe ...

  8. R语言实战笔记--第十四章 主成分和因子分析

    R语言实战笔记–第十四章 主成分和因子分析 标签(空格分隔): R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近,其目的均是为了降维,以更简洁的数据去解释结果,但这两种方法其实是相 ...

  9. R语言mad(c(1 2 3 4)),R语言--数据管理-R语言实战笔记-第四五章

    第四.第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的数据样本,对的,"合适",做到合适可不是一个简单的事情 ...

最新文章

  1. java 故障排查_目前最全的 Java 服务问题排查套路
  2. 你有什么相见恨晚的知识想推荐给年轻人?
  3. 实战:Redis 集群模式(下)
  4. LeNet-5——CNN经典网络模型详解(pytorch实现)
  5. 从0到1构建支撑企业自动化运维体系
  6. 如何用虚拟机安装服务器系统教程,手把手教你虚拟机如何安装系统
  7. 27_多易教育之《yiee数据运营系统》数据治理-atlas部署使用篇
  8. 如何使用NFC读卡器读取NFC卡片的UID?
  9. 蓝牙诊断工具_蓝牙故障诊断和使用指南
  10. 大数据行业现在工作好不好找?很难吗?
  11. 从零学习算法竞赛3:aabb问题
  12. 磁盘压缩卷只能压缩一半
  13. ISP算法----AWB总结及源代码
  14. 如何实现复制文本到剪贴板?
  15. 用自己电脑搭建外网可访问的服务器
  16. Java中instanceof关键字的用法
  17. Premiere Pro 快捷键大全(2023版)
  18. casella pdf 统计推断_统计推断_PDF图书下载_George Casella,Roger L. Berger_免费PDF电子书下载_第一图书网...
  19. int argc,char*argv[ ]的简洁解释
  20. 【pytorch系列】ResNet中的BasicBlock与bottleneck

热门文章

  1. 外文翻译原文附在后面_外文翻译原文及配套译文
  2. IntelliJ Idea列操作高效解决批量操作(生成枚举类实例)
  3. 一顿饭吃一两斤肉和一顿饭吃几百斤肉
  4. 11.0_[Java 继承]-继承/重写/抽象类/抽象方法/ final 修饰符
  5. 基于模拟退火(SA)的车辆路径问题(VRP)(Matlab代码实现)
  6. 根据快递单号,生成快递单号
  7. PP实施经验分享(5)——SAP中MD04显示常用函数(读取SAP MRP运行数据)
  8. Vue路由守卫(导航守卫)及使用场景
  9. Linux 网卡配置文件设置
  10. C#-串口-模拟量采集软件-1