方差分析(ANOVA)
时间:2022-07-22
本文章向大家介绍方差分析(ANOVA),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
方差分析主要用于多个样本均数比较的假设检验,因为当我们使用t检验进行多组样本间均数的假设检验时,常常会增加一类错误。方差分析的主要思想是分解变异,即将总变异分解为处理因素引起的变异和随机误差引起的变异,通过对两者进行比较做出处理因素有无作用的统计推断。在后续的内容中我将会和大家详细讲解方差分析的统计原理。
在R语言进行方差分析是一件非常方便的事,我们通常只需要进行5步即可完成较高质量的方差分析,这五步主要是拟合模型、诊断性绘图、评估模型效应、多重比较和结果可视化。
这里使用的是R里内置的“npk”数据集,该数据集由24行和5列数据组成,第一列代表区组(共6个),N、P和K分别代表氮、磷和钾元素的使用情况,yield代表豌豆产量,该数据集主要是用来研究不同肥料对豌豆产量的影响。
1. 拟合模型
在接下来的例子里,我将会以小写字母表示数值型向量,而大写字母表示因子数据。
# 完全随机设计的单因素方差分析
# fit <- aov(y ~ A, data=mydataframe) #y是数值向量,A是因子
fit <- aov(yield ~ N, data=npk) #只是示例,实际中不是这么处理的
# 随机区组设计(B代表区组)
# fit <- aov(y ~ A + B, data=mydataframe) #y是数值向量,A、B是因子
fit <- aov(yield ~ N + block, data=npk) #示例,研究氮元素对豌豆生长的影响
summary(fit) #查看拟合的结果
# 析因设计
# fit <- aov(y ~ A + B + A:B, data=mydataframe) # y是数值向量,A、B是因子
# fit <- aov(yield ~ A*B, data=mydataframe) # 和上面的代码的作用是
fit <- aov(yield ~ N*P*K + block, data=npk) #三因素析因设计,block位区组,考虑N、P和K之间的交互作用
summary(fit)
2. 查看诊断分析图
诊断图主要是用来评估异方差性、正态性和对结果有影响的异常观测值。
layout(matrix(c(1,2,3,4),2,2)) # 创建2行2列的画布
plot(fit) # 绘制析因设计结果的诊断图
诊断图的横轴是拟合值,纵轴是残差、标准差或标准差的平方根,一般当各点的标准差集种在0处且分布较为均匀时,则说明拟合结果较好。上图显示2,3,5这三个样本的拟合值可能存在较大误差和,需仔细考虑。
3. 评估模型效应
在R中,我们可以使用函数anova(fit1, fit2)去评估不同模型的效应
fit1 <- aov(yield ~ N + block, data=npk)
fit2 <- aov(yield ~ N*P*K + block, data=npk)
anova(fit1,fit2)
4. 多重比较
在这里,你可以使用TukeyHSD()函数来进行Tukey HSD检验,它实际上是在方差分析结论有统计学意义之后进行的两两时候比较。
TukeyHSD(fit)
5. 结果的可视化
通常情况下,我们可以使用箱线图去可视化各组之间的差异,但我们也可以使用专门用于方差分析的基础可视化函数interaction.plot()和来自“gplots”包的plotmeans()函数。
# 绘制两因素互作图
attach(mtcars) #固定数据集
gear <- factor(gear) #转换为因子
cyl <- factor(cyl) #转换为因子
interaction.plot(cyl, gear, mpg, type="b", col=c(1:3),
leg.bty="o", leg.bg="beige", lwd=2,pch=c(18,24,22),
xlab="Number of Cylinders",
ylab="Mean Miles Per Gallon",
main="Interaction Plot") #cyl作为x轴,gear作为区组,mpg作为y轴
从上图中我们可以清晰看出mpg和cyl在不同gear组的变化关系,总的来看,随着cyl的增加,mpg在减少,当cyl在4~6范围时,不同gear的mpg差异较大,当cyl>6时,这种差异几乎没有了。
attach(mtcars)
cyl <- factor(cyl)
plotmeans(mpg~cyl,xlab="Number of Cylinders",
ylab="Miles Per Gallon", main="Mean Plotnwith95% CI")
上图的误差条实际上反映各个均值的95%置信区间,这里就不赘述了。
6. 多元方差分析
假如你有多个因变量,这时你可以使用多元方差分析(MANOVA)的方法来处理,这里因变量通常是一个矩阵,而使用的函数是manova()。
关于方差分析的内容就先讲到这儿,注意方差分析的核心函数是aov()。接下来我将和大家讲解非参数假设检验,咱们下期再见!
- 在jfinal中使用druid,并配置查看权限
- java中遇到过的String的一些特性
- Kaggle案例——使用scikit-learn解决DigitRecognition问题
- 基于Kaggle数据的词袋模型文本分类教程
- javascript中遇到的字符串对象处理
- 传统企业站开发 - 页面布局
- AngularJS中使用service,并同步数据
- 2016.05 第四周 群问题分享
- angularjs中 *.min.js.map 404的问题
- Git与通过Git添加提交文件
- Facebook社交网络R语言分析
- 初次使用AngularJS中的ng-view,路由控制
- Android Hook技术防范漫谈
- 美团点评基于Storm的实时数据处理实践
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vue.js|Nuxt仿制探探堆叠滑动|vue仿Tinder卡片效果
- Elasticsearch:透彻理解 Elasticsearch 中的 Bucket aggregation
- html+js开发模拟考试在线评分系统
- iOS音视频接入 - TRTC接入实时视频通话
- LRU缓存淘汰机制C++实现
- ant-design-vue运行时动态切换主题色
- 使用electron将vue-cli3.x项目打包为桌面应用
- Ubuntu 16.04下安装服务器端Shadowsocks
- 解决vue cli3.x打包上线静态资源找不到路径问题
- Ant-design-vue+vue-i18n实现前端国际化
- Mac OSX终端安装主题(oh my zsh)
- 谷歌浏览器油猴插件安装教程,让你的浏览器更加强大
- zabbix模块配置学习
- Windows下安装及使用NVM
- U盘上安装多个Linux发行版和PE