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

server/2024/10/17 19:18:04/

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

        方差分析根据平方和的加和原理,利用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/server/26724.html

相关文章

MySQL的GTID

对于2台主以上的结构优势异常明显&#xff0c;可以在数据不丢失的情况下切换新主。 通过GTID复制&#xff0c;这些在主从成立之前的操作也会被复制到从服务器上&#xff0c;引起复制失败。也就是说通过GTID复制都是从最先开始的事务日志开始&#xff0c;即使这些操作在复制之前…

GROMACS计算结合自由能之自由能微扰

分子动力学模拟主要可以计算平衡态过程中一些热力学数据&#xff0c;而自由能的计算是目前研究人员最为关切的问题之一。精准地计算结合自由能&#xff0c;一方面可以从模拟角度分析分子之间的相互作用&#xff0c;另一方面也可以为实验提供支撑并指导实验设计。本次&#xff0…

Procise使用之PL端流程(1)

PL端 纯PL端的流程其实和vivado的步骤相似&#xff0c;也是新建工程&#xff0c;创建verilog文件&#xff0c;添加约束以及生成bit位流。 不同的是&#xff0c;约束文件不是.xdf而是UCF文件格式&#xff0c;约束内容也包括管脚和时钟约束&#xff08;只能手动编写约束&#x…

鸿蒙内核源码分析(汇编传参篇) | 如何传递复杂的参数

汇编如何传复杂的参数? 汇编基础篇 中很详细的介绍了一段具有代表性很经典的汇编代码&#xff0c;有循环&#xff0c;有判断&#xff0c;有运算&#xff0c;有多级函数调用。但有一个问题没有涉及&#xff0c;就是很复杂的参数如何处理? 在实际开发过程中函数参数往往是很复…

如何我现在是本地的文件路径不是http,用html如何打开

--别给我BB 如何我现在是本地的文件架路径不是http&#xff0c;用html如何打开? 答&#xff1a; 如果你想在HTML中打开本地文件路径的视频&#xff0c;可以使用file://协议。假设你的视频文件在本地的路径为/path/to/your/video.mp4&#xff0c;那么你可以将src属性设置为file…

[自学笔记] ESP32-C3 Micropython初次配置

IDE:Thonny 4.1.4 开发版&#xff1a;合宙ESP32C3简约版(硬件资料链接&#xff1a;http://luatos.com/t/esp32c3) (注&#xff1a;1、测试过程中IDE正常连接ESP32C3简约版的虚拟串口。不受简约版无串口芯片的影响。 2、本次测试了两款IDE&#xff0c;分别是"thonny-4.1.4…

【蓝桥杯】第十五届蓝桥杯C/C++B组省赛补题

文章目录 估分试题 A: 握手问题试题 B: 小球反弹试题 C: 好数试题 D: R 格式试题 E: 宝石组合试题 F: 数字接龙试题 G: 爬山试题 H: 拔河 估分 测试网址&#xff1a;民间测试数据 5 0 9 5 2 5 18 2 46 5 0 9 5 2 5 18 2 46 50952518246 试题 A: 握手问题 #inc…

U427467 type(value) Probelm

题目背景 无 题目描述 输出type(value) 输入格式 一行&#xff0c;不知道什么类型 输出格式 一行&#xff0c;type(value) value是输入 输入输出样例 输入 #1 asd 输出 #1 <class str> 输入 #2 be 输出 #2 <class str>Code: valueinput() print(t…