Skip to content

Commit

Permalink
Bugfix #2449 develop pdf (#2464)
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnHalleyGotway authored Feb 27, 2023
1 parent 9b6c6de commit 87a6efe
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version: 2

# Build all formats (htmlzip, pdf, epub)
#formats: all
#formats: [pdf]
formats: [pdf]

# Optionally set the version of Python and requirements required to build your
# docs
Expand Down
49 changes: 40 additions & 9 deletions docs/Users_Guide/appendixC.rst
Original file line number Diff line number Diff line change
Expand Up @@ -765,17 +765,18 @@ where the weights are applied at each grid location, with values assigned accord
.. only:: latex

.. math::
.. math::
\text{S1\_OG} = \frac{\text{EGBAR}}{\text{OGBAR}}
\text{FGOG\_RATIO} = \frac{\text{FGBAR}}{\text{OGBAR}}
.. only:: html

.. math::
.. math::
\text{S1_OG} = \frac{\text{EGBAR}}{\text{OGBAR}}
\text{FGOG_RATIO} = \frac{\text{FGBAR}}{\text{OGBAR}}
Expand Down Expand Up @@ -989,7 +990,7 @@ Let :math:`\text{J}` be the number of categories, then both the forecast, :math:
:math:`F_m = \sum_{j=1}^m (f_j)` and :math:`O_m = \sum_{j=1}^m (o_j), m = 1,…,J`.


To clarify, :math:`F_1 = f_1` is the first component of :math:`F_m`, :math:`F_2 = f_1+f_2`, etc., and :math:`F_J = 1`. Similarly, if :math:`o_j = 1` and :math:`i < j`, then :math:`O_i = 0` and when :math:`ij`, :math:`O_i = 1`, and of course, :math:`O_J = 1`. Finally, the RPS is defined to be:
To clarify, :math:`F_1 = f_1` is the first component of :math:`F_m`, :math:`F_2 = f_1+f_2`, etc., and :math:`F_J = 1`. Similarly, if :math:`o_j = 1` and :math:`i < j`, then :math:`O_i = 0` and when :math:`i >= j`, :math:`O_i = 1`, and of course, :math:`O_J = 1`. Finally, the RPS is defined to be:

.. math:: \text{RPS} = \sum_{m=1}^J (F_m - O_m)^2 = \sum_{m=1}^J BS_m,

Expand Down Expand Up @@ -1018,11 +1019,23 @@ The score can be interpreted as a continuous version of the mean absolute error

To calculate crps_emp_fair (bias adjusted, empirical ensemble CRPS) for each individual observation with m ensemble members:

.. math:: \text{crps_emp_fair}_i = \text{crps_emp}_i - \frac{1}{2*m} * \frac{1}{m*(m-1)} \sum_{i \ne j}|f_{i} - f_{j}|
.. only:: latex

.. math:: \text{crps\_emp\_fair}_i = \text{crps\_emp}_i - \frac{1}{2*m} * \frac{1}{m*(m-1)} \sum_{i \neq j}|f_{i} - f_{j}|

.. only:: html

.. math:: \text{crps_emp_fair}_i = \text{crps_emp}_i - \frac{1}{2*m} * \frac{1}{m*(m-1)} \sum_{i \neq j}|f_{i} - f_{j}|

The overall CRPS_EMP_FAIR is calculated as the average of the individual measures. In equation form:

.. math:: \text{CRPS_EMP_FAIR} = \text{average(crps_emp_fair) } = \frac{1}{N} \sum_{i=1}^N \text{crps_emp_fair}_i
.. only:: latex

.. math:: \text{CRPS\_EMP\_FAIR} = \text{average(crps\_emp\_fair) } = \frac{1}{N} \sum_{i=1}^N \text{crps\_emp\_fair}_i

.. only:: html

.. math:: \text{CRPS_EMP_FAIR} = \text{average(crps_emp_fair) } = \frac{1}{N} \sum_{i=1}^N \text{crps_emp_fair}_i

Ensemble Mean Absolute Difference
---------------------------------
Expand All @@ -1031,11 +1044,23 @@ Called "SPREAD_MD" in ECNT output :numref:`table_ES_header_info_es_out_ECNT`

The ensemble mean absolute difference is an alternative measure of ensemble spread. It is computed for each individual observation (denoted by a lowercase spread_md) with m ensemble members:

.. math:: \text{spread_md}_i = \frac{1}{m*(m-1)} \sum_{i \ne j}|f_{i} - f_{j}|
.. only:: latex

.. math:: \text{spread\_md}_i = \frac{1}{m*(m-1)} \sum_{i \neq j}|f_{i} - f_{j}|

.. only:: html

.. math:: \text{spread_md}_i = \frac{1}{m*(m-1)} \sum_{i \neq j}|f_{i} - f_{j}|

The overall SPREAD_MD is calculated as the average of the individual measures. In equation form:

.. math:: \text{SPREAD_MD} = \text{average(spread_md) } = \frac{1}{N} \sum_{i=1}^N \text{spread_md}_i
.. only:: latex

.. math:: \text{SPREAD\_MD} = \text{average(spread\_md) } = \frac{1}{N} \sum_{i=1}^N \text{spread\_md}_i

.. only:: html

.. math:: \text{SPREAD_MD} = \text{average(spread_md) } = \frac{1}{N} \sum_{i=1}^N \text{spread_md}_i

A perfect forecast would have ensemble mean absolute difference = 0.

Expand All @@ -1057,7 +1082,13 @@ Called "BIAS_RATIO" in ECNT output :numref:`table_ES_header_info_es_out_ECNT`

The bias ratio (BIAS_RATIO) is computed when verifying an ensemble against gridded analyses or point observations. It is defined as the mean error (ME) of ensemble member values greater than or equal to the observation value to which they are matched divided by the absolute value of the mean error (ME) of ensemble member values less than the observation values.

.. math:: \text{BIAS_RATIO} = \frac{ \text{ME}_{f >= o} }{ |\text{ME}_{f < o}| }
.. only:: latex

.. math:: \text{BIAS\_RATIO} = \frac{ \text{ME}_{f >= o} }{ |\text{ME}_{f < o}| }

.. only:: html

.. math:: \text{BIAS_RATIO} = \frac{ \text{ME}_{f >= o} }{ |\text{ME}_{f < o}| }

A perfect forecast has ME = 0. Since BIAS_RATIO is computed as the high bias (ME_GE_OBS) divide by the absolute value of the low bias (ME_LT_OBS), a perfect forecast has BIAS_RATIO = 0/0, which is undefined. In practice, the high and low bias values are unlikely to be 0.

Expand Down

0 comments on commit 87a6efe

Please sign in to comment.