【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 # 转换为摄氏度