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

一、线性回归

        线性回归是一种广泛用于数据分析、预测和建模的技术,可以帮助我们理解变量之间的关系,并进行预测和推断。

1、简单线性回归

        简单线性回归是线性回归的一种特殊情况,适用于只有一个自变量和一个因变量的情况。

        在R语言中,可以使用lm()函数来建立线性回归模型。

# 建立示例数据
df<-data.frame(
  rain=c(136,269,311,427,537),
  yield=c(179,137,355,411,523)
)
# 假设因变量为yield,自变量为rain
mode<-lm(yield~rain,data=df)
# 查看模型摘要
summary(mode)

输出结果如下:

        在简单线性回归中:multiple R-squared=0.8054,说明rain可以解释yield变量80.54%的变异。F-statistic对应的p-value为0.03882,说明rain和yield之间存在线性关系。具体的线性回归系数查看coefficients表即可。

下面利用回归方程进行预测:

# 假设要预测的自变量值为350
new_x<-350
predict_y<-predict(mode,newdata=data.frame(rain=new_x))
print(predict_y)
# 绘制回归线和散点图
library(ggplot2)
ggplot(df,aes(x=rain,y=yield))+geom_point()+geom_smooth(
  method="lm",se=FALSE
)

2、多元线性回归

        在简单线性回归的基础上,引入多个自变量,建立一个多元线性回归模型。

        在R语言中,也是使用lm()函数来建立多元线性回归模型。

# 示例数据集
df<-data.frame(
  rain=c(136,269,311,427,537),
  temp=c(15.5,12.7,16.3,14.3,12.9),
  yield=c(179,137,355,411,523)
)
# 建立多元线性回归模型
model<-lm(yield~rain+temp,data=df)
# 查看模型摘要
summary(model)

        F检验说明存在线性方程,方程可以解释yield变量的91.48%的变异;在系数的t检验,可知rain变量的回归系数是显著的,而temp变量的回归系数是不显著的。

# 数据预测
new_x<-data.frame(rain=c(275,360),temp=c(18.4,13.6))
predict_y<-predict(model,newdata=new_x)
print(predict_y)

二、回归诊断

        回归诊断是对回归分析中的假设的检验与分析。R中lm线性回归基于OLS(普通最小二乘法)方法,需要基于一定的假设。

OLS回归的统计假设:

        正态性:因变量呈正态分布

        独立性:因变量值相互独立

        线性:因变量与自变量线性相关

        残差随机性

1、回归诊断方法

        R基础包中提供了检验回归分析中统计假设的方法。

        最常见的方法就是对lm()函数的返回对象使用plot()。

# 使用自带的mtcars数据集进行简单线性回归模型
model<-lm(mpg~hp,data=mtcars)
par(mfrow=c(2,2))
plot(model)

        car包提供了大量函数,大大增强了诊断回归模型的能力

        (1)qqPlot()函数提供了更为精确的正态假设检验方法。

# 加载car包
library(car)
# qqPlot()函数生成概率图
qqPlot(
  model,
  labels=row.names(mtcars),
  simulate=TRUE,
  main="Q-Q Plot"
)

        (2)Durbin-Watson检验的函数,能够检测误差的序列相关性。

p-value小于0.05,说明误差项之间存在显著自相关,即误差项之间不独立。

        (3)crPlots()函数绘制成分残差图,检验因变量与自变量之间是否呈非线性关系。

        由上图可知,hp与mpg之间存在较明显的非线性关系,需要考虑其他曲线关系。

        (4)ncvTest()函数和spreadLevelPlot()函数用于判断误差的同方差性。

        ncvTest()函数生成一个计分检验,零假设是:误差方差不变;备择假设是:误差方差随着拟合值的水平变化而变化。

        本例结果显示,vcvTest检验说明误差方差不变。

         spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,来展示标准化残差绝对值与拟合值的关系。

        本图显示,散点是水平的最佳拟合周边基本呈随机分布。

