泰勒图(Taylor Diagrams)和常用模型评价指标小结

2023-10-28

文章内容仅用于自己知识学习和分享,如有侵权,还请联系并删除 :)

(一)泰勒图

1. 原理

1.1 定义

泰勒图(Taylor diagram) 可以简单的理解为一种的可同时展示相关系数(their correlation)、中心均方根误差(their centered root-mean-square difference )、标准差(the amplitude of their variations , represented by their standard deviations) 三个指标的可视化图表 [1]。

在做模型相关的工作时,我们经常会需要比较模拟效果。当使用多个模型时,看那个模型的模拟效果更好些,模拟误差更小,仅仅画散点图进行比较是不直观的。Taylor Diagram 泰勒图是一种可以直观进行模型比较的方法。它巧妙利用三角函数几何原理,把三种评价模型的指标在一张图上展现 [4]。

1.2 我们为什么要用泰勒图验证模型模拟精度?

这里主要介绍为三个指标所代表的含义为什么选择以上三个指标 [1][2]。

1) 相关系数(their correlation)

在这里插入图片描述

2) 中心均方根误差(their centered root-mean-square difference )

在这里插入图片描述

3) 标准差 (the amplitude of their variations , represented by their standard deviations)

在这里插入图片描述

4) 为什么选择这三个指标?

  • 为了研究两个变量在变化过程中的相似程度,我们引入了相关系数。如下图可知,情况1和情况2中,X(红)和 Y(绿)的 同步率都很高,意味着情况1和情况2,X和Y的相关系数都很高。

  • 但是在X、Y两个变量同向变化时候,X变化的幅度不一样。 这时候就需要引入中心均方根误差和标准差来描述变化的幅度。(详细描述可参考[1] link

在这里插入图片描述

2. 案例解读

这里以评估GPP模型表现为例,介绍泰勒图的应用,具体描述可见 [2] link

简单来说,泰勒图能够直观地展示下述的四种信息

  • 模型值与真实值之间的相关系数(R)
  • 模型值的标准差(std)
  • 真实值的标准差(std)
  • 模型值与真实值的中心均方根误差(RMSE)

(二)绘制方法

这里主要介绍基于R语言的绘制方法 [7]。

step1: 安装 package

# R-openair包是一个提供空气质量数据(air quality data)的第三方包,其提供的TaylorDiagram() 绘图函数就可以很好的绘制泰勒图
  
install.package("tidyverse")
install.package("openair")

step2: 示例代码

library(openair) 
library(tidyverse)

# Step2-1: 加载数据
dat <- selectByDate(mydata, year = 2003)
dat <- data.frame(date = mydata$date, obs = mydata$nox, mod = mydata$nox)

dat <- transform(dat, month = as.numeric(format(date, "%m")))
mod1 <- transform(dat, mod = mod + 10 * month + 10 * month * rnorm(nrow(dat)),
                  model = "model 1")
# model 1
mod1 <- transform(mod1, mod = c(mod[5:length(mod)], mod[(length(mod) - 3) :
                                                          length(mod)]))

# model 2
mod2 <- transform(dat, mod = mod + 7 * month + 7 * month * rnorm(nrow(dat)),
                  model = "model 2")
# model 3
mod3 <- transform(dat, mod = mod + 3 * month + 3 * month * rnorm(nrow(dat)),
                  model = "model 3")

mod.dat <- rbind(mod1, mod2, mod3)


# Step2-2: 可视化绘制 (结果见下方)

## -----------------------------
## (1) basic Taylor plot 
## -----------------------------
TaylorDiagram(mod.dat, obs = "obs", mod = "mod", group = "model")


## -----------------------------
## (2) Taylor plot by season 
## -----------------------------
TaylorDiagram(mod.dat, obs = "obs", mod = "mod", group = "model", type = "season")


## -----------------------------
## (3) now show how to evaluate model improvement (or otherwise)
## ----------------------------- 
mod1a <- transform(dat, mod = mod + 2 * month + 2 * month * rnorm(nrow(dat)),
                   model = "model 1")
mod2a <- transform(mod2, mod = mod * 1.3)
mod3a <- transform(dat, mod = mod + 10 * month + 10 * month * rnorm(nrow(dat)),
                   model = "model 3")
mod.dat2 <- rbind(mod1a, mod2a, mod3a)
mod.dat$mod2 <- mod.dat2$mod

## now we have a data frame with 3 models, 1 set of observations
## and TWO sets of model predictions (mod and mod2)

## do for all models
TaylorDiagram(mod.dat, obs = "obs", mod = c("mod", "mod2"), group = "model")


## -----------------------------
## (4) all models, by season
## -----------------------------
TaylorDiagram(mod.dat, obs = "obs", mod = c("mod", "mod2"), group = "model",
              type = "season")

## -----------------------------
##(5) consider two groups (model/month). In this case all months are shown by model
## but are only differentiated by model.
## -----------------------------
TaylorDiagram(mod.dat, obs = "obs", mod = "mod", group = c("model", "month"))

step3: 输出变量展示

(1) dat
在这里插入图片描述

(2) mod1
在这里插入图片描述

(3) mod2
在这里插入图片描述

step4: 绘制生成的图

(1)basic Taylor plot
在这里插入图片描述

(2) Taylor plot by season

在这里插入图片描述
(3) now show how to evaluate model improvement (or otherwise)

在这里插入图片描述

(4) all models, by season

在这里插入图片描述

(5) consider two groups (model/month). In this case all months are shown by model but are only differentiated by model

在这里插入图片描述

(三)Reference

[1] 科学网: 我们为什么要用泰勒图验证模型模拟精度?: link (原理)

[2] 知乎: 带散点标注的泰勒图绘制(Taylor Diagram)——R语言: link (原理和案例)

[3] 知乎:泰勒图(Taylor Diagrams)原理及绘制 link

[4] 科学网:Use R: 画泰勒图 Taylor Diagram,模型比较一目了然: link (原理)

[5] CSDN: 泰勒图(Taylor diagram): link

[6] 超干货 | 泰勒图(Taylor diagram)绘制方法大汇总: link

[7] R package和案例:link

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泰勒图(Taylor Diagrams)和常用模型评价指标小结 的相关文章

  • 51单片机(硬件结构)并行I/O端口

    I O端口结构及功能 1 MCS 51单片机有4个8位并行I O端口 P0 P1 P2 P3 2 每个口包含 锁存器 输出驱动器 输入缓存器 3 具有字节寻址和位寻址功能 4 在访问片外扩展存储器时 低8位地址和数据由P0口 分时传送 高8

随机推荐

  • DDR3总结笔记

    注 学习 交流就在博主的个人weixin公众号 FPGA动力联盟 留言或直接 博主weixin fpga start 私信 完整的参考工程源码在某宝有售 https item taobao com item htm ft t id 6832
  • JAVA形参可变数量参数

    public class test public void info int nums for int num nums System out println num public static void main String args
  • linux /etc/profile bashrc bash_profile

    文件 etc profile bashrc 和 bash profile 的使用区别 etc profile 全局 环境变量等 在机器重启后执行一次 用于设置环境变量 更改一些内核参数等命令 etc bashrc 全局登陆 变量 如 ali
  • 为Android添加HAL模块

    1 每个硬件抽象层模块在内核中都对应一个驱动程序 硬件抽象层模块就时通过这些驱动程序来访问硬件设备的 它们是通过读写设备文件来进行通信的 硬件抽象层中的模块接口源文件一般保存在hardware libhardware目录中 为了方便起见 我
  • 关于exe文件无法执行的解决方式小结

    昨天学习时候用到Apache 下载安装之后 用对应的exe文件无法打开 服务器一直打不开 我就好奇怎么样才能解决这个问题 先在网上百度了一些方法 通过修改注册表方式 步骤如下 新建记事本 将下面这段代码保存进去 然后另存为将其修改为恢复可执
  • ovs tag

    ovs tag 下发正常转发流表 sh ovs ofctl add flow s1 action normal action NORMAL的流表意思是该交换机配置成一个正常传统交换机工作 ovs交换机有两种工作模式 SDN模式和传统模式 传
  • python assert用法

    1 assert语句用来声明某个条件是真的 2 如果你非常确信某个你使用的列表中至少有一个元素 而你想要检验这一点 并且在它非真的时候引发一个错误 那么assert语句是应用在这种情形下的理想语句 3 当assert语句失败的时候 会引发一
  • Qt学习笔记——界面文件的使用

    一 界面文件的使用 1 独立的ui文件 使用uic命令把ui文件编译成 h文件 uic xxx ui o xxx h 2 在集成开发环境中使用 1 Qt构造器会把xxx ui文件生成 ui xxx h 文件 且会有一个xxx h xxx c
  • (转载)STM32与LAN9252构建EtherCAT从站

    目录 一 项目简介 EtherCAT及项目简述 LAN9252工作模式 整体开发流程 移植要处理的问题 代码层面的工作 开发中使用的工具 二 SSC的使用 SSC简介和下载 SSC构建协议栈文件和XML 三 LAN9252的XML文件 Et
  • postgresql常用函数>序列函数nextval():设置主键自动增长

    主键一般设置为Integer类型 并且自动增长 起始值为1 增量为1 有两种方法 法一 在建表时 nextval 表名 主键 seq regclass 法二 如果表已经建好 CREATE SEQUENCE 表名 主键 seq START W
  • anaconda jupyter-notebook

    文章目录 仓库镜像配置 新建python 环境 jupyter notebook 仓库镜像配置 conda config add channels https mirrors tuna tsinghua edu cn anaconda pk
  • 程序员必备的25个好网站汇总

    一 技术提升 0 GitHub 程序员托管代码的平台 很多开发者都会在上面找各种各样的开源项目来学习 阿里 腾讯 字节跳动 美团 Google Micosoft等国内外大厂都有自己的Github开源库 1 StackOverflow 一个强
  • 蓝桥杯单片机学习日记4-串口接收与发送,解决串口引脚与按键引脚冲突

    此片文章用于记录蓝桥杯单片机的学习 串口的发送与接收较为简单 主要是字节和字符串的发送与接收 直接上程序 串口初始化 void UartInit void 9600bps 11 0592MHz SCON 0x50 8位数据 可变波特率 AU
  • MySQL数据库是非关系_MySQL(数据库)基础知识、关系型数据库yu非关系型数据库、连接认证...

    什么是数据库 数据库 Database 存储数据的仓库 高效地存储和处理数据的介质 介质主要是两种 磁盘和内存 数据库系统 DBS Database System 是一种虚拟系统 将多种内容关联起来的称呼 DBS DBMS DB DBMS
  • 汇编语言(王爽)第四版学习1

    第一章 机器语言 0 1 简单语句 mov ax bx 汇编语言组成 1 汇编指令 机器码的助记符 有对应的机器码 2 伪指令 没有对应的机器码 由编译器执行 计算机并不执行 3 其他符号 如 等 由编译器识别 没有对应的机器码 存储器 内
  • SpringCloud微服务---Nacos配置中心

    1 Nacos Config 服务配置 1 1 服务配置中心介绍 首先我们来看一下 微服务架构下关于配置文件的一些问题 1 配置文件相对分散 在一个微服务架构下 配置文件会随着微服务的增多变的越来越多 而且分散在各个微服务中 不好统一配置和
  • 007 数据结构_堆——“C”

    前言 本文将会向您介绍关于堆Heap的实现 具体步骤 tips 本文具体步骤的顺序并不是源代码的顺序 typedef int HPDataType typedef struct Heap HPDataType a int size int
  • 04Python爬虫:retrying模块

    代码 结果 None 转载于 https www cnblogs com jumpkin1122 p 11521013 html
  • 勇担重任从不放弃——一个阿里P7的内部求职故事

    Java开发程序员在互联网行业中名声在外 同时也意味着竞争特别激烈 当然 在众多从业者中 并不是每个人都可以经历从Java外包到成为阿里P7这样的成功故事 不过 这个同志通过自己坚定的信仰和勤奋的努力 不仅完成了自己的进步增值 而且分享了成
  • 泰勒图(Taylor Diagrams)和常用模型评价指标小结

    文章内容仅用于自己知识学习和分享 如有侵权 还请联系并删除 一 泰勒图 1 原理 1 1 定义 泰勒图 Taylor diagram 可以简单的理解为一种的可同时展示相关系数 their correlation 中心均方根误差 their