当前位置: 首页 > article >正文

【WRF后处理】WRF模拟效果评价及可视化:MB、RMSE、IOA、R

【WRF后处理】模拟效果评价及可视化

  • 准备工作
    • 模型评价指标
  • Python实现代码
    • Python处理代码:导入站点及WRF模拟结果
    • 可视化图形及评价指标
  • 参考

在气象和环境建模中(如使用 WRF 模型进行模拟),模型性能评价指标是用于定量评估模拟值与观测值之间偏差和拟合程度的重要工具。
本博客主要介绍 结合 WRF 模拟结果(wrfout 文件) 和 站点实测数据 进行模拟效果评价。

准备工作

1.1 WRF 模拟结果 (wrfout)
WRF 的输出文件(wrfout_d_YYYY-MM-DD_HH:MM:SS)包含了模拟结果的三维网格数据,需要提取与站点位置匹配的模拟值。提取工具常用 Python 的 NetCDF4 或 xarray 库。

1.2 站点实测数据

站点实测数据通常包含以下内容:

  • 站点经纬度:用于找到与站点位置匹配的模拟网格点。
  • 时间序列数据:如气温、降水、风速、风向等观测值,与 WRF 输出时间对应。

1.3 时间和空间对齐

  • 时间对齐:确保 WRF 输出时间和站点观测时间一致,必要时插值。
  • 空间对齐:将站点位置与 WRF 的网格点匹配(最近邻、双线性插值等)。

模型评价指标

以下是常用的四个评价指标,用于评价WRF模拟效果。
在这里插入图片描述
1、 Mean Bias(MB,平均偏差)
MB 表示模拟值与观测值之间的平均误差,反映了模型的系统性偏差。
若 MB 为正,表示模拟值总体偏高;若 MB 为负,表示模拟值总体偏低。
缺点:MB 可能会因为正负误差相互抵消而掩盖模型的实际误差大小,因此通常需要结合其他指标(如 RMSE)一起使用。

2、Root Mean Square Error(RMSE,均方根误差)
RMSE 是一个衡量模拟值与观测值之间误差幅度的指标,它反映了模型误差的整体大小。
RMSE 对误差的平方进行加权,因此对较大的误差更加敏感,能够凸显模型的极端误差。
RMSE 单位与变量一致,因此在不同变量之间比较时,需要注意单位问题。

3、Index of Agreement(IOA,一致性指数)
IOA 是一个无量纲指标,用于衡量模拟值与观测值之间的一致性。
IOA 的取值范围为 [0, 1]:

  • 1 表示模拟值与观测值完全一致。
  • 0 表示模拟值与观测值完全不相关。

缺点:IOA 对极端值较敏感。

4、 Pearson Correlation Coefficient (r,皮尔逊相关系数)
r 越接近 1:表示模拟值与观测值之间的线性关系越强,模型效果越好。
r 越接近 0:表示模拟值与观测值之间的线性关系较弱。
缺点:r 仅反映线性相关性,无法衡量偏差或误差幅度。

Python实现代码

Python处理代码:导入站点及WRF模拟结果

以下为Python处理代码,通过对比站点和WRF模拟结果,评价WRF模拟效果。

import matplotlib.pyplot as plt
import geopandas as gpd
import wrf
import os
from netCDF4 import Dataset


# 打开 WRF 输出文件
directory = "C:/Database/wrfout"                   # 替换为实际的文件夹路径
wrf_file = "wrfout_d03_2020-07-06_12_00_00"

# 合并文件夹路径和文件名
file_path = os.path.join(directory, wrf_file)

# 打开 WRF 输出文件
ncfile = Dataset(file_path)
print(f"Successfully opened: {
     file_path}")

# 提取经纬度和变量
lats = wrf.getvar(ncfile, "lat", meta=False)    # 纬度
lons = wrf.getvar(ncfile, "lon", meta=False)    # 经度
temperature = wrf.getvar(ncfile, "T2", meta=False)  # 2米温度

# 转换为 NumPy 数组
lats_np = wrf.to_np(lats)
lons_np = wrf.to_np(lons)
# 将温度从开尔文转换为摄氏度
temperature_c = wrf.to_np(temperature) - 273.15  # 转换为摄氏度


http://www.kler.cn/a/413292.html

相关文章:

  • 全景图像(Panorama Image)向透视图像(Perspective Image)的跨视图转化(Cross-view)
  • 48-基于单片机的LCD12864时间调控和串口抱站
  • Hive的基础函数
  • 安装QT6.8(MSVC MinGW)+QT webengine+QT5.15.2
  • 【计算机网络】多路转接之epoll
  • 前后端中Json数据的简单处理
  • tcp、http、rpc的区别
  • 设计模式之破环单例模式和阻止破坏
  • UPLOAD LABS | UPLOAD LABS 靶场初识
  • 工作学习:切换git账号
  • SSD(Single Shot MultiBox Detector)目标检测
  • 【R库包安装】R库包安装总结:conda、CRAN等
  • 【03】Selenium+Python 八种定位元素方法
  • js高级06-ajax封装和跨域
  • 9、深入剖析PyTorch的nn.Sequential及ModuleList源码
  • 缓存方案分享
  • C语言解决空瓶换水问题:高效算法与实现
  • NLP论文速读(CVPR 2024)|学习文本到图像生成的多维人类偏好
  • Unity C# 影响性能的坑点
  • 深度学习6
  • Qt读写Usb设备的数据
  • Linux 上 MySQL 8.0 的备份与恢复实战指南
  • vi/vim文件管理命令练习
  • 基于Spring Boot的林业产品智能推荐平台
  • 【leetcode100】最大子数组和
  • Oracle-伪劣rowid和rownumber的用法