CDO - 统计计算的操作

本篇随笔将介绍 CDO 进行空间统计及时间统计的相关操作,包括计算 min, max, range, sum, mean, avg, std, var 等统计量

统计计算 Statistical Values

meanaverage 的区别:计算 mean 时,只考虑非缺失值计入计算的样本;计算 average 时,缺失值当做 0 处理进行计算;

Statistical values over all variables

<operator> infile outfile

OperatorsDescription
timcumsum
vars<stat>计算每个时间步所有变量的统计值: min, max, range, sum, mean, avg, std, std1, var, var1

Zonal statistical values 纬向统计

<operator> infile outfile

OperatorsDescription
zon<stat>计算纬向的统计值: min, max, range, sum, mean, avg, std, std1, var, var1
zonskew计算纬向的偏度系数
zonkurt计算纬向的峰度系数
zonmedian计算纬向的中位数
zonpctl,p计算纬向的百分位数

Meridional statistical values 经向统计

<operator> infile outfile

OperatorsDescription
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

OperatorsDescription
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

OperatorsDescription
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

OperatorsDescription
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

OperatorsDescription
tim<stat>计算所有时间的统计值: min, max, range, sum, mean, avg, std, std1, var, var1
timcumsum计算所有时间的累计和:

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
timpctl,p计算所有时间的百分位数;
其中 infile2infile3 为用于计算百分位数最大值和最小值的边界,即在区间 [infile2, infile3] 内计算 infile1 的百分位数
  • 例子
    计算所有输入时间步的 90 百分位数:

    1
    2
    3
    cdo 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
选定时间范围内的统计值

OperatorsDescription
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

OperatorsDescription
run<stat>,nts计算选定滑动窗口 nts 的统计值: min, max, range, sum, mean, avg, std, std1, var, var1
runpctl,p,nts计算选定滑动窗口 nts 的百分位数

Hourly statistical values 逐小时统计值

<operator> infile outfile

OperatorsDescription
hour<stat>计算同一小时内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
hourpctl,p计算同一小时内的百分位数,其中 infile2infile3 限制了用于计算的范围

Daily statistical values 逐天统计值

<operator> infile outfile

OperatorsDescription
day<stat>计算同一天内统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
daypctl,p计算同一天内的百分位数,其中 infile2infile3 限制了用于计算的范围

Monthly statistical values 逐月统计值

<operator> infile outfile

OperatorsDescription
mon<stat>计算同一月内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
monpctl,p计算同一月内的百分位数,其中 infile2infile3 限制了用于计算的范围

Yearly statistical values 逐年统计值

<operator> infile outfile

OperatorsDescription
year<stat>计算同一年内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
yearpctl,p计算同一年内的百分位数,其中 infile2infile3 限制了用于计算的范围

Yearly mean from monthly data 按月计算年平均值

<operator> infile outfile

OperatorsDescription
yearmonmean计算 a monthly time series 的年平均值;
为同一年的时间步

Seasonal statistical values 逐季统计值

<operator> infile outfile

OperatorsDescription
seas<stat>计算同一季节内的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
seaspctl,p计算同一季节内的百分位数,其中 infile2infile3 限制了用于计算的范围

Multi-year hourly statistical values 多年的每小时的统计值

<operator> infile outfile

OperatorsDescription
yhour<stat>计算多年的同一小时、同一天(24x366)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

Multi-day hourly statistical values 不同天的每小时的统计值

<operator> infile outfile

OperatorsDescription
dhour<stat>计算不同天的的同一小时(24)统计值:min, max, range, sum, mean, avg, std, std1, var, var1

Multi-year daily statistical values 多年的每天的统计值

<operator> infile outfile

OperatorsDescription
yday<stat>计算多年的同一日期(366)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
ydaypctl,p计算多年的同一日期(366)的百分位数,其中 infile2infile3 限制了用于计算的范围

Multi-year monthly statistical values 多年的每月的统计值

<operator> infile outfile

OperatorsDescription
ymon<stat>计算多年的同一月(12)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
ymonpctl,p计算多年的同一月(12)的百分位数,其中 infile2infile3 限制了用于计算的范围

Multi-year seasonal statistical values 多年的每季的统计值

<operator> infile outfile

OperatorsDescription
yseas<stat>计算多年的同一季节(4)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p infile1 infile2 infile3 outfile

OperatorsDescription
yseaspctl,p计算多年的同一季节(4)的百分位数,其中 infile2infile3 限制了用于计算的范围

Multi-year daily running statistical values 多年的逐日的滑动统计值

<operator>,nts infile outfile

OperatorsDescription
ydrun<stat>,nts计算多年的同一天及其两侧滑动窗口范围内(366)的统计值:min, max, range, sum, mean, avg, std, std1, var, var1

<operator>,p,nts infile1 infile2 infile3 outfile

OperatorsDescription
ydrunpctl,p计算多年的同一天及其两侧滑动窗口范围内(366)的百分位数,其中 infile2infile3 限制了用于计算的范围

Statistical values over an ensemble

<operator> infiles outfile
计算所有输入文件的统计值,所有输入文件都要具有相同变量的相同结构

OperatorsDescription
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,所有输入文件都需要具有相同网格大小、变量定义和时间步数

OperatorsDescription
ensrkhistspaceRanked Histogram averaged over time
ensrkhisttimeRanked Histogram averaged over space
ensrocEnsemble Receiver Operating Characteristics

<operator> rfile infiles outfilebase

OperatorsDescription
enscrpsEnsemble Cumulative Ranked Probability Score (CRPS) and Decomposition
ensbrs,xEnsemble Brier Score and Decomposition