CDO - 统计计算的操作
本篇随笔将介绍 CDO 进行空间统计及时间统计的相关操作,包括计算 min, max, range, sum, mean, avg, std, var 等统计量
统计计算 Statistical Values
mean 和 average 的区别:计算 mean 时,只考虑非缺失值计入计算的样本;计算 average 时,缺失值当做 0 处理进行计算;
Statistical values over all variables
<operator> infile outfile
| Operators | Description |
|---|---|
| timcumsum | |
| vars<stat> | 计算每个时间步所有变量的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 |
Zonal statistical values 纬向统计
<operator> infile outfile
| Operators | Description |
|---|---|
| zon<stat> | 计算纬向的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 |
| zonskew | 计算纬向的偏度系数 |
| zonkurt | 计算纬向的峰度系数 |
| zonmedian | 计算纬向的中位数 |
| zonpctl,p | 计算纬向的百分位数 |
Meridional statistical values 经向统计
<operator> infile outfile
| Operators | Description |
|---|---|
| mer<stat> | 计算经向的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 |
| merskew | 计算经向的偏度系数 |
| merkurt | 计算经向的峰度系数 |
| mermedian | 计算经向的中位数 |
| merpctl,p | 计算经向的百分位数 |
Vertical statistical values 垂直统计
<operator>[,weights=TRUE] infile outfile
| Operators | Description |
|---|---|
| vert<stat>[,weights=TRUE] | 计算垂直层的统计值: min, max, range, sum, mean, avg, std, std1, var, var1; 参数 weights 默认为 TRUE,表示对垂直层的厚度进行加权计算 |
Statistical values over a field 区域统计
<operator>[,weights=TRUE] infile outfile
| Operators | Description |
|---|---|
| fld<stat>[,weights=TRUE] | 计算水平区域的统计值: min, max, range, sum, mean, avg, std, std1, var, var1; 参数 weights 默认为 TRUE,表示对各单元格进行 面积加权 计算 |
| fldskew[,weights=TRUE] | 计算所有水平区域的偏度系数 |
| fldkurt[,weights=TRUE] | 计算所有水平区域的峰度系数 |
| fldmedian[,weights=TRUE] | 计算所有水平区域的中位数 |
| fldpctl,p | 计算所有水平区域的百分位数 |
Statistical values over grid boxes
<operator>,nx,ny infile outfile
| Operators | Description |
|---|---|
| gridbox<stat>,nx,ny | 计算周围网格框上的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 |
| gridboxskew,nx,ny | 计算周围网格框上的偏度系数 |
| gridboxkurt,nx,ny | 计算周围网格框上的峰度系数 |
| gridboxmedian,nx,ny | 计算周围网格框上的中位数 |
例子
计算 10x10 网格的平均值:1
cdo gridboxmean,10,10 infile outfile
Statistical values over all timesteps
<operator> infile outfile
| Operators | Description |
|---|---|
| tim<stat> | 计算所有时间的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 |
| timcumsum | 计算所有时间的累计和: |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| timpctl,p | 计算所有时间的百分位数; 其中 infile2 和 infile3 为用于计算百分位数最大值和最小值的边界,即在区间 [infile2, infile3] 内计算 infile1 的百分位数 |
例子
计算所有输入时间步的 90 百分位数:1
2
3cdo timmin infile minfile
cdo timmax infile maxfile
cdo timpctl,90 infile minfile maxfile outfile等价于:
1
cdo timpctl,90 infile -timmin infile -timmax infile outfile
Time range statistical values
<operator>,nsets[,noffset[,nskip]] infile outfile
选定时间范围内的统计值
| Operators | Description |
|---|---|
| timsel<stat>,nsets[,noffset[,nskip]] | 计算选定时间范围内的统计值: min, max, range, sum, mean, avg, std, std1, var, var1; 参数 nsets :每个输出文件写入的时间步数, 步长 参数 noffset :在第一个时间步范围之前跳过的时间步数, 开始 参数 nskip :在时间步之间跳过的时间步数, 间隔 |
| timselpctl,p,nsets[,noffset[,nskip]] | 计算选定时间范围内的百分位数 |
Running statistical values 滑动统计值
<operator>,nts infile outfile
| Operators | Description |
|---|---|
| run<stat>,nts | 计算选定滑动窗口 nts 的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 |
| runpctl,p,nts | 计算选定滑动窗口 nts 的百分位数 |
Hourly statistical values 逐小时统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| hour<stat> | 计算同一小时内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| hourpctl,p | 计算同一小时内的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Daily statistical values 逐天统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| day<stat> | 计算同一天内统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| daypctl,p | 计算同一天内的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Monthly statistical values 逐月统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| mon<stat> | 计算同一月内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| monpctl,p | 计算同一月内的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Yearly statistical values 逐年统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| year<stat> | 计算同一年内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| yearpctl,p | 计算同一年内的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Yearly mean from monthly data 按月计算年平均值
<operator> infile outfile
| Operators | Description |
|---|---|
| yearmonmean | 计算 a monthly time series 的年平均值; |
Seasonal statistical values 逐季统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| seas<stat> | 计算同一季节内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| seaspctl,p | 计算同一季节内的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Multi-year hourly statistical values 多年的每小时的统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| yhour<stat> | 计算多年的同一小时、同一天(24x366)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
Multi-day hourly statistical values 不同天的每小时的统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| dhour<stat> | 计算不同天的的同一小时(24)统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
Multi-year daily statistical values 多年的每天的统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| yday<stat> | 计算多年的同一日期(366)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| ydaypctl,p | 计算多年的同一日期(366)的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Multi-year monthly statistical values 多年的每月的统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| ymon<stat> | 计算多年的同一月(12)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| ymonpctl,p | 计算多年的同一月(12)的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Multi-year seasonal statistical values 多年的每季的统计值
<operator> infile outfile
| Operators | Description |
|---|---|
| yseas<stat> | 计算多年的同一季节(4)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| yseaspctl,p | 计算多年的同一季节(4)的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Multi-year daily running statistical values 多年的逐日的滑动统计值
<operator>,nts infile outfile
| Operators | Description |
|---|---|
| ydrun<stat>,nts | 计算多年的同一天及其两侧滑动窗口范围内(366)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1 |
<operator>,p,nts infile1 infile2 infile3 outfile
| Operators | Description |
|---|---|
| ydrunpctl,p | 计算多年的同一天及其两侧滑动窗口范围内(366)的百分位数,其中 infile2 和 infile3 限制了用于计算的范围 |
Statistical values over an ensemble
<operator> infiles outfile
计算所有输入文件的统计值,所有输入文件都要具有相同变量的相同结构
| Operators | Description |
|---|---|
| ens<stat> | 计算所有输入文件的统计值: min, max, range, sum, mean, avg, std, std1, var, var1 ; 所有输入文件都需要具有相同变量的相同结构; |
| ensskew | 计算所有输入文件的偏度系数 |
| enskurt | 计算所有输入文件的峰度系数 |
| ensmedian | 计算所有输入文件的中位数 |
| enspctl,p | 计算所有输入文件的百分位数 |
例子
计算 6 个输入文件的集合平均值:1
cdo ensmean infile1 infile2 infile3 infile4 infile5 infile6 outfile
1
cdo ensmean infile[1-6] outfile
<operator> obsfile ensfiles outfile
参考 obsfile 的结构计算所有 ensfiles 的统计值输出到 outfile,所有输入文件都需要具有相同网格大小、变量定义和时间步数
| Operators | Description |
|---|---|
| ensrkhistspace | Ranked Histogram averaged over time |
| ensrkhisttime | Ranked Histogram averaged over space |
| ensroc | Ensemble Receiver Operating Characteristics |
<operator> rfile infiles outfilebase
| Operators | Description |
|---|---|
| enscrps | Ensemble Cumulative Ranked Probability Score (CRPS) and Decomposition |
| ensbrs,x | Ensemble Brier Score and Decomposition |