Last data update: 2014.03.03

R: Gaussian (normal) EMOS model fit to a training set
fitMOSnormalR Documentation

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. The defaults are given by the function 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.

Details

Given an ensemble forecast of size m: X_1, … , X_m, the following Gaussian predictive distribution is fit by fitMOSnormal

Y sim mathcal{N} ≤ft( a + b_1X_1 + cdots + b_mX_m , c + dS^2 ight)

B is a vector of fitted regression coefficients: b_1, … ,b_m. Specifically, a,b_1,… , b_m, c,d are fitted to optimize control$scoringRule over the specified training set using optim with method = "BFGS".

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.

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


  data(ensMOStest)

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

  tempTestData <- ensembleData( forecasts = ensMOStest[,ensNames],
                                observations = ensMOStest[,"obs"],
                                station = ensMOStest[,"station"],
                                dates = ensMOStest[,"vdate"],
                                forecastHour = 48,
                                initializationTime = "00")

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

  tempTrainFit <- fitMOSnormal( tempTrain)

## equivalent to
##    tempTrainFit <- fitMOS( tempTrain, model = "normal")

Results