2、模型假设的综合验证

        gvlma()函数能够线性模型假设进行综合验证,同时还能做偏斜度、峰度和异方差性的评价。它给模型假设提供了一个单独的综合检验(通过/不通过)。

install.packages("gvlma")
# 加载gvlma包
library(gvlma)
gvmodel<-gvlma(model)
summary(gvmodel)

        重点查看Global Stat检验结果,显示差异极显著,且结论为不满足假设。说明此线性拟合结果存在明显的问题,需重新拟合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/581967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT c++ 代码布局原则 简单例子

本文描述QT c widget代码布局遵循的原则&#xff1a;实中套虚&#xff0c;虚中套实。 本文最后列出了代码下载链接。 在QT6.2.4 msvc2019编译通过。 所谓实是实体组件&#xff1a;比如界面框、文本标签、组合框、文本框、按钮、表格、图片框等。 所谓虚是Layout组件&#x…

IT廉连看——UniApp——样式绑定

IT廉连看——UniApp——样式绑定 一、样式绑定 两种添加样式的方法&#xff1a; 1、第一种写法 写一个class属性&#xff0c;然后将css样式写在style中。 2、第二种写法 直接把style写在class后面 添加一些效果&#xff1a;字体大小 查看效果 证明这样添加样式是没有问题的…

WPF —— MVVM 指令执行不同的任务实例

标签页 设置两个按钮&#xff0c; <Button Content"修改状态" Width"100" Height"40" Background"red"Click"Button_Click"></Button><Button Content"测试"Width"100"Height"40&…

clickhous学习之旅二

接上回继续鼓捣clickhouse 1.常用数据类型 1.1整型 固定长度的整型&#xff0c;包括有符号整型或无符号整型。整型范围(-2n-1~2n-1-1): Int8 - [-128 :127] -->相当于java中的byte Int16-[-32768 :32767] -->相当于java中的short Int32-[-2147483648 :2147483647] -…

最新官方破解版会声会影2024永久序列号和激活码

会声会影2024是一款功能强大的视频编辑软件&#xff0c;它集合了视频剪辑、音频调整、特效添加等多项功能于一身&#xff0c;为用户提供了一个全面且易用的视频制作平台。无论是初学者还是专业视频编辑人员&#xff0c;都能在这款软件中找到满足自己创作需求的工具。 会声会影最…

基于残差神经网络的汉字识别系统+pyqt前段界面设计

研究内容: 中文汉字识别是一项具有挑战性的任务&#xff0c;涉及到对中文字符的准确分类。在这个项目中&#xff0c;目标是构建一个能够准确识别中文汉字的系统。这个任务涉及到数据集的收集、预处理、模型训练和评估等步骤。尝试了使用残差神经网络&#xff08;ResNet&#x…

windows电脑改造为linux

有个大学用的旧笔记本电脑没啥用了&#xff0c;决定把它改成linux搭一个服务器&#xff1b; 一、linux安装盘制作 首先要有一个大于8G的U盘&#xff0c;然后去下载需要的linux系统镜像&#xff0c;我下的是ubuntu&#xff0c;这里自选版本 https://cn.ubuntu.com/download/d…

中国移动旋转验证码的识别过程

一、前言 今天有空研究了一下这个移动的登录&#xff0c;发现获取手机验证码的时候会弹出一种旋转验证码。这种验证码确实挺头疼。所以顺便研究了一下如何识别。 验证码的样子大家先看一下。看看大家有没有什么更好是思路。 二、验证码识别 我这里就直接上代码。我这里是使用…

SpringMVC基础篇(四)

文章目录 1.视图1.基本介绍1.视图介绍2.为什么需要自定义视图 2.自定义视图实例1.思路分析2.代码实例1.view.jsp2.接口3.配置自定义视图解析器springDispatcherServlet-servlet.xml4.自定义视图MyView.java5.view_result.jsp6.结果展示 3.自定义视图执行流程4.自定义视图执行流…

