{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "18517e3a-e898-4a19-826b-c417fcbc5f47", "metadata": { "tags": [] }, "source": [ "# Continuous Ranked Probability Score (CRPS)" ] }, { "cell_type": "markdown", "id": "54e7f1a6", "metadata": {}, "source": [ "A cumulative distribution function or CDF is a function of the probability of non-exceedence. It is relevant to real-valued parameters such as temperature, rainfall amount, wind speed etc.\n", "\n", "Forecasts expressed as the probability of not exceeding various thresholds (i.e. expressed as a CDF) can be compared to observations via the `crps_cdf` function. This works best when there are sufficient thresholds to treat the CDF as a continuous function.\n", "\n", "An ensemble of scalar forecasts, designed to represent the range of possibilities, can be compared to observations via the `crps_for_ensemble` function. There is another tutorial specific to this. \n", "\n", "The CRPS may be considered as the Mean Absolute Error of the forecast distribution with respect to the observed distribution. Smaller values represent more accurate forecasts.\n", "\n", "Further reading can be found at \n", "\n", " - Matheson, J. E., and R. L. Winkler, 1976: Scoring rules for continuous probability distributions.\n", " Manage. Sci.,22, 1087–1095. https://doi.org/10.1287/mnsc.22.10.1087\n", " - Gneiting, T., & Ranjan, R. (2011). Comparing Density Forecasts Using Threshold- and\n", " Quantile-Weighted Scoring Rules.\n", " Journal of Business & Economic Statistics, 29(3), 411–422. https://doi.org/10.1198/jbes.2010.08110" ] }, { "cell_type": "code", "execution_count": 1, "id": "9859bbe2", "metadata": {}, "outputs": [], "source": [ "from scores.probability import crps_cdf\n", "import matplotlib.pyplot as plt\n", "\n", "import numpy\n", "import scipy\n", "import xarray" ] }, { "cell_type": "markdown", "id": "cebf8e7e", "metadata": {}, "source": [ "## Using the `crps_cdf` function" ] }, { "cell_type": "code", "execution_count": 2, "id": "55655ec1", "metadata": {}, "outputs": [], "source": [ "# Uncomment the following line and run to read the documentation regarding the crps_cdf funtion in scores.\n", "# crps_cdf?" ] }, { "cell_type": "markdown", "id": "6d36a4e2", "metadata": {}, "source": [ "For the purpose of this tutorial, we will create a probabilistic forecast of temperature based on a normal distribution which we will compare to a single verifying observation." ] }, { "cell_type": "code", "execution_count": 3, "id": "872d973f-f0e6-44f4-9df6-10923e5d5bf9", "metadata": { "tags": [] }, "outputs": [], "source": [ "fcst_thresholds = numpy.linspace(-2, 8, 100) # Let's consider a range of forecast values between -2 and 8 degrees" ] }, { "cell_type": "code", "execution_count": 4, "id": "339868a7-0be6-4171-882b-312094dd0f53", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Probability Density')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's imagine the temperature will probably be around 3 degrees. We may imagine our forecast as per this graph \n", "fcst_pdf = scipy.stats.norm.pdf(fcst_thresholds, loc=3)\n", "plt.figure(figsize=(4, 3))\n", "plt.plot(fcst_thresholds, fcst_pdf)\n", "plt.xlabel(\"Temperature\")\n", "plt.ylabel(\"Probability Density\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "360baf19-3820-4dbb-aeb2-bcaaa8f0d589", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Probability')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# We show the same function as a cumulative distribution function (CDF). \n", "# Each point on this CDF gives the probability that the temperature will be X or lower.\n", "# It is certain (probability 1) that the the temperature will be 6 or less. \n", "# It is pretty likely the temperature will be no more than 4 degrees. \n", "# There is a 50% chance of it being no more than 3 degrees.\n", "fcst_cdf = scipy.stats.norm.cdf(fcst_thresholds, loc=3)\n", "plt.figure(figsize=(4, 3))\n", "plt.plot(fcst_thresholds, fcst_cdf)\n", "plt.title(\"Chance of non-exceedance\")\n", "plt.xlabel(\"Temperature\")\n", "plt.ylabel(\"Probability\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "17470be9-8a82-4847-aab8-47ec54ea0d45", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Probability')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's say we observed a temperature of 4.5 degrees. \n", "# Once we know the observation is 4.5, there is no chance of it being less than 4.4 degrees\n", "# There is 100% chance of observing less than 4.6 degrees.\n", "# The perfect forecast would have been a step function at temperature = 4.5. \n", "observed = 4.5\n", "observed_cdf = numpy.heaviside(fcst_thresholds-observed, 1)\n", "plt.figure(figsize=(4, 3))\n", "plt.plot(fcst_thresholds, observed_cdf)\n", "plt.title(\"Chance of non-exceedance (observation)\")\n", "plt.xlabel(\"Temperature\")\n", "plt.ylabel(\"Probability\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "d234466d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAE8CAYAAAAsfWGYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABaSklEQVR4nO3deVxU1fvA8c9l2GVxQ3BBwR1TcTc1MxNDK0vtm6aWS2q/SnMhcymVzIyyUnJJUxOtNC2XNkszcimX3Ml9BTEXBBcQUAZmzu8PZWQEZBEdmHner9e8dO7c5Zm58HDmueeeoymlFEIIIWyCnaUDEEII8eBI0hdCCBsiSV8IIWyIJH0hhLAhkvSFEMKGSNIXQggbIklfCCFsiCR9IYSwIZL0hRDChkjSt0KapjF06FBLh2FxycnJDBo0CB8fHzRNY8SIEZYOSdzy2GOP8dhjj1k6DJskSb8EOXnyJP/3f/9H9erVcXZ2xsPDgzZt2vDZZ59x/fp1S4dX7HzwwQcsWrSI1157ja+//pqXXnrJ0iEJYXH2lg5A5M+aNWt4/vnncXJyom/fvtSvXx+9Xs/ff//NW2+9xcGDB5k3b56lwyxW/vzzTx5++GFCQ0MtHYoQxYYk/RIgOjqaF154gWrVqvHnn39SsWJF02tDhgzhxIkTrFmzxoIRFk8XL16kXr16lg5DiGJFyjslwNSpU0lOTubLL780S/iZatasyfDhw7Mt/+GHH6hfvz5OTk489NBDrF271uz106dP8/rrr1OnTh1cXFwoV64czz//PDExMWbrLVq0CE3T2LJlCyEhIXh5eVGqVCm6detGfHx8tuP+9ttvtGvXDnd3dzw8PGjevDlLly41W+eff/6hU6dOeHp64urqSrt27diyZUu+Po+LFy8ycOBAvL29cXZ2JjAwkMWLF5te37hxI5qmER0dzZo1a9A0DU3Tsr2vrDKvg+T1mQHs3buXzp074+HhgZubGx06dGD79u339Jnl5ptvvqFp06a4uLhQtmxZXnjhBc6cOWN6PSIiAk3TWLhwodl2H3zwAZqm8euvv5qWXb16lZEjR+Ln54eTkxNVqlShb9++JCQkmNZJS0sjNDSUmjVr4uTkhK+vL6NHjyYtLa3AsWWaN28eNWrUwMXFhRYtWvDXX39lW0ev1zNx4kSaNm2Kp6cnpUqVom3btmzYsMFsvZiYGDRN45NPPjHt18nJiebNm7Nz585s+z1y5Ag9evTAy8sLFxcX6tSpwzvvvGO2ztmzZ3n55Zfx9vY2nfc7P0+rokSxV7lyZVW9evV8rw+owMBAVbFiRTV58mQVHh6uqlevrlxdXVVCQoJpve+//14FBgaqiRMnqnnz5qm3335blSlTRlWrVk2lpKSY1ouIiFCAaty4sXr88cfVzJkz1Ztvvql0Op3q0aOH2bEjIiKUpmmqfv36asqUKWr27Nlq0KBB6qWXXjKtExkZqRwdHVWrVq3Up59+qqZPn64aNmyoHB0d1T///HPX95aamqoCAgKUg4ODGjlypJoxY4Zq27atAlR4eLhSSqkLFy6or7/+WpUvX141atRIff311+rrr79WycnJ9/yZHThwQJUqVcq03ocffqj8/f2Vk5OT2r59e6E+s9y8//77StM01bNnT/X555+rSZMmqfLlyys/Pz915coV03pPP/208vT0VLGxsUoppf7991/l6OioBg4caFrn2rVrqn79+kqn06nBgwerOXPmqMmTJ6vmzZurvXv3KqWUMhgM6oknnlCurq5qxIgR6osvvlBDhw5V9vb26tlnny1UbAsWLFCAat26tZoxY4YaMWKEKl26tKpevbpq166dab34+HhVsWJFFRISoubMmaOmTp2q6tSpoxwcHEzxKaVUdHS06XOtWbOm+uijj9TUqVNV+fLlVZUqVZRerzetGxUVpTw8PFS5cuXUuHHj1BdffKFGjx6tGjRoYFrnwoULqkqVKsrX11e99957as6cOeqZZ55RgJo+fXq+zlNJI0m/mEtMTFRAtl+6uwGUo6OjOnHihGlZVFSUAtTMmTNNy1JTU7Ntu23bNgWor776yrQsM4EFBQUpo9FoWj5y5Eil0+nU1atXlVJKXb16Vbm7u6uWLVuq69evm+03czuj0ahq1aqlgoODzfaVmpqq/P39VceOHe/63sLDwxWgvvnmG9MyvV6vWrVqpdzc3FRSUpJpebVq1dRTTz111/1lyu9n1rVrV+Xo6KhOnjxpWnbu3Dnl7u6uHn30UdOy/H5muYmJiVE6nU5NmTLFbPn+/fuVvb292fLz58+rsmXLqo4dO6q0tDTVuHFjVbVqVZWYmGhaZ+LEiQpQq1atynaszPi+/vprZWdnp/766y+z1+fOnasAtWXLlgLFptfrVYUKFVSjRo1U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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# We now compare the forecast cdf to the cdf representing the observation.\n", "# The area of the difference between the two curves is the CRPS.\n", "plt.figure(figsize=(4, 3))\n", "plt.plot(fcst_thresholds, observed_cdf, label='Observation')\n", "plt.plot(fcst_thresholds, fcst_cdf, label='Forecast')\n", "plt.fill_between(fcst_thresholds, fcst_cdf, observed_cdf, color='gray', label='area for CRPS')\n", "plt.title(\"Chance of non-exceedance\")\n", "plt.xlabel(\"Temperature\")\n", "plt.ylabel(\"Probability\")\n", "plt.legend(loc=\"upper left\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "55c8a7f9-9b18-483b-b407-54b43bad007c", "metadata": { "tags": [] }, "outputs": [], "source": [ "# To use the crps_cdf function we need the forecast to be an xarray with values giving the cdf (probability) at each of many thresholds (degrees C in this example)\n", "fcst_array = xarray.DataArray(coords={'temperature': fcst_thresholds}, data=fcst_cdf)\n", "\n", "# The observation is the value, but again provided in an xarray. We don't have to provide it as a CDF.\n", "obs_array = xarray.DataArray(4.5)\n", "\n", "# When working with real data you are likely to have coordinates for the forecast and observation representing the \n", "# location and time, allowing you to assess many forecasts at once." ] }, { "cell_type": "code", "execution_count": 9, "id": "f5940e15-8409-4a8f-8ff1-3ab0f37d2584", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "0.994" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Here we calculate the CRPS for the forecast and observation above.\n", "# Although not true in this example, the forecast might have had several dimensions. \n", "# We need to specify which forecast dimension provides the thresholds for calculating the CRPS. \n", "crps_cdf(fcst_array, obs_array, threshold_dim='temperature').total.values.round(3)" ] }, { "cell_type": "markdown", "id": "1defa525", "metadata": {}, "source": [ "### Using the `threshold_weight` functionality\n", "\n", "Imagine you are interested in how severe a frost will be. Once the screen temperature is 4C or lower a ground frost is plausible. So, you do not care if the forecast and observations are both above 4C, but want to assess the forecast when it or the observation is less than 4C. In this case, make a weighting function of 1 for forecast thresholds below 4, and 0 above 4 as below.\n", "\n", "Note that the threshold_weights are different to weights that might be applied based on location (for example)." ] }, { "cell_type": "code", "execution_count": 10, "id": "d2639f61", "metadata": {}, "outputs": [], "source": [ "threshold_weights = xarray.DataArray(coords={'temperature': fcst_thresholds}, data=[1.0]*60 + [0]*40)" ] }, { "cell_type": "code", "execution_count": 11, "id": "6804240c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/fp19QMAwMfHh02bNjFq1Ci++uorqlWrxrJly4qtj35ZdvHiRVq2bImfnx/ff/89Pj4+nDp1ig8++IDff/+d/fv3U7FixScel06nQ1GUErs4bm1tjZubW4ns29zc32floTKSITk2uzafw9Iuu8ZuVz67uUYq3YSZSUxMFIBITEzMtS4tLU2cPn1apKWlqcv0er1Iycg0ykOv1xf4vDp16iSqVasmUlNTDZZfv35d2NvbiyFDhgghhPDy8hKfffaZ6N27t7C3txceHh5i3rx5Buc7ceJE4enpKaytrYW7u7t477331PXp6eni/fffFx4eHsLe3l40b95cbN++XV0fFhYmnJ2dxc8//yz8/f2FRqMRixcvFjY2NuLOnTsGsQ0fPly0b99eCCFEfHy86N27t/Dw8BB2dnaiXr16YvXq1WrZfv36CbLzkvqIjo4W27dvF4DBvtetWyfq1q0rrK2thZeXl5gxY4bBcb28vMSUKVPEgAEDhIODg/D09BSLFy8u8GttqqJu3BXHr9wRt1Mycq/MTBPiVpQQV4/897gdLURGSrHHkdf/ofRoj8prD5Lft/KRlqmj7oStRjn26c8CsbfO/y26ffs2W7duZcqUKbkuaLu5udGnTx/Wrl3LggULAPjyyy/56KOPmDRpElu3bmXEiBH4+fnx/PPPs379embPns2aNWt46qmniI2N5fjx4+r+goKCOH36NGvWrMHDw4ONGzfSqVMnTpw4Qa1atQBITU1l2rRpLFu2jEqVKlGtWjUmTJjA+vXrGThwIJD9DWDt2rVMmTIFgPT0dAICAhgzZgxOTk5s2rSJt956C19fX5o3b85XX33FuXPnqFevHp999hkALi4uxMTEGJzv4cOH6dmzJ59++im9evVi7969DB06lEqVKhkM1zFz5kwmT57MRx99xLp163j33Xdp27YttWvXLtybZIIM6vl6fXbNPvkG6ncB+0rg4Jp9MVYqc2TSNwHnz59HCIG/v3+e6/39/blz5w43b94EoHXr1owdOxYAPz8/9uzZw+zZs3n++ee5fPkybm5udOzYESsrK6pXr07z5s0BuHz5MmFhYVy+fBkPDw8ARo8ezZYtWwgLC2Pq1KkAZGZmsmDBAho2bKjG0Lt3b1avXq0m/fDwcBISEnjttdcAqFq1KqNHj1bLv/fee2zdupUffviB5s2b4+zsjLW1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# The area with weight 0 is not included in the CRPS calculation.\n", "# The area contributing to the CRPS calculation is shown below\n", "plt.figure(figsize=(4, 3))\n", "plt.plot(fcst_thresholds, observed_cdf, label='Observation')\n", "plt.plot(fcst_thresholds, fcst_cdf, label='Forecast')\n", "plt.fill_between(fcst_thresholds[fcst_thresholds<=4], fcst_cdf[fcst_thresholds<=4], observed_cdf[fcst_thresholds<=4], color='gray', label='threshold-weighted CRPS')\n", "plt.title(\"Chance of non-exceedance\")\n", "plt.xlabel(\"Temperature\")\n", "plt.ylabel(\"Probability\")\n", "plt.legend(loc=\"upper left\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "1c16d3cb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.639" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Calculate the area of the threshold-weighted CRPS\n", "crps_cdf(fcst_array, obs_array, threshold_dim='temperature', threshold_weight=threshold_weights).total.values.round(3)" ] }, { "cell_type": "markdown", "id": "0332baff", "metadata": {}, "source": [ "### Things to try next\n", "\n", "* Try modifing the forecast or observation in the example above to explore the response of the CRPS \n", "* Use crps_cdf with some forecasts and observations with extra dimensions in space and/or time. \n", "* Use the preserve_dims option to provide the CRPS in a less summarised version across the extra dimensions. \n", "* Compare the two integration methods, using limited forecast thresholds to make the difference more obvious. \n", "* Try more complicated threshold_weights than presented above. \n" ] }, { "cell_type": "markdown", "id": "0777b773", "metadata": {}, "source": [ "Note that there are several tools in `scores` to help with pre-processing CDF data available in `scores.processing.cdf`." ] }, { "cell_type": "markdown", "id": "6f8ccc0e", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.6" } }, "nbformat": 4, "nbformat_minor": 5 }