Package 'ensemblepp'

Title: Ensemble Postprocessing Data Sets
Description: Data sets for the chapter "Ensemble Postprocessing with R" of the book Stephane Vannitsem, Daniel S. Wilks, and Jakob W. Messner (2018) "Statistical Postprocessing of Ensemble Forecasts", Elsevier, 362pp. These data sets contain temperature and precipitation ensemble weather forecasts and corresponding observations at Innsbruck/Austria. Additionally, a demo with the full code of the book chapter is provided.
Authors: Jakob Messner [aut, cre]
Maintainer: Jakob Messner <[email protected]>
License: GPL-2 | GPL-3
Version: 1.0-0
Built: 2024-11-13 03:57:55 UTC
Source: https://github.com/cran/ensemblepp

Help Index


Precipitation Observations and Forecasts for Innsbruck

Description

Accumulated 18-30 hour precipitation ensemble forecasts and corresponding observations at Innsbruck. The dataset includes GEFS reforecasts (Hamill et al. 2013) and observations from SYNOP station Innsbruck Airport (11120) from 2000-01-02 to 2016-01-01.

Usage

data("temp")

Format

A data frame with 2749 rows. The first column (rain) are 12-hour accumulated precipitation observations. Columns 2-12 (rainfc) are 18-30 hour accumulated precipitation forecasts from the individual ensemble members.

Source

Observations: http://www.ogimet.com/synops.phtml.en

Reforecasts: http://www.esrl.noaa.gov/psd/forecasts/reforecast2/

References

Hamill TM, Bates GT, Whitaker JS, Murray DR, Fiorino M, Galarneau Jr TJ, Zhu Y, Lapenta W (2013). NOAA's Second-Generation Global Medium-Range Ensemble Reforecast Data Set. Bulletin of the American Meteorological Society, 94(10), 1553-1565.

Vannitsem S, Wilks DS, Messner JW (2017). Statistical Postprocessing of Ensemble Forecasts, Elsevier, to appear.

Examples

## Diagnostic plots similar to Figure 8 in Vannitsem et al. ##

## load and prepare data
data("rain")

rain <- sqrt(rain)

rain$ensmean <- apply(rain[,2:12], 1, mean)
rain$enssd <- apply(rain[,2:12], 1, sd)

## Scatterplot of precipitation by ensemble mean
plot(rain~ensmean, rain, col = gray(0.2, alpha = 0.4), 
  main = "Scatterplot")
abline(0, 1, lty = 2)

## Verification rank histogram
rank <- apply(rain[,1:12], 1, rank)[1,]
hist(rank, breaks = 0:12 + 0.5, main = "Verification Rank Histogram")

## Spread skill relationship
sdcat <- cut(rain$enssd, quantile(rain$enssd, seq(0, 1, 0.2)))
boxplot(abs(rain-ensmean)~sdcat, rain, ylab = "absolute error",
xlab = "ensemble standard deviation", main = "Spread-Skill")

## Histogram
hist(rain$rain, xlab = "square root of precipitation", main = "Histogram")

Minimum Temperature Observations and Forecasts for Innsbruck

Description

18-30 hour minimum temperature ensemble forecasts and corresponding observations at Innsbruck. The dataset includes GEFS reforecasts (Hamill et al. 2013) and observations from the SYNOP station Innsbruck Airport (11120) from 2000-01-02 to 2016-01-01.

Usage

data("temp")

Format

A data frame with 2749 rows. The first column (temp) are 12-hour minimum temperature observations. Columns 2-12 (tempfc) are 18-30 hour minimum temperature forecasts from the individual ensemble members.

Source

Observations: http://www.ogimet.com/synops.phtml.en

Reforecasts: http://www.esrl.noaa.gov/psd/forecasts/reforecast2/

References

Hamill TM, Bates GT, Whitaker JS, Murray DR, Fiorino M, Galarneau Jr TJ, Zhu Y, Lapenta W (2013). NOAA's Second-Generation Global Medium-Range Ensemble Reforecast Data Set. Bulletin of the American Meteorological Society, 94(10), 1553-1565.

Vannitsem S, Wilks DS, Messner JW (2017). Statistical Postprocessing of Ensemble Forecasts, Elsevier, to appear.

Examples

## Diagnostic plots similar to Figure 1 and 3 in Vannitsem et al. ##

## load and prepare data
data("temp")

temp$ensmean <- apply(temp[,2:12], 1, mean)
temp$enssd <- apply(temp[,2:12], 1, sd)

## Scatterplot of minimum temperature observation by ensemble mean
plot(temp~ensmean, temp, main = "Scatterplot")
abline(0, 1, lty = 2)

## Verification rank histogram
rank <- apply(temp[,1:12], 1, rank)[1,]
hist(rank, breaks = 0:12 + 0.5, main = "Verification Rank Histogram")

## Spread skill relationship
sdcat <- cut(temp$enssd, breaks = quantile(temp$enssd, seq(0, 1, 0.2)))
boxplot(abs(temp-ensmean)~sdcat, temp, ylab = "absolute error",
xlab = "ensemble standard deviation", main = "Spread-Skill")

## Histogram
hist(temp$temp, xlab = "minimum temperature", main = "Histogram")