《R语言与农业数据统计分析及建模》学习——方差分析

news/2024/10/18 6:01:05/

        方差分析是研究一种或多种因素的变化对试验结果的观测值是否有显著影响,从而找到较优试验条件或生产条件的一种常用数理统计方法。

        方差分析根据平方和的加和原理,利用F检验,进而判断试验因素对试验结果的影响是否显著。

        分为:单因素方差分析(one-way ANOVA)、双因素方差分析(two-way ANOVA)和多因素方差分析分析(multi-way ANOVA)

方差分析的前提假设:

        ①样本数据独立

        ②每组数据的总体服从正态分布分布

        ③每组数据方差齐性

        因此在进行方差分析前,需要先进行对应的检验:

        (1)正态性检验

        ①使用Shaprio-Wilk正态检验方法来检验样本是否符合正态分布

        ②使用Q-Q图来检验正态性

        (2)方差齐性检验

        ①Bartlett检验:适用于数据服从正态分布,而当数据非正态时容易导致假阳性。

        ②Levene检验:在非正态数据时,表现较为稳定,对正态不敏感。

        ③Fligner-Killeen检验:非参数检验,完全不依赖已知分布。

        (3)离群点检验

        由于方差分析对离群点很敏感,所以需要对数据检测是否有离群点,最常用(可能也较为好使的)是以图形展示室,如箱线图、散点图等形式:

        ①mvoutlier包aq.plot()作物

        ②car包的outlierTest()作图

1、单因素方差分析分析——检验前提(正态性)

(1)独立性:由于随机抽取,假设总体满足独立。

(2)检验正态性:用W检验。

        H0:样本数据与正态分布没有明显区别;

        HA:样本数据与正态分布存在显著区别。

        W统计量越小,越接近零,表示样本越接近正态分布;p值,如果p-value小于显著性水平α(通常为0.05),则拒绝H0。代码如下:

# 导入数据
df<-read.csv("sss.csv")
# 部分数据展示
head(df)
# 进行正态性检验
shapiro.test(df[which(df[,2]=="A"),]$x)
shapiro.test(df[which(df[,2]=="B"),]$x)
shapiro.test(df[which(df[,2]=="C"),]$x)
shapiro.test(df[which(df[,2]=="D"),]$x)
shapiro.test(df[which(df[,2]=="E"),]$x)

        #结论:所有因素的W检验显示不显著,即满足正态性。

2、单因素方差分析分析——检验前提(齐次性)

        检验方差齐次性(本例使用bartlett检验)

        H0:各因子水平下的方差相同。

        HA:各因子水平下的方差不同。

# 接续上一个代码
# 进行bartlett方差齐性检验
bartlett.test(x~method,data=df)

        检验结果显示,p-value>0.05,即差异不显著,接受原假设(方差齐性)。

3、单因素方差分析分析——检验前提(离群性)

        方差齐性检验本身对离群点就非常敏感。当然也可以用outlierTest()函数进行检验。

# 接续上一代码
# 进行离群性检验
library(car)
outlierTest(aov(x~method,data=df))

        结论:没有证据表明数据中存在离群点。

4、单因素方差分析

        由于经过前面三步的检验,符合方差分析的假设条件。下面进行方差分析。【注意:如果正态性和方差齐性不满足,需要中KW检验进行分析,对应的函数为:kruskal.test()

# 接续上一代码
# 对数据进行方差分析
df$method<-factor(df$method)
aov.model<-aov(x~method,data=df)
summary(aov.model)
boxplot(x~method,data=df)

        结论:p值小于0.05,即method的不同水平之间差异显著。

5、双因素(无交互)方差分析

        双因素(无交互)方差分析,仍需要满足:数据独立、正态性和方差齐性。

        R中的函数aov():不考虑交互作用x~A+B,加号表示两个因素具有可加性。

# 双因素(无交互)方差分析
# 导入数据
juice<-read.csv("juice.csv")
# 数据展示
head(juice)
# 转化为因子型变量
juice$A<-factor(juice$A)
juice$B<-factor(juice$B)
# 双因素方差分析
juice_aov<-aov(X~A+B,data=juice)
summary(juice_aov)

        结论:A因素不同水平对x的影响差异不显著,B因素不同水平对x的影响差异显著。

