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

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

        方差分析根据平方和的加和原理,利用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.mzph.cn/bicheng/3407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CMake+qt+Visual Studio

#使用qt Creator 创建Cmake 项目,使用Cmake Gui 生成sln 工程&#xff0c;使用Visual Studio 开发 ##使用qt Creator 创建CMake项目 和创建pro工程的步骤一致&#xff0c;只是在选择构建系统的步骤上选择CMake,接下来步骤完全相同 工程新建完成之后&#xff0c;构建cmake 项…

公司服务器中的kafka消息中间件挂了,我是如何修复的?

今天的公司的system系统服务在运行过程中&#xff0c;提示连接不上kafuka的消息中间件。但是负责kafka的同事已经离职了&#xff0c;询问公司开发也不知道如何处理&#xff0c;我是如何重启kafka消息中间件使system系统服务正常运行&#xff1f; 查看kafka的安装位置 在下面的…

Java基础:设计模式之原型模式

原型模式是一种创建型设计模式&#xff0c;它允许我们通过复制现有的对象来创建新的对象&#xff0c;而不是每次都通过构造函数新建。这种模式适用于那些创建新对象成本较高或者构造过程复杂的情况。在原型模式中&#xff0c;一个对象通过实现Cloneable接口并重写其clone()方法…

WPF —— MVVM架构

1 什么是MVVM&#xff1f; MVVM是一种软件架构模式&#xff0c;它将应用程序分为三个层次 model&#xff08;数据模型&#xff09;&#xff0c;view&#xff08;视图&#xff09;&#xff0c;viewmodel&#xff08;视图模型&#xff09; model&#xff1a;表示应用程序当中数…

什么是RabbitMQ,RabbitMQ基本概念,RabbitMQ的使用场景

目录 面试官:什么是RabbitMQ,RabbitMQ的使用场景什么是RabbitMQ?RabbitMQ基本概念RabbitMQ的使用场景举例该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是RabbitMQ,RabbitMQ的使用场景 …

SpringCloud之Feign集成Ribbon

Feign定义【可跳过】 Spring Cloud Feign是一个声明式的伪Http客户端&#xff0c;它使得写Http客户端变得更简单。其英文表意为“假装&#xff0c;伪装&#xff0c;变形”&#xff0c;是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#x…

jmeter固定定时器,生效是在请求发送前还是发送后

一、结论 先说结果&#xff0c;是生效在请求发送前 二、背景 在压测流程的时候&#xff0c;生成订单后紧接着调订单查询接口&#xff0c;查询不到&#xff0c;报错率还挺高的,原因肯定是主从延迟&#xff0c;但是DBA非说延时1s内是正常的&#xff0c;在CPU耗用在40%以内的情…

IDM下载器_Internet Download Manager 6.42.7

网盘下载 IDM下载器是一款针对互联网所打造的下载管理器。IDM下载器能将下载速度提高5倍&#xff0c;恢复因丢失的连接&#xff0c;网络问题&#xff0c;计算机关闭或意外断电而重新启动中断或中断的下载。IDM下载器还可支持所有流行的浏览器&#xff0c;以使用独特的“高级浏…

【打工日常】云原生之部署私有化个人工作云盘

一、FileGator介绍1.FileGator简介FileGator是一个免费开源自托管的Web应用程序,用于管理文件和文件夹,部署在自己的服务器上,解放笔记本的压力,随时随地的能看到自己的文件,并且可以共享,方便团队的协作,更有利于个人工作的开展。2.FileGator功能管理本地存储库文件夹中…

视频改字祝福 豪车装X系统源码uniapp前端源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 uniapp视频改字祝福 豪车装X系统源码 全开源。 创意无限&#xff01;AI视频改字祝福&#xff0c;豪车装X系统源码开源&#xff0c;打造个性化祝福视频不再难&#xff01; 想要为你的…

RealSenseSR300工程环境配置说明

新建目录结构如下&#xff1a; output:存储可执行文件.exe等src:存储源码.cpp .h等3rdparty:存储第三方库 opencv等 其中将源码按照main及其相关文件分为以下三类 vs2015许可证到期后先激活&#xff0c;激活码很多网上有&#xff0c;如&#xff1a;HMGNV-WCYXV-X7G9W-YCX63…

开发Chrome插件入门

开发Chrome插件&#xff08;也称为Chrome扩展&#xff09;是一个相对直接的过程&#xff0c;尤其对于已经熟悉HTML、CSS、JavaScript的前端开发者而言。以下是开发Chrome插件的基本步骤和示例&#xff1a; 1. 准备工作 首先&#xff0c;确保你有一个适合开发的环境。通常这意…

2024.4.25

#include <iostream> #include <iomanip> using namespace std; class Person{const string name;int age;char sex; public:Person(const string name):name(name){cout << "第一个Person构造函数" << endl;}Person():name("zhangsan&…

java语言基础面试题(一)

面试题1&#xff1a;简述Java的主要特性。 回答&#xff1a;Java的主要特性包括面向对象、跨平台性&#xff08;通过JVM实现&#xff09;、自动内存管理&#xff08;垃圾回收机制&#xff09;、丰富的API和安全性高。 面试题2&#xff1a;解释Java中的多态性。 回答&#xf…

3.7设计模式——Observer 观察者模式(行为型)

意图 定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于他的对象都得到通知并被自动更新。 结构 Subject&#xff08;目标&#xff09;知道它的观察者&#xff0c;可以有任意多个观察者观察同一个目标&#xff0c;提供注册和删…

快速入门基础控制台API

目录 一、什么是win32API 二、API基础函数介绍 2.1控制台基础命令 2.1.1标题修改 2.1.2长宽修改 2.1.3坐标 2.2GetStdHandle 2.3GetConsoleCursorInfo 2.4SetConsoleCursorInfo 2.5SetConsoleCursorPosition 2.6GetAsyncKeyState 三、API函数综合应用 3.1设置光标…

C语言案例——输出 Fibonacci 数列(斐波那契数列)的前 40 项

目录 斐波那契数列待续、更新中 斐波那契数列 输出 Fibonacci 数列&#xff08;斐波那契数列&#xff09;的前 40 项 #include <stdio.h> void main() {int a[40] {1,1};int i;printf( "%12d%12d",a[0],a[1]);for(i2; i<40; i){a[i]a[i-1]a[i-2];printf( &q…

IDEA-关于idea在import类时,代码报红的解决方法,找不到包

关于idea在import类时&#xff0c;代码报红的解决方法_idea import报红-CSDN博客

软件企业质量保证的基石――QA,QC的良性协作

软件企业质量保证的基石――QA、QC的良性协作 国内的软件产业发展了20多年的时间&#xff0c;已经由个人英雄时代步入到中、小团队协作时代。相信不久的将来&#xff0c;国内一定会出现航母级的软件企业&#xff0c;那时候我们会迎来集团军作战的时代。不同的时代表明软件规模…

[svelte]组件怎么进行状态共享

前面提到的svelte stores是一种用于管理应用程序状态的机制&#xff0c;它可以在不同组件之间共享状态&#xff0c;但就可能会有这样子的疑问&#xff0c;难道一定要通过stores来传递属性的状态吗 Props&#xff08;属性&#xff09; 最简单的方法是通过将状态作为属性传递给子…