Learn R Programming

ensembleMOS (version 0.8.2)

fitMOSnormal: Gaussian (normal) EMOS model fit to a training set

Description

Fits a Gaussian (normal) EMOS model to a given training set.

Usage

fitMOSnormal(ensembleData, control = controlMOSnormal(),
             exchangeable = NULL)

Arguments

ensembleData

An ensembleData object including ensemble forecasts and verification observations. Missing values (indicated by NA) are allowed. Dates are ignored if they are included. This is the training set for the model.

control

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

exchangeable

An optional numeric or character vector or factor indicating groups of ensemble members that are exchangeable (indistinguishable). The models have equal EMOS coefficients within each group. If supplied, this argument will override any specification of exchangeability in ensembleData.

Value

A list with the following output components:

a

The fitted intercept.

B

The fitted EMOS coefficients.

c,d

The fitted variance parameters, see details.

Details

Given an ensemble of size \(m\): \(X_1, \ldots , X_m\), the following Gaussian model is fit by ensembleMOSnormal:

$$ Y ~ N(a + b_1 X_1 + ... + b_m X_m , c + dS^2).$$

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

T. Gneiting, A. E. Raftery, A. H. Westveld and T. Goldman, Calibrated probabilistic forecasting using ensemble model output statistics and minimum CRPS estimation. Monthly Weather Review 133:1098--1118, 2005.

See Also

controlMOSnormal, ensembleMOSnormal,

Examples

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

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

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

tempTrain <- trainingData(tempTestData, trainingDays = 30,
                             date = "2008010100")

tempTrainFit <- fitMOSnormal(tempTrain)
# }

Run the code above in your browser using DataLab