Skip to content

4. Downscaling

Rasmus E. Benestad edited this page May 21, 2024 · 3 revisions

The downscaling is based on the identification of statistical relationships between large-scale spatial climate patterns and local climate variations for annual, monthly and daily data series. The main function used here is DS. The function calibrates a linear regression model using step-wise screening and common EOFs (EOF) as basis functions. It then evaluates the statistical relationship and predicts the local climate parameter from the predictor fields.

The main command line here is

> DS(y,X,...)

where y represent the predictand (e.g. 2m-surface temperature at a station) and X represents the predictors (e.g. eof of global mean temperature field). Various derivative functions have been implemented such as DS.t2m() and DS.precip() for downscaling temperature and precipitation, respectively.

Examples

Example 1 . Doing a simple ESD analysis

> X <- t2m.ERA40(lon=c(-40,50),lat=c(40,75))
# Load temperature data at Oslo
> data(Oslo)
# X <- OptimalDomain(X,Oslo) # Not yet implemented !
# Compute the eofs for January.
> eof <- EOF(X,it='jan')
# Downscale Oslo temperature series based on ERA40 mean temperature. 
> ds <- DS(Oslo,eof)
# Plot the results
> plot(ds)

Rplot

# List the names of the output attributes
> names(attributes(ds))

screenshot

 [1] "index"              "class"              "names"             
 [4] "location"           "variable"           "unit"              
 [7] "longitude"          "latitude"           "altitude"          
[10] "country"            "longname"           "station_id"        
[13] "quality"            "calendar"           "source"            
[16] "URL"                "type"               "aspect"            
[19] "reference"          "info"               "method"            
[22] "history"            "count"              "calibration_data"  
[25] "fitted_values"      "original_data"      "model"             
[28] "mean"               "eof"                "pattern"           
[31] "dimensions"         "history.predictand" "evaluation"  
# Look at the residual of the ESD analysis
> res <- as.residual(ds)
> plot(res)
     
# Check the residual: dependency to the global mean temperature?
> T2m <- (t2m.ERA40())
> yT2m <- merge.zoo(y,T2m)
> plot(coredata(yT2m[,1]),coredata(yT2m[,2]))

Downscaling a global climate model (GCM)

To downscale results from GCMs we need to use 'common EOFs' to capture both the reanalysis for the calibration of the downscaling model and the GCM output for applying the model for the purpos of making projections. Here is an example based on sample data that come with the esd-package (this data is far from optimal for a real case of downscaling future temperatures).

## Use some of the sample data provided by the esd-package. In this example we downscale the annual mean temperature in Oslo.
> library(esd)
## Get the predictor data which is stored as EOFs.
> data("eof.t2m.NCEP")
> data("eof.t2m.NorESM.M")
## Get the predictand data - a time series
> data("Oslo")
## Convert the EOFs to field data holding annual mean values:
> ncep <- annual(eof2field(eof.t2m.NCEP))
> gcm <- annual(eof2field(eof.t2m.NorESM.M))
## Combine the reanalysis and GCM data into a joint dataset
> X <- combine(ncep,gcm)
## Compute EOFs of the joint dataset - this are 'common EOFs'
> ceof <- EOF(X)
## Use the common EOFs as predictors in the downscaling exercise
> ds <- DS(annual(Oslo),ceof)
> plot(ds)

Explaining the evolution leading up to downscaling with the esd-package

Benestad, R. E.: A Norwegian Approach to Downscaling, Geosci. Model Dev. Discuss. [preprint], https://doi.org/10.5194/gmd-2021-176, 2021.