Code Recipes
recipe.Rmd
This article contains self-contained recipes for using mqor to evaluate data against model-quality objectives.
Create Target Diagrams
Obtain Test Dataset
The code in this section could be replaced by any method for getting “MQOR-format” data into R.
# create temporary directory
tmp <- tempdir()
# download demo files
download_demo_files(dir = tmp)
# format for mqor
data_short <-
read_mqor(
file_data = file.path(tmp, "delta_shortterm.csv"),
file_attributes = file.path(tmp, "delta_attributes.csv")
)
data_long <-
read_mqor(
file_data = file.path(tmp, "delta_longterm.csv"),
file_attributes = file.path(tmp, "delta_attributes.csv")
)
# make sure every observation has a corresponding modelled value, and vice-versa
data_short <- validate_mod_obs_pairs(data_short)
data_long <- validate_mod_obs_pairs(data_long)
Nitrogen Dioxide (Hourly)
# create no2 stats
no2_short_stats <-
summarise_mqo_stats(
data_short,
pollutant = "NO2",
term = "short",
dict = mqo_dict(site = "stat_abbreviation")
)
no2_long_stats <-
summarise_mqo_stats(
data_long,
pollutant = "NO2",
term = "long",
dict = mqo_dict(site = "stat_abbreviation")
)
# create target diagram
plot_mqi_scatter(
stats_shortterm = no2_short_stats,
stats_longterm = no2_long_stats
)
Particulate Matter (Daily)
# get mean daily data
data_daily <-
data_short |>
summarise_daily(statistic = "mean")
# create statistics objects
pm10_short_stats <-
summarise_mqo_stats(
data_daily,
pollutant = "PM10",
term = "short",
dict = mqo_dict(site = "stat_abbreviation")
)
pm10_long_stats <-
summarise_mqo_stats(
data_long,
pollutant = "PM10",
term = "long",
dict = mqo_dict(site = "stat_abbreviation")
)
# create target diagram
plot_mqi_scatter(
stats_shortterm = pm10_short_stats,
stats_longterm = pm10_long_stats
)
Ozone (Max Daily 8hour)
# get 8 hour rolling ozone, then get daily max
data_8hr <-
data_short |>
mutate_rolling_mean(window_size = 8L) |>
summarise_daily(statistic = "max")
# need a "seasonal" average for ozone - lets call it May to July
data_seasonal <-
data_short |>
filter_month(months = 5:7) |>
summarise_annual()
# create statistics objects
o3_short_stats <-
summarise_mqo_stats(
data_8hr,
pollutant = "O3",
term = "short",
dict = mqo_dict(site = "stat_abbreviation")
)
o3_long_stats <-
summarise_mqo_stats(
data_seasonal,
pollutant = "O3",
term = "long",
dict = mqo_dict(site = "stat_abbreviation")
)
# create target diagram
plot_mqi_scatter(
stats_shortterm = o3_short_stats,
stats_longterm = o3_long_stats
)