web安全---xss漏洞/beef-xss基本使用

what xss漏洞----跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;攻击者在网页中注入恶意脚本代码&#xff0c;使受害者在浏览器中运行该脚本&#xff0c;从而达到攻击目的。 分类 反射型---最常见&#xff0c;最广泛 用户将带有恶意代码的url打开&a…

E-MapReduce极客挑战赛季军方案

前一段时间我参加了E-MapReduce极客挑战赛&#xff0c;很幸运的获得了季军。在这把我的比赛攻略给大家分享一下&#xff0c;希望可以抛砖引玉。 赛题分析与理解 赛题背景&#xff1a; 大数据时代&#xff0c;上云已成为越来越多终端客户大数据方案的落地选择&#xff0c;阿里…

Phi-3-mini-4k-instruct 的功能测试

Model card 介绍 Phi-3-Mini-4K-Instruct 是一个 3.8B 参数、轻量级、最先进的开放模型&#xff0c;使用 Phi-3 数据集进行训练&#xff0c;其中包括合成数据和经过过滤的公开可用网站数据&#xff0c;重点是 高品质和推理密集的属性。 该型号属于 Phi-3 系列&#xff0c;Mini…

Golang | Leetcode Golang题解之第58题最后一个单词的长度

题目&#xff1a; 题解&#xff1a; func lengthOfLastWord(s string) (ans int) {index : len(s) - 1for s[index] {index--}for index > 0 && s[index] ! {ansindex--}return }

虚拟机扩容-根目录挂载sda1的空间不足

提醒&#xff01;不管成不成功&#xff0c;一定要先备份一份虚拟机&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 走过路过点个关注吧&#xff0c;想到500粉丝&#xff0c;哭。一、查看分区情况 df -h可以看到/dev/sda1已经被占满了 2.关闭虚拟机&#xff…

windows驱动开发-WDF对象

WDF封装了大量的WDF对象&#xff0c;不过&#xff0c;和应用层不一样&#xff0c;不用去尝试从WDF框架对象类上派生和改写原有的WDF类&#xff0c;本意WDF就是希望我们使用这些对象和类&#xff0c;而不是创造新的奇怪的类。 每个WDF对象都代表着对一项驱动需要使用的子功能的…

vue学习的预备知识为学好vue打好基础

目录 Vue是什么 &#xff1f;如何使用Vue &#xff1f;Vue ApiVue入口apiVue实例apiVue函数api 无构建过程的渐进式增强静态HTMLVue模块化构建工具npmyarnWebpackvue-cliVite Vue是什么 &#xff1f; 文章基于Vue3叙述。 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于…

179. 最大数(LeetCode)

文章目录 前言一、题目讲解二、算法原理三、代码编写1.仿函数写法2.lambda表达式 四、验证五.总结 前言 在本篇文章中&#xff0c;我们将会带着大家采用贪心的方法解决LeetCode中最大数这道问题&#xff01;&#xff01;&#xff01; 一、题目讲解 一组非负整数&#xff0c;包…

【面试经典 150 | 图】被围绕的区域

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;深搜方法二&#xff1a;广搜 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的…

03.Kafka 基本使用

Kafka 提供了一系列脚本用于命令行来操作 kafka。 1 Topic 操作 1.1 创建 Topic 创建一个名为 oldersix-topic 的 topic&#xff0c;副本数设置为3&#xff0c;分区数设置为2&#xff1a; bin/kafka-topics.sh \ --create \ --zookeeper 192.168.31.162:2181 \ --replication…

ROS1快速入门学习笔记 - 07话题消息的定义与使用

目录 一、话题模型 二、自定义话题消息 1. 在功能包下创建msg目录用于存储话题文件 2. 在package.xml文件中添加功能包依赖&#xff1b; 3. 在CMakeLists.txt增加编译选项&#xff1b; 4. 完成编译 5. 配置CMakeLists.txt中的编译规则&#xff08;增加发布者和订阅者&am…