PDAF_diag_CRPS
This page documents the routine PDAF_diag_CRPS of PDAF, which was introduced with PDAF V2.0.
This routine computes the Continuous Ranked Probability Score (CRPS) and its decomposition into resolution and reliability. The CRPS provide information about the statistical consistency of the ensemble with the observations. In toy models, the CRPS can also be computed with regard to the true state.
Inputs are an array holding the observed ensemble and a corresponding vector of observations.
The routine can be called in the pre/poststep routine of PDAF both before and after the analysis step to compute the CRPS.
The interface is:
SUBROUTINE PDAF_diag_CRPS(dim_p, dim_ens, element, oens, obs, &
CRPS, reli, resol, uncert, status)
INTEGER, INTENT(in) :: dim_p ! PE-local state dimension
INTEGER, INTENT(in) :: dim_ens ! Ensemble size
INTEGER, INTENT(in) :: element ! ID of element to be used
! If element=0, mean values over all elements are computed
REAL, INTENT(in) :: oens(dim_p, dim_ens) ! State ensemble
REAL, INTENT(in) :: obs(dim_p) ! State ensemble
REAL, INTENT(out) :: CRPS ! CRPS
REAL, INTENT(out) :: reli ! Reliability
REAL, INTENT(out) :: resol ! resolution
REAL, INTENT(out) :: uncert ! uncertainty
INTEGER, INTENT(out) :: status ! Status flag (0=success)
Hints:
- using
elementone can select a since element of the observation vector for which the CRPS is computed (by multiple computations, it allows to computed a CRPS individually for each entry of the state vector). Forelement=0the CRPS over all elements is computed - A perfectly reliable system gives
reli=0. An informative system givesresol << uncert. - Compared to Hersbach (2000),
resolhere is equivalent toCPRS_pot. - The routine is parallelized. For
element=0it computes the CRPS, reli, and resol for the global state vector. It uses the PDAF-internal parallelization information and hence requires that PDAF was initialized with a call toPDAF_initbefore. The routine has to be called on all filter processes. - The routine uses a rather simple sorting algorithm. Accordingly, the performance is likely suboptimal for high-dimensional cases.