6、双因素(有交互)方差分析

        双因素(有交互)方差分析仍需要满足:数据独立、正态性和方差齐性。

        有交互作用,表示两个因素的不同水平较差搭配对试验指标产生影响。

        R中的函数aov():考虑交互作用的方差分析模型x~A+B+A:B

# 双因素(有交互)方差分析
# 导入数据
rats<-read.csv("rats.csv")
# 数据展示
head(rats,3)
# 转化为因子型变量
rats$Toxicant<-factor(rats$Toxicant)
rats$Cure<-factor(rats$Cure)
# 更改图形显示的界面排版
op<-par(mfrow=c(1,2))
# 图形展示
plot(Time~Toxicant+Cure,data=rats)
# 用函数interaction.plot()作出交互效应图,考察因素间是否存在交互作用
with(rats,interaction.plot(Toxicant,Cure,Time,trace.label="Cure"))
with(rats,interaction.plot(Cure,Toxicant,Time,trace.label="Toxicant"))
# 方差分析
rats_aov<-aov(Time~Toxicant+Cure+Toxicant:Cure,data=rats)
summary(rats_aov)

        由交互曲线图可以看出,曲线中没有明显的相交情况出现,初步认为两个因素没有交互作用,下一步在用方差分析进行两因素间交互作用的确认。

        由方差分析结果可知:两因素对Time的影响极显著;二者间的交互作用对Time影响不显著。


http://www.ppmy.cn/news/1448762.html

相关文章

38-3 Web应用防火墙 - 安装配置WAF

首先需要安装Centos 7 虚拟机:Centos7超详细安装教程_centos7安装教程-CSDN博客 安装配置WAF 在桌面环境中,右键点击打开终端,首先执行以下步骤: 1)安装必要的工具: 输入命令: sudo su yum install -y wget epel-release 2)第二步,安装依赖工具,输入以下命令: y…

量子信息杂谈系列(一):关于费曼学习法

小伙伴们劳动节快乐呀&#xff0c;放假这几天博主准备从工作中“逃离”出来&#xff0c;分享一些轻松的话题。 一转眼我在一个多月的时间已经输出了二十多篇博客了&#xff0c;这些博客编写过程中查阅资料、消化理论和文本的编写等工作几乎占据了我所有的业余时间&#xff0c;压…

基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 matlab2022a的测试结果如下&#xff1a; vivado2019.2的仿真结果如下&#xff1a; 将数据导入到matlab中&#xff0c; 系统的RTL结构图如下图所示…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4--汇编LED驱动程序

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

邦芒面试:面试时,如何展现卓越的口才

面试时&#xff0c;如何展现卓越的口才&#xff0c;让你在求职面试中脱颖而出&#xff1f;以下为你提供九大策略&#xff0c;助你“舌战群儒”&#xff0c;赢得心仪的职位。 深思熟虑后发言 避免立即回答问题&#xff0c;先稍作思考&#xff0c;确保回答逻辑清晰&#xff0c;言…

Linux:冯诺依曼体系结构、操作系统、初识进程

文章目录 1.冯诺依曼体系结构总线与数据传输通路为什么有内存这个部分计算机存储结构 2.操作系统(Operator System)2.1 概念2.2 设计OS的目的2.3 理解“管理”先描述再组织 2.4 用户使用系统调用和库函数&#xff08;lib&#xff09;概念 总结 3.初识进程3.1 基本事实与引入3.2…

C语言经典例题-8

1.进制AB 题目描述&#xff1a; 输入一个十六进制数a&#xff0c;和一个八进制数b&#xff0c;输出ab的十进制结果&#xff08;范围-231~231-1&#xff09;。 输入描述&#xff1a; 一行&#xff0c;一个十六进制数a&#xff0c;和一个八进制数b&#xff0c;中间间隔一个空格…

小区服务|基于SprinBoot+vue的小区服务管理系统(源码+数据库+文档)

目录 基于SprinBootvue的小区服务管理系统 一、前言 二、系统设计 三、系统功能设计 1管理员登录 2 客服聊天管理、反馈管理管理 3 公告信息管理 4公告类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博…