Learn R Programming

ensembleMOS (version 0.8.2)

controlMOScsg0: Control parameters for censored and shifted gamma EMOS models

Description

Specifies a list of values controling the censored and shifted gamma EMOS fit of ensemble forecasts.

Usage

controlMOScsg0(scoringRule = c("crps", "log"),
               optimRule = c("Nelder-Mead", "BFGS", "L-BFGS-B"),
               coefRule = c("square", "none", "positive"),
               varRule = c("square", "none"),
               start = list(a = NULL, B = NULL,
                            c = NULL, d = NULL, q = NULL),
               maxIter = Inf)

Arguments

scoringRule

The scoring rule to be used in optimum score estimation. Options are "crps" for the continuous ranked probability score and "log" for the logarithmic score.

optimRule

Numerical optimization method to be supplied to optim. Options are "BFGS" for the Broyden-Fletcher-Goldfarb-Shanno algorithm and "Nelder-Mead" for the Nelder-Mead method, see optim for details. Note that these options are only available for scoringRule = "log". In case of scoringRule = "crps", the optimization method is set to "L-BFGS-B" by default.

coefRule

Method to control non-negativity of regression estimates. Options are:

  • "square" EMOS coefficients are parameterized as squares and thus gauranteed to be non-negative.

  • "positive" finds non-negative coefficents iteratively by setting negative estimates at the current iteration to zero.

  • "none" no restriction on the coefficient estimates.

varRule

Method to control non-negativity of the scale parameters. Options "square" and "none" are the same as in coefRule.

start

A list of starting parameters, a, B, c, d and q specifying initial values for the intercept coefficient and variance parameters supplied to optim. See details.

maxIter

An integer specifying the upper limit of the number of iterations used to fit the model.

Value

A list whose components are the input arguments and their assigned values.

Details

If no value is assigned to an argument, the first entry of the list of possibly choices will be used by default. Note that optimMethod options are only available for scoringRule = "log". In case of scoringRule = "crps", the optimization method is set to "L-BFGS-B" by default.

Given an ensemble of size \(m\): \(X_1, \ldots , X_m\), the following shifted gamma model left-censored at 0 is fit by ensembleMOScsg0:

$$Y ~ Gamma_0(\kappa,\theta,q)$$

where \(Gamma_0\) denotes the shifted gamma distribution left-censored at zero, with shape \(\kappa\), scale \(\theta\) and shift \(q\). The model is parametrized such that the mean \(\kappa\theta\) is a linear function \(a + b_1 X_1 + \ldots + b_m X_m\) of the ensemble forecats, and the variance \(\kappa\theta^2\) is a linear function of the ensemble mean \(c+d \overline{f}\), see ensembleMOScsg0 for details.

References

M. Scheuerer and T. M. Hamill, Statistical post-processing of ensemble precipitation forecasts by fitting censored, shifted gamma distributions. Monthly Weather Review 143:4578--4596, 2015.

S. Baran and D. Nemoda, Censored and shifted gamma distribution based EMOS model for probabilistic quantitative precipitation forecasting. Environmetrics 27:280--292, 2016.

See Also

ensembleMOScsg0, fitMOScsg0

Examples

Run this code
# NOT RUN {
data("ensBMAtest", package = "ensembleBMA")

ensMemNames <- c("gfs","cmcg","eta","gasp","jma","ngps","tcwb","ukmo")

obs <- paste("PCP24","obs", sep = ".")
ens <- paste("PCP24", ensMemNames, sep = ".")
prcpTestData <- ensembleData(forecasts = ensBMAtest[,ens],
                             dates = ensBMAtest[,"vdate"],
                             observations = ensBMAtest[,obs],
                             station = ensBMAtest[,"station"],
                             forecastHour = 48,
                             initializationTime = "00")

prcpTestFitCSG0 <- ensembleMOScsg0(prcpTestData, trainingDays = 25,
                                   dates = "2008010100",
                                   control = controlMOScsg0(maxIter = as.integer(100),
                                                            scoringRule = "log",
                                                            optimRule = "Nelder-Mead",
                                                            coefRule= "none", 
                                                            varRule = "square"))

# }

Run the code above in your browser using DataLab