,欢迎也在微信公众号查看。

背景知识

本部分内容主要是对气象站点的气温进行回归-克里金(regression-kriging,RK)插值生成气温表面图。RK方法是地统计中常用的方法,由趋势项和残差项构成。趋势项在该例中通过以气温为因变量,高程、站点到海岸线的距离为自变量,建立二着的线性模型,对残差建立克里金模型。使用RK的唯一要求是存在一个或多个与因变量显著相关的协变量。本例中将会用到七种回归算法,并利用10-fold CV来进行验证和均方根误差作为评估(Root-mean-square error,RMSE)。

10-fold CV(10-foldcross-validation),一种交叉验证方法,将数据集分成10份,轮流将其中9份用于训练,1份用于测试,循环10次,求准确度的平均值。

七种方法

  • Interpolation:

    • 普通克里金(Ordinary Kriging,OK)

      • 相关参数说明(半变异函数、变程等)
      • 可查看以下视频https://www.bilibili.com/video/BV13E411T74X/
  • Regression:
    • 广义线性模型(Generalized Linear Model,GLM)
    • 广义加性模型 (Generalized Additive Models, GAM)
    • 随机森林模型(Random Forest ,RF)
  • Regression-kriging:
    • GLM + OK of residuals
    • GAM + OK of residuals
    • RF + OK of residuals

案例实现

本例中的数据是1950-2000年95个站点每天的平均气温,辅助数据为Elevation (Elev in meters a.s.l.), Distance to the coastline (distCoast in degrees); Latitude (Lat in degrees), and, Longitude (Lon in degrees).

数据下载

https://raw.githubusercontent.com/joaofgoncalves/R_exercises_raster_tutorial/master/data/CLIM_DATA_PT.zip

数据解压至F:/test/data-raw

library(raster)

## Loading required package: sp

setwd("F:/test/data-raw")
  fl <- list.files("climData/rst", pattern = ".tif$", full.names = TRUE)
  # 创建栅格数据集合
  rst <- stack(fl)
  # 修改名字
 names(rst) <- c("distCoast", "Elev", "Lat", "Lon")
 plot(rst)

读入每个站点的气温及对应的其它变量值

climDataPT<-read.csv("climData/clim_data_pt.csv")
  climDataPT<-na.omit(climDataPT)
knitr::kable(head(climDataPT,n=10))

StationName

StationID

Lat

Lon

Elev

AvgTemp

distCoast

Sagres

1

36.98

-8.95

40

16.3

0.0000000

Faro

2

37.02

-7.97

8

17.0

0.0201246

Quarteira

3

37.07

-8.10

4

16.6

0.0090000

Vila do Bispo

4

37.08

-8.88

115

16.1

0.0360000

Praia da Rocha

5

37.12

-8.53

19

16.7

0.0000000

Tavira

6

37.12

-7.65

25

16.9

0.0458912

S. Br醩 de Alportel

7

37.17

-7.90

240

15.9

0.1853213

Vila Real Sto. Ant髇io

8

37.18

-7.42

7

17.1

0.0127279

Monchique

9

37.32

-8.55

465

15.0

0.1980000

Zambujeira

10

37.50

-8.75

106

15.0

0.0450000

将csv数据转为sp对象

proj4Str <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
statPoints <- SpatialPointsDataFrame(coords =climDataPT[,c("Lon","Lat")],
data= climDataPT,proj4string = CRS(proj4Str))
par(mfrow=c(1,2),mar=c(5,6,3,2))
plot(rst[["Elev"]], main="Elevation and weather stations",
     xlab = "Longitude", ylab="Latitude")
plot(statPoints, add=TRUE)
hist(climDataPT$AvgTemp, xlab= "Temperature (ºC)", main="Annual avg. temperature")

从上面的左图可看出站点更多的分布在低纬沿海岸地区,右图反映出气温直方图是左偏的。接下来,我们通过计算相关系数矩阵来分析下气温与其它变量相关性强度。

library(corrplot)

corMat<-cor(climDataPT[,3:ncol(climDataPT)])
  corrplot.mixed(corMat,number.cex=0.8,tl.cex=0.9,tl.col="black",
                 outline=F,mar = c(0,0,2,2),upper = "square",bg=NA)

相关系数图表明高程和纬度的相关性较大,与distCoast的相关性 较小,在建立模型的过和中,是可考虑将其删除的。

