Learn R Programming

ensembleMOS (version 0.8.2)

ensembleMOSlognormal: Log-normal EMOS modeling

Description

Fits a log-normal EMOS model to ensemble forecasts for specified dates.

Usage

ensembleMOSlognormal(ensembleData, trainingDays, consecutive = FALSE,
                     dates = NULL, control = controlMOSlognormal(),
                     warmStart = FALSE, exchangeable = NULL)

Arguments

ensembleData

An ensembleData object including ensemble forecasts with the corresponding verifying observations and their dates. Missing values (indicated by NA) are allowed.

trainingDays

An integer giving the number of time steps (e.g. days) in the training period. There is no default.

consecutive

If TRUE then the sequence of dates in the training set are treated as consecutive, i.e. date gaps are ignored.

dates

The dates for which EMOS forecasting models are desired. By default, this will be all dates in ensembleData for which modeling is allowed given the training rule.

control

A list of control values for the fitting functions specified via the function controlMOStruncnormal. For details and default values, see controlMOStruncnormal.

warmStart

If TRUE, then starting values for parameters in optimization are set to the estimates of the preceding date's fit.

exchangeable

A numeric or character vector or factor indicating groups of ensemble members that are exchangeable (indistinguishable). The modeling will have equal parameters within each group. The default determines exchangeability from ensembleData.

Value

A list with the following output components:

training

A list containing information on the training length and lag and the number of instances used for training for each modeling date.

a

A vector of fitted EMOS intercept parameters for each date.

B

A matrix of fitted EMOS coefficients for each date.

c,d

The fitted parameters for the variance, see details.

Details

Given an ensemble of size \(m\): \(X_1, \ldots , X_m\), the following log-normal model is fit by ensembleMOSlognormal:

$$Y ~ LN(\mu, \sigma)$$

where \(LN\) denotes the log-normal distrbution with meanlog parameter \(\mu\) and scalelog parameter \(\sigma\), see Lognormal. The model is parametrized such that the mean value of the log-normal distribution is a linear function \(a + b_1 X_1 + \ldots + b_m X_m\) of the ensemble forecats, and the variance is a linear function \(c + d S^2\). For transformations between \(\mu, \sigma\) and mean and variance of the log-normal distribution, see Baran and Lerch (2015). See ensembleMOSlognormal for details. B is a vector of fitted regression coefficients: \(b_1, \ldots, b_m\). Specifically, \(a, b_1,\ldots, b_m, c, d\) are fitted to optimize control$scoringRule over the specified training period using optim with method = control$optimRule.

References

S. Baran and S. Lerch, Log-normal distribution based Ensemble Model Output Statistics models for probabilistic wind-speed forecasting. Quarterly Journal of the Royal Meteorological Society 141:2289--2299, 2015.

See Also

controlMOSlognormal, fitMOSlognormal

Examples

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

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

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

windTestFitLN <- ensembleMOSlognormal(windTestData, trainingDays = 25)
# }

Run the code above in your browser using DataLab