Deterministic verification

Andrew Singleton

17/02/2022

Introduction

  • The next 2 sessions are the most important if you are only interested in point verification
  • The entire workflow will be demonstrated
  • You can get away with ignoring everything that came before and will come after these 2 sessions

Another new package

Today we will be using another new package - patchwork for controlling plot layouts. You can install it with install.packages("patchwork")

Outputing interpolated data

  • read_forecast() and read_obs() have an output_file_opts argument
  • All you need to do is to pass something to to that argument
    • sqlite_opts() for read_forecast() (will probably become fctable_opts())
    • obstable_opts() for read_obs()
  • Generally you just need to set the path to the output in sqlite_opts() / obstable_opts()

Examples

Read in interpolated forecast data

  • read_point_forecast() is used
  • NOTE it takes start_date and end_date as the first arguments. This will change to date_times soon
  • You need to tell it if it is ensemble or deterministic forecast data. This will be removed soon
  • Must include fcst_model and parameter - only one parameter can be read at a time
  • Can also choose lead_time, stations
  • Precipitation accumulation is done at read time

Examples

Preparing data for verification

  • If verifying more than one model, you should only choose the common cases
  • This is done with the common_cases() function

Reading in point observations

  • This is done with the read_point_obs() function
  • NOTE it takes start_date and end_date as the first arguments. This will change to date_times soon
  • It can get the dates it needs from the forecast data
  • … as well as the stations

Join

  • Once you have the forecast and observations you join them together with join_to_fcst()
  • The function will check that the forecasts and observations have same units

Examples

Scatter plot

  • Before running the verification you make scatter plots of forecasts vs observations using plot_scatter()
  • It can only plot one forecast model at a time (faceting coming soon!)
  • However the patchwork package can be used to arrange the scatter plots

Examples

Verify

  • Verify with det_verify() giving it the joined data and the name of the observations column
  • The observations column (parameter) argument is unquoted - if you use a variable it must be wrapped in {{ }}
  • Categorical scores are computed by adding thresholds

Examples

Plot scores

  • plot_point_verif() is used
  • It takes the output of det_verify() and the name of the score
  • The name of the score is unquoted so if using a variable it must be wrapped in {{ }}
  • Line colours can be changed by passing a data frame with the colour_table argument
  • For categorical scores the plot must be filtered or faceted with the filter_by or facet_by arguments
  • The contents of filter_by and facet_by must be wrapped inside vars()
  • Categorical scores can be plotted as a function of lead time or threshold

Examples

The point verification web app

  • You can save your verification data using save_point_verif()
  • You can then open an app to display your scores using shiny_plot_point_verif()
  • (Shiny is the R package that powers the app)

The workflow

  • The verification workflow can be summarized as:
    • Read
      • forecast
      • obs
    • Join
    • (scatter plots)
    • Verify
    • (Plot)
    • Save
    • Open app