案例分析:回归-克里金方法生成气温表面图(1)相关推荐

  1. ArcGIS之克里金插值教学

    本文来自:GIS科研实验室 基本概念 1.什么是克里金插值? 克里金插值又称空间局部插值法,是以半变异函数理论和结构分析为基础,在有限区域内对区域化变量进行无偏最优估计的一种方法,是地统计学的主要内容 ...

  2. 克里金插值法(kringing)与PHPnow集成开发环境

    文章目录 摘要 1.克里金插值法 1.1 什么是克里金? 1.2 克里金法公式 1.3 公式推导 1.3.1 假设条件 1.3.2 半方差函数 1.3.3 代价函数 2.对普通克里金插值的思考 3.p ...

  3. GEE:克里金 Kriging 空间插值(以陕西省2013年生物量为例)

    作者:CSDN @ _养乐多_ 本文记录了在Google Earth Engine(GEE)平台上进行 Kriging 插值的介绍和代码案例.本文通过选取的2013年陕西省生物量样本点数据为例,利用 ...

  4. [kriging](一)网上下载的kriging克里金的C++程序的初步调试

    笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中. 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方 ...

  5. ArcGIS教程:克里金法的工作原理(二)

    根据经验半变异函数拟合模型 下一步是根据组成经验半变异函数的点拟合模型.半变异函数建模是空间描述和空间预测之间的关键步骤.克里金法的主要应用是预测未采样位置处的属性值.经验半变异函数可提供有关数据集的 ...

  6. 克里金(Kriging)插值的原理与公式推导

    转自:http://xg1990.com/blog/archives/222 学过空间插值的人都知道克里金插值,但是它的变种繁多.公式复杂,还有个半方差函数让人不知所云 本文讲简单介绍基本克里金插值的 ...

  7. MIKE水动力笔记13_数字化海图2之克里金插值

    本文目录 前言 Step 1 调出地统计分析工具 Step 2 克里金插值设置 Step 3 调整图幅范围及裁剪 Step 4 转为栅格文件并保存 前言 在进行MIKE水动力建模之初,需要准备好水深数 ...

  8. matlab克里金插值法,克里金(Kriging)插值的原理与公式推导

    学过空间插值的人都知道克里金插值,但是它的变种繁多.公式复杂,还有个半方差函数让人不知所云 本文讲简单介绍基本克里金插值的原理,及其推理过程,全文分为九个部分: 0.引言-从反距离插值说起 1.克里金 ...

  9. 15.4 普通克里金插值

    1.加载数据 2.半方差云图分析 3.克里金插值,打开空间统计向导 用象限搜索 查看均方根误差  自动优化选择模型 各向异性 查看各项指标,衡量插值效果  4.导出结果  5.按边界掩膜提取 符号化配 ...

最新文章

  1. 23个CVPR 2020收录的新数据集,都在这里了!
  2. Linxu嵌入式汇编语言
  3. 【翻译】.NET 5 Preview8发布
  4. Multiple annotations found at this line: ---关于android string.xml %问题
  5. python安装各种插件
  6. truffle unbox react 出坑指南
  7. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用
  8. Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)
  9. 无法复制_desktop:访问被拒绝的解决方法
  10. BGP(3):BGP 的路径优选
  11. Go语言实战-golang操作Mongodb
  12. linux 中meltdown指令,宇宙最强,meltdown论文中英文对照版(二)
  13. 最全UnityHub下载链接Unity2022~2017各版本+Unity5.x【间歇性更新】
  14. X上面有一道横线,怎么打出来?
  15. VIVADO中IO管脚分配 IO PLANING
  16. 如何扩充C盘空间,不需要删除其余盘的任何东西。
  17. Intellij IDEA2019版激活方式
  18. Python处理PDF——PyMuPDF的安装与使用(1)
  19. GDKOI2018爆炸记
  20. 221. k8s_v1.15addons插件部署

热门文章

  1. Docker容器——重命名镜像的TAG
  2. js 获取数组最后一个元素
  3. 金融行业部分公司待遇汇总
  4. python中不等于号_python的不等于号是什么
  5. 信号与系统(三):系统分析方法对比:微分方程 相量 傅里叶级数/变换 拉普拉斯变换
  6. 逻辑与() 逻辑或(||)
  7. 算法总结(六)Isomap(Isometric mapping等度量映射)和LLE(Locally Linear Embedding)的理解
  8. 论文投稿指南——中文核心期刊推荐(计算机技术)
  9. Xshell国内免费下载
  10. dos攻击的工具——pentmenu