Biomod2 (上):物种分布模型预备知识总结
Biomod1
- 1.栅格数据处理
- 1.1 读取一个栅格图片
- 1.2 计算数据间的相关系数
- 1.3 生成多波段的栅格图像
- 1.4 修改变量名称
- 1.4.1 计算多个变量之间的相关性
- 2. 矢量数据处理
- 2.1 提取矢量数据
- 2.2 数据掩膜
- 2.2 栅格计算
- 2.3 拓展插件的使用
- 3. 图表绘制
- 3.1 遥感影像绘制
- 3.2 柱状图分析图绘制
- 3.3 在图表中生成标准线(平均值或期望值)
- 3.4 箱线图绘制
- 3.4.1 图像优化
- 4. 线性回归模型
今天学习了一下物种分布模型方面的知识,现在进行一个总结和回顾。
1.栅格数据处理
library(raster)
library(tidyverse)
matrix(1:9, nrow = 3, ncol = 3)# 生成一个栅格矩阵
raster(matrix(1:9, 3))
raster(matrix(1:9, 3)) %>% plot()# 生成一个简单的栅格图片
r<-raster(ncol = 30, nrow = 30)
values(r) <- 1:ncell(r) # ncell(r):表示r的栅格个数,共900个
plot(r)
生成一个简单的栅格图像:Raster
自定义一个栅格图像:30*30
1.1 读取一个栅格图片
# 读取栅格图片
raster(system.file("external/rlogo.grd", package = "raster")) %>% plot() #管道函数
这是R语言自带的图片:
1.2 计算数据间的相关系数
# 计算相关系数
cor(runif(100,0,10),runif(100,0,10)) # 提供两个长度一直的向量
0.0046693
1.3 生成多波段的栅格图像
r1 <- raster(matrix(runif(900), 30, 30))
r2 <- raster(matrix(runif(900), 30, 30))
r3 <- raster(matrix(runif(900), 30, 30))
r4 <- raster(matrix(runif(900), 30, 30))
r5 <- raster(matrix(runif(900), 30, 30))
# 将五个栅格图层堆叠在一起,形成多波段影像
stack(r1, r2, r3, r4, r5)
stack(r1, r2, r3, r4, r5) %>% plot()
结果展示:
1.4 修改变量名称
# 更改变量名称
df <- stack(r1, r2, r3, r4, r5) %>%as.data.frame(xy = T) %>%as_tibble() %>%setNames(c("lon", "lat", "x1", "x2", "x3", "x4", "y")) # 重命名
head(df)
1.4.1 计算多个变量之间的相关性
## 变量间相关性 法1
cor(df[, c("x1","x2","x3","x4","y")])## 变量间相关性,法2
#devtools::install_github("danlwarren/ENMTools") # 注意:大概需要安装46个packages
# 安装的时候会出现一些问题,不太好安装
library(ENMTools)
raster.cor.matrix(stack(r1, r2, r3, r4, r5))
2. 矢量数据处理
2.1 提取矢量数据
install.packages("mapchina")
library(mapchina)
cd_sf <- mapchina::china %>%dplyr::filter(Name_Perfecture == "成都市") %>%group_by(Name_Province) %>%summarise(geometry = sf::st_union(geometry)) %>%ungroup()
colnames(cd_sf) # see all variable names
plot(cd_sf)
2.2 数据掩膜
# 使用本地数据DEM进行掩膜
china_dem <- raster("D:/Datasets/w001001.adf")
bj_dem <- china_dem %>%crop(bj_sf) %>%mask(bj_sf)
plot(bj_dem)
2.2 栅格计算
类似于一个二分类问题:
res <- stack(r1, r2) %>%calc(x = ., fun = function(x) {ifelse(x[1] > 0.5 & x[2] > 0.5, 0, 1) # 对数据进行二分类处理,# 同时满足返回0,否则返回1})
res
plot(res)
使用case_when函数能解决上面的问题,更方便
# 使用case_when函数
stack(r1, r2) %>%as.data.frame(xy = T) %>% # 将数据转换为数据框格式mutate(res = case_when(layer.1 > 0.5 & layer.2 > 0.5 ~ 0,TRUE ~ 1)) %>%dplyr::select(1, 2, last_col()) %>%as_tibble() %>%plot()getValues(res) %>% head(10)
2.3 拓展插件的使用
更方便查看和统计数据
# 拓展插件
#install.packages("flextable")
library(flextable)
tibble(model = LETTERS[1:10], mean = runif(10, 0.4, 1)) %>%mutate(sd = runif(10, 0.01, 0.1)) %>%mutate(weight = mean / sum(mean)) %>%regulartable() %>%flextable::align(align = "center", part = "all") %>%theme_booktabs()
3. 图表绘制
3.1 遥感影像绘制
library(terra)
library(tidyterra)
library(ggspatial)
ggplot()+geom_spatraster(data = rast(bj_dem)) +scale_fill_whitebox_c(palette = "muted",na.value = "white") +annotation_scale() +annotation_north_arrow(which_north = "grid")+theme()
3.2 柱状图分析图绘制
AUC、TSS展示
# AUC、TSS绘制
tibble(model1 = LETTERS[1:10], AUC = runif(10, 0.6, 1), TSS = runif(10, 0.6, 1)) %>% ggplot()+geom_col(aes(model1,AUC))##---------------------------------------------------------------------
tibble(model = LETTERS[1:10], AUC = runif(10, 0.6, 1), TSS = runif(10, 0.6, 1)) %>%pivot_longer(-model,names_to = "vars",values_to = "value") %>% ggplot()+geom_col(aes(model,value,fill = vars),position = 'dodge')+ggsci::scale_fill_lancet()+labs(x = "建模算法",y = "AUC/TSS",fill = "")+theme_light()
3.3 在图表中生成标准线(平均值或期望值)
# 生成选择线
install.packages("extrafont")
install.packages("showtext")
library(extrafont)
library(showtext)
showtext_auto(enable = TRUE)
font_add("Times", regular ="./font/Times New Roman.ttf") # 字体选择
font_add("KaiTi", regular ="./font/KaiTi.ttf")
font_add("wqy", regular = "wqy-microhei.ttc")set.seed(123)
tibble(model = LETTERS[1:10], AUC = runif(10, 0.6, 1), TSS = runif(10, 0.6, 1)) %>%pivot_longer(-model,names_to = "vars",values_to = "value") %>% ggplot()+geom_col(aes(model,value,fill = vars),position = 'dodge')+geom_hline(yintercept = 0.6,linetype = 2,size = 0.5)+ # 选择线的位置,即y的大小geom_hline(yintercept = 0.75,linetype = 1.5,size = 1)+ggsci::scale_fill_lancet()+labs(x = "建模算法",y = "AUC/TSS",fill = "")+theme_light()+theme(axis.text.x = element_text(size = 13, family = "KaiTi",angle = 45),axis.title.x = element_text(size = 15,family = "KaiTi"),legend.text = element_text(size = 11,family = "Times"),axis.text.y = element_text(size = 11,family = "Times"),axis.title.y = element_text(size = 13,family = "Times"),legend.position = "bottom")
3.4 箱线图绘制
这是一个非常好用的package:DT,能够更方便的显示数据表
tibble(vars = paste0("vars",rep(1:5,50)),model = rep(LETTERS[1:5],each = 50),weight = runif(250,0.5,1),run = rep(rep(1:5,each = 5),10)) %>% DT::datatable() # 调用DT中的datatable函数显示数据
tibble(vars = paste0("vars",rep(1:5, 50)), # ,1到5重复50次,并与vars粘贴model = rep(LETTERS[1:5],each = 50),weight = runif(250,0.5,1),run = rep(rep(1:5,each = 5),10)) %>% ggplot()+geom_boxplot(aes(vars,weight,fill = model),alpha = 0.8)+theme_bw()+theme(panel.grid = element_blank())+theme(text=element_text(size=12, family="serif"))
3.4.1 图像优化
# 图像优化
tibble(vars = paste0("vars",rep(1:5,50)),model = rep(LETTERS[1:5],each = 50),weight = runif(250,0.5,1),run = rep(rep(1:5,each = 5),10)) %>% ggplot()+geom_boxplot(aes(vars,weight,fill = model),alpha = 0.8)+ggsci::scale_fill_lancet()+labs(x = "预测变量",y = "贡献度",fill = "")+ggthemes::theme_economist_white()+theme_bw()+theme(axis.text.x = element_text(size = 13, family = "RMN",angle = 45),axis.title.x = element_text(size = 15,family = "KT"),legend.text = element_text(size = 11,family = "RMN"),axis.text.y = element_text(size = 11,family = "RMN"),axis.title.y = element_text(size = 13,family = "KT"),legend.position = "bottom")
4. 线性回归模型
# 线性回归模型
lm_df <- data.frame(x = iris$Sepal.Length,y = iris$Sepal.Width)
lm_model <- lm(data = lm_df,y ~ x)
broom::tidy(lm_model)
相关文章:
Biomod2 (上):物种分布模型预备知识总结
Biomod11.栅格数据处理1.1 读取一个栅格图片1.2 计算数据间的相关系数1.3 生成多波段的栅格图像1.4 修改变量名称1.4.1 计算多个变量之间的相关性2. 矢量数据处理2.1 提取矢量数据2.2 数据掩膜2.2 栅格计算2.3 拓展插件的使用3. 图表绘制3.1 遥感影像绘制3.2 柱状图分析图绘制3…...
操作指南:如何高效使用Facebook Messenger销售(二)
上一篇文章我们介绍了使用Facebook Messenger作为销售渠道的定义、好处及注意事项,本节我们将详细介绍怎么将Facebook Messenger销售与SaleSmartly(ss客服)结合,实现一站式管理多主页配图来源:SaleSmartly(…...
计算机三级|网络技术|中小型网络系统总体规划与设计方案|IP地址规划技术|2|3
p3 p4一、中小型网络系统总体规划与设计方案网络关键的设备选型路由器技术指标性能指标综述吞吐量背板能力丢包率时延抖动突发处理能力路由表容量服务质量网管能力可靠性和可用性1 吞吐量指路由器的包转发能力,涉及两个内容:端口吞吐量和整机吞吐量&…...
为什么一定要做集成测试?
集成测试,我们都不陌生,几乎我们产品每天都在进行。但是我们真的有好好思考:为什么一定要做集成测试吗?只是为了简单的将“积木”搭起来就行,还是有什么其他的深意? 深意可能不一定会有,但是意…...
前端:CSS
CSS基本语法规则:选择器若干属性声明 style标签:可以放到代码的任意位置处,head/body中都可以 三种写CSS的方式: 1、内部样式:使用style标签,直接把CSS写到html文件中。此时的style标签可以放到任何位置…...
CMMI—组织级过程定义(OPD)
大家好,我是Doker 多克!一、目的组织级过程定义(Organizational Process Definition, OPD)的目的在于建立并维护一套可用的组织级过程资产、工作环境标准以及团队规则与指南二、简介组织级过程资产使得整个组织具有一致…...
华为OD机试真题Python实现【猜字谜】真题+解题思路+代码(20222023)
猜字谜 题目 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如nesw,玩家需要猜出谜底库中正确的单词。 猜中的要求如下: 对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 变换顺序以后一样的,比如通过变换w和e的顺序,nwes跟news是可以完全对应的…...
软测入门(三)Selenium(Web自动化测试基础)
Selenium(Web端自动测试) Selenium是一个用于Web应用程序测试的工具:中文是硒 开源跨平台:linux、windows、mac核心:可以在多个浏览器上进行自动化测试多语言 Selenium WebDriver控制原理 Selenium Client Library…...
备战蓝桥杯——sort函数
备战蓝桥杯——sort函数排列字母lambda匿名函数排列字母 链接: 排列字母 不用多说,很简单的签到题,我们先来了解一下sort函数的用法 list.sort(cmpNone, keyNone, reverseFalse) cmp:进行比较的方法(可以自定义排序的方法,通常…...
华为机试题:HJ86 求最大连续bit数(python)
文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...
机器学习复习--logistic回归简单的介绍和代码调用
最近需要复习一下机器学习相关知识,记录一下 一、简介 线性回归:h(x)wTxbh(x)w^T x bh(x)wTxb logistic回归就是在线性模型的基础上加上一个sigmoid函数ggg,即h(x)g(wTxb)h(x)g(w^T xb)h(x)g(wTxb)。。。g(z)1/(1e−z)g(z)1/(1e^{-z})g(z)…...
uniapp小程序接入腾讯地图sdk
新建一个项目。配置uniapp配置文件设置小程序的appid注意:匿名用户可能存在地理定位失效。查uniapp官网官网->apiuni.getLocation(OBJECT) 获取当前的地理位置、速度。属性:success匿名函数返回值:uni.getLocation({type: gcj02,success: …...
总结JavaScript中的条件判断与比较运算
一、条件判断 JavaScript 中有三种方法可以用来进行条件判断: 1、使用 if-else 语句。这种方法用于在特定条件为 true 时执行一段代码,否则执行另一段代码。例如: let a 5; if (a > 10) {console.log("a is greater than 10"…...
算法练习-排序(一)
算法练习-排序(一) 文章目录算法练习-排序(一)1 排序算法1.1 冒泡排序1.1.1代码1.2插入排序1.2.1代码1.3 选择排序1.3.1代码1.4归并排序1.4.1代码1.5 快速排序1.5.1 思路1.5.2 代码2 题目2.1 特殊排序2.1.1 题目2.1.2 题解2.2 数组中的第k个最大元素2.2.1 题目2.2.2 题解2.3 对…...
CentOS7.6快速安装Docker
快速安装 官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/ 确定你是CentOS7及以上版本,yum是在线安装! [rootVM-4-5-centos ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)接下来您只管自上向下执行命令即可&#x…...
CentOS 7安装N卡驱动和CUDA和cuDNN
前言系统一开始是CentOS 7.6,安装依赖时yum给的内核文件的版本号和uname -r的结果不一样,这时不能直接装依赖,装上后后面装驱动时会报错找不到内核头文件(最开始我直接装依赖了,以为高版本兼容低版本,然后装驱动时报错…...
Java开发 - 分页查询初体验
前言在上一篇,我们对es进行了深入讲解,相信看过的小伙伴已经能基本掌握es的使用方法,我们知道,es主要针对的是搜索条件,在这方面es具有无可比拟的优势,但我们也会注意到,有时候搜索条件过于宽泛…...
C语言循环语句do while和嵌套循环语句讲解
C do…while 循环 不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do…while 循环是在循环的尾部检查它的条件。 do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。 语法 C 语言中 do…w…...
【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【7】:拼接图像
我们已经知道,图像是通过数组描述的,那么拼接图像其实就是拼接数组。NumPy提供了2个拼接数组的函数,分别是hstack函数和vstack函数,这两个拼接函数可以将两个数组水平和垂直拼接在一起,也就相当于将两幅图像水平和垂直拼接在一起,本节将详细讲解如何使用这两个函数水平拼…...
王道操作系统课代表 - 考研计算机 第二章 进程与线程 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “进程与线程” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全…...
C++修炼之练气期三层——函数重载
目录 1.引例 2.函数重载的概念 3.C支持函数重载的原理 1.引例 倘若现在要实现一个加法计算器,用C语言实现的话我们会选择这样的方式: int Add_int(int a, int b) {return a b; }double Add_double(double a, double b) {return a b; } 在使用加…...
在linux上运行jar程序操作记录
1.文件传送 使用ftp把打包后的项目jar包上传到linux服务器的目录上(这里有两个文件,一个pengning.jar,一个配置文件application.yml) 2.进入目录并运行程序 打开终端,进入pengning.jar所在的目录 [rootcampus /]# [rootcampu…...
【STM32】入门(十二):实时操作系统RTOS和通用操作系统GPOS的区别
1、简述 实时操作系统(RTOS,Real Time Operating System) 通用操作系统(GPOS,General Purpose Operating System) 2、区别 1)任务 实时操作系统:使用分时设计,其中每个任务被分配一小段时间,在切换到另一…...
2023-3-1刷题情况
在网格图中访问一个格子的最少时间 题目描述 给你一个 m x n 的矩阵 grid ,每个元素都为 非负 整数,其中 grid[row][col] 表示可以访问格子 (row, col) 的 最早 时间。也就是说当你访问格子 (row, col) 时,最少已经经过的时间为 grid[row][…...
Web前端学习:五 - 练习
四二-四八:baidu糯米 44-48 1、写法1 (1)a.movie1 .Navigation .recommend .listbanner a.movie1{background: url(img/h_1.jpg) no-repeat 63px 9px;}表示a标签且class为movie1的元素 如: <a href"#" class&quo…...
软件测试之测试用例设计方法—等价类划分法
测试用例设计方法—等价类划分法 掌握常用测试用例设计方法,再结合测试用例的要素能给快速的实现测试用例的设计和编写.但是由于软件系统大小的不同我们不可能把所有的单个或组合的情况都进行测试,所以我们测试时应该根据不同的场景设计不同的测试用例,尽可能的覆盖到全部需要…...
gdb常用命令详解
gdb常用调试命令概览和说明 run命令 在默认情况下,gdbfilename只是attach到一个调试文件,并没有启动这个程序,我们需要输入run命令启动这个程序(run命令被简写成r)。如果程序已经启动,则再次输入 run 命令…...
2022 年江西省职业院校技能大赛高职组“信息安全管理与评估”赛项样题
2022 年江西省职业院校技能大赛高职组 “信息安全管理与评估”赛项样题 一、 赛项信息 第一场比赛: 竞赛阶段 任务阶 段 竞赛任务 竞赛时 间 分值 第一阶段 任务 1 网络平台搭建 90 平台搭建与安全 任务 2 网络安全设备配置与防护 210 设备配置防护…...
射频调试的习惯
三月开工了,一个月的调试即将开始。其实调试的重心是测试,核心的推动力是做事的习惯和思维。测试很重要,数据不对,能力和时间都浪费了上面了。测试的问题初步解完了,今天吃饭的时候碰到大领导。领导好忙,我…...
centos7上安装mysql8.0
1、检查一下自己电脑上安装了哪些mysql [rootlocalhost ~]# find / -name mysql 2、把安装的mysql全部删掉 [rootlocalhost ~]# rm -rf /usr/lib64/mysql/ [rootlocalhost ~]# rm -rf /usr/local/mysql/ [rootlocalhost ~]# rm -rf /etc/selinux/targeted/active/modules/100…...
php做的网站好不好/西安百度竞价推广
配置范例站点站点序号域名目录1www.heytool.com/www/html/www.heytool.com2bbs.heytool.com/www/html/bbs.heytool.com 修改nginx 配置文件:# vi nginx.confuser nobody nobody; # 运行 nginx 的所属组和所有者 Nginx 启动关闭# /usr/local/nginx-1.0.6/sbin/ngin…...
我的专业网站建设策划书/安卓aso优化工具
广度优先搜索,深搜超时 需要判断界限,做标记,已到过的地点就不必去了 #include<cstdio> #include<iostream> using namespace std; int head0,tail1; int n,k; int f[199999]; int d[9999999]; int t[9999999]; int bfs(int w) …...
东莞网站建设包装制品/百度官网入口链接
一个左边是指针. 一个左边是实体 如果p是指针,p->function(); 如果p是对象,p.function(); 记住-〉必须是指针,.左边必须是对象或者结构体,一般是类对象 首先介绍一下C中的结构。对于一个结构来说, struct MyStruct { int mem…...
深圳汇网网站建设/搜索引擎哪个最好用
转载“共享博客” 原文 http://www.sharedblog.cn/?post120 容器溢出 语法: overflow: visible | hidden | scroll | auto | inherit; visible: 默认值,容器溢出不裁剪,正常显示; hidden: 溢出部分隐藏不可见; scroll: 当容器没有溢…...
小学网站建设工作小组/网店推广的方式
一、增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values (‘王伟华’,‘男’,‘1983/6/15’) 注意:如果…...