R语言逐步多元回归模型分析长鼻鱼密度影响因素
时间:2022-07-23
本文章向大家介绍R语言逐步多元回归模型分析长鼻鱼密度影响因素,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文链接:http://tecdat.cn/?p=9564
目录
我从马里兰州生物流调查中提取了一些数据,以进行多元回归分析。数据因变量是每75米长的水流中长鼻鱼(Rhinichthys cataractae)的数量。自变量是河流流失的面积(英亩);氧(毫克/升);水流段的最大深度(以厘米为单位);硝酸盐浓度(毫克/升);硫酸盐浓度(毫克/升);以及采样日期的水温(以摄氏度为单位)。
如何做多元回归
数据集包含多个数字变量时,最好查看这些变量之间的相关性。原因之一是,可以轻松查看哪些自变量与该因变量相关。第二个原因是,如果要构建多元回归模型,则添加高度相关的自变量不太可能对模型有很大的改进。
最后,值得看一下数字变量的分布。如果分布差异很大,则使用Kendall或Spearman相关性可能更合适。同样,如果自变量与因变量的分布不同,则可能需要对自变量进行转换。
Data = read.table(textConnection(Input),header=TRUE)library(dplyr)Data.num = select(Data, Longnose, Acerage, DO2, Maxdepth, NO3, SO4, Temp)library(FSA)headtail(Data.num) Longnose Acerage DO2 Maxdepth NO3 SO4 Temp1 13 2528 9.6 80 2.28 16.75 15.32 12 3333 8.5 83 5.34 7.74 19.43 54 19611 8.3 96 0.99 10.92 19.566 20 4106 10.0 96 2.62 5.45 15.467 38 10274 9.3 90 5.45 24.76 15.068 19 510 6.7 82 5.25 14.19 26.5library(psych)corr.test(Data.num, use = "pairwise", method="pearson", adjust="none", # Can adjust p-values; see ?p.adjust for options alpha=.05)Correlation matrix Longnose Acerage DO2 Maxdepth NO3 SO4 TempLongnose 1.00 0.35 0.14 0.30 0.31 -0.02 0.14Acerage 0.35 1.00 -0.02 0.26 -0.10 0.05 0.00DO2 0.14 -0.02 1.00 -0.06 0.27 -0.07 -0.32Maxdepth 0.30 0.26 -0.06 1.00 0.04 -0.05 0.00NO3 0.31 -0.10 0.27 0.04 1.00 -0.09 0.00SO4 -0.02 0.05 -0.07 -0.05 -0.09 1.00 0.08Temp 0.14 0.00 -0.32 0.00 0.00 0.08 1.00Sample SizeProbability values (Entries above the diagonal are adjusted for multiple tests.) Longnose Acerage DO2 Maxdepth NO3 SO4 TempLongnose 0.00 0.00 0.27 0.01 0.01 0.89 0.26Acerage 0.00 0.00 0.86 0.03 0.42 0.69 0.98DO2 0.27 0.86 0.00 0.64 0.02 0.56 0.01Maxdepth 0.01 0.03 0.64 0.00 0.77 0.69 0.97NO3 0.01 0.42 0.02 0.77 0.00 0.48 0.99SO4 0.89 0.69 0.56 0.69 0.48 0.00 0.52Temp 0.26 0.98 0.01 0.97 0.99 0.52 0.00
逐步回归选择模型
使用AIC(赤池信息标准)作为选择标准。可以使用选项k = log(n)代替BIC。
逐步程序
Longnose ~ 1 Df Sum of Sq RSS AIC+ Acerage 1 17989.6 131841 518.75+ NO3 1 14327.5 135503 520.61+ Maxdepth 1 13936.1 135894 520.81<none> 149831 525.45+ Temp 1 2931.0 146899 526.10+ DO2 1 2777.7 147053 526.17+ SO4 1 45.3 149785 527.43..< snip... more steps >..Longnose ~ Acerage + NO3 + Maxdepth Df Sum of Sq RSS AIC<none> 107904 509.13+ Temp 1 2948.0 104956 509.24+ DO2 1 669.6 107234 510.70- Maxdepth 1 6058.4 113962 510.84+ SO4 1 5.9 107898 511.12- Acerage 1 14652.0 122556 515.78- NO3 1 16489.3 124393 516.80Call:lm(formula = Longnose ~ Acerage + NO3 + Maxdepth, data = Data)Coefficients:(Intercept) Acerage NO3 Maxdepth -23.829067 0.001988 8.673044 0.336605
定义最终模型
summary(model.final) # Show coefficients, R-squared, and overall p-value Estimate Std. Error t value Pr(>|t|) (Intercept) -2.383e+01 1.527e+01 -1.560 0.12367 Acerage 1.988e-03 6.742e-04 2.948 0.00446 **Maxdepth 3.366e-01 1.776e-01 1.896 0.06253 .NO3 8.673e+00 2.773e+00 3.127 0.00265 **Multiple R-squared: 0.2798, Adjusted R-squared: 0.2461F-statistic: 8.289 on 3 and 64 DF, p-value: 9.717e-05
方差分析
Anova Table (Type II tests)Response: Longnose Sum Sq Df F value Pr(>F) Acerage 14652 1 8.6904 0.004461 **Maxdepth 6058 1 3.5933 0.062529 .NO3 16489 1 9.7802 0.002654 **Residuals 107904 64
预测值图
检查模型的假设
线性模型中残差的直方图。这些残差的分布应近似正态。
残差与预测值的关系图。残差应无偏且均等。
模型拟合标准
模型拟合标准可用于确定最合适的模型。使用AIC或可选的BIC。AICc是对AIC的一种调整,它更适合于观测值相对较少的数据集。AIC,AICc和BIC越小越好。
在下面的例子中,我们只讨论了显著相关的种植面积,MAXDEPTH和NO3 。
$Models Formula 1 "Longnose ~ Acerage" 2 "Longnose ~ Maxdepth" 3 "Longnose ~ NO3" 4 "Longnose ~ Acerage + Maxdepth" 5 "Longnose ~ Acerage + NO3" 6 "Longnose ~ Maxdepth + NO3" 7 "Longnose ~ Acerage + Maxdepth + NO3" 8 "Longnose ~ Acerage + Maxdepth + NO3 + DO2"9 "Longnose ~ Acerage + Maxdepth + NO3 + SO4"10 "Longnose ~ Acerage + Maxdepth + NO3 + Temp" $Fit.criteria Rank Df.res AIC AICc BIC R.squared Adj.R.sq p.value Shapiro.W Shapiro.p1 2 66 713.7 714.1 720.4 0.12010 0.10670 3.796e-03 0.7278 6.460e-102 2 66 715.8 716.2 722.4 0.09301 0.07927 1.144e-02 0.7923 2.115e-083 2 66 715.6 716.0 722.2 0.09562 0.08192 1.029e-02 0.7361 9.803e-104 3 65 711.8 712.4 720.6 0.16980 0.14420 2.365e-03 0.7934 2.250e-085 3 65 705.8 706.5 714.7 0.23940 0.21600 1.373e-04 0.7505 2.055e-096 3 65 710.8 711.4 719.6 0.18200 0.15690 1.458e-03 0.8149 8.405e-087 4 64 704.1 705.1 715.2 0.27980 0.24610 9.717e-05 0.8108 6.511e-088 5 63 705.7 707.1 719.0 0.28430 0.23890 2.643e-04 0.8041 4.283e-089 5 63 706.1 707.5 719.4 0.27990 0.23410 3.166e-04 0.8104 6.345e-0810 5 63 704.2 705.6 717.5 0.29950 0.25500 1.409e-04 0.8225 1.371e-07
几个模型的AICc(修改后的Akaike信息标准)图。模型7最小化了AICc,因此被选为该模型中的最佳模型。
将模型与似然比检验进行比较
将模型与 平方和检验或似然比检验进行比较,以查看是否有其他项显着减少平方误差和 。
Analysis of Variance TableModel 1: Longnose ~ Acerage + Maxdepth + NO3Model 2: Longnose ~ Acerage + Maxdepth Res.Df RSS Df Sum of Sq F Pr(>F) 1 64 107904 2 65 124393 -1 -16489 9.7802 0.002654 **Likelihood ratio testModel 1: Longnose ~ Acerage + Maxdepth + NO3Model 2: Longnose ~ Acerage + Maxdepth #Df LogLik Df Chisq Pr(>Chisq) 1 5 -347.05 2 4 -351.89 -1 9.6701 0.001873 **Model 1: Longnose ~ Acerage + Maxdepth + NO3 + DO2Model 2: Longnose ~ Acerage + Maxdepth + NO3 + SO4Model 3: Longnose ~ Acerage + Maxdepth + NO3 + TempModel A: Longnose ~ Acerage + Maxdepth + NO3 DfO RSSO DfA RSSA Df SS F Pr(>F)1vA 63 107234.38 64 107903.97 -1 -669.59 0.3934 0.53282vA 63 107898.06 64 107903.97 -1 -5.91 0.0035 0.95333vA 63 104955.97 64 107903.97 -1 -2948.00 1.7695 0.1882Model 1: Longnose ~ Acerage + Maxdepth + NO3 + DO2Model 2: Longnose ~ Acerage + Maxdepth + NO3 + SO4Model 3: Longnose ~ Acerage + Maxdepth + NO3 + TempModel A: Longnose ~ Acerage + Maxdepth + NO3 DfO logLikO DfA logLikA Df logLik Chisq Pr(>Chisq)1vA 63 -346.83881 64 -347.05045 -1 0.21164 0.4233 0.51532vA 63 -347.04859 64 -347.05045 -1 0.00186 0.0037 0.95133vA 63 -346.10863 64 -347.05045 -1 0.94182 1.8836 0.1699
- R语言-中国各城市PM2.5数据间的相关分析
- 妹子如何运用R语言数据分析选择心仪的对象?
- 生产环境大型sql语句调优实战第一篇(二) (r2笔记32天)
- 生产环境大型sql语句调优实战第一篇(一) (r2笔记第31天)
- 讨论 | 你是否遇到过你完全不能理解的机器学习概念?
- 【专业技术】C++里面重要的几个关键字的用法
- sql monitor的使用(一) (r2第30天)
- sql_profile的使用(一) (r2笔记29天)
- 关于权限设置的一个小把戏(r2第27天)
- R语言实现混合模型
- 数据迁移判断非空约束(r2笔记45天)
- 【专业技术】linux下socket编程
- oracle并行的小细节(r2笔记44天)
- python实现朴素贝叶斯模型:文本分类+垃圾邮件分类
- 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 数组属性和方法
- Laravel5.5 视图 – 创建视图和数据传递示例
- 浅谈Python爬虫原理与数据抓取
- PHP封装cURL工具类与应用示例
- php中isset与empty函数的困惑与用法分析
- 布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法
- PHP使用反向Ajax技术实现在线客服系统详解
- PHP设计模式之适配器模式(Adapter)原理与用法详解
- laravel5.5框架的上传图片功能实例分析【仅传到服务器端】
- Laravel5.1框架自带权限控制系统 ACL用法分析
- php使用filter_var函数判断邮箱,url,ip格式示例
- Python json格式化打印实现过程解析
- PHP使用DOM对XML解析处理操作示例
- OpenCV Python实现图像指定区域裁剪
- Laravel框架实现多个视图共享相同数据的方法详解
- python如何快速生成时间戳