DS: Downscale

Description Usage Arguments Value Author(s) Examples

Description

Identifies statistical relationships between large-scale spatial climate patterns and local climate variations for monthly and daily data series.

The function calibrates a linear regression model using step-wise screening and common EOFs (EOF) as basis functions. It then valuates the statistical relationship and predicts the local climate parameter from predictor fields.

The function is a S3 method that Works with ordinary EOFs, common EOFs (combine) and mixed-common EOFs. DS can downscale results for a single station record as well as a set of stations. There are two ways to apply the downscaling to several stations; either by looping through each station and caryying out the DS individually or by using PCA to describe the characteristics of the whole set. Using PCA will preserve the spatial covariance seen in the past. It is also possible to compute the PCA prior to carrying out the DS, and use the method DS.pca. DS.pca differs from the more generic DS by (default) invoking different regression modules (link{MVR} or CCA).

The rationale for using mixed-common EOFs is that the coupled structures described by the mixed-field EOFs may have a more physical meaning than EOFs of single fields [Benestad et al. (2002), "Empirically downscaled temperature scenarios for Svalbard", Atm. Sci. Lett., doi.10.1006/asle.2002.0051].

The function DS() is a generic routine which in principle works for when there is any real statistical relationship between the predictor and predictand. The predictand is therefore not limited to a climate variable, but may also be any quantity affected by the regional climate. It is important to stress that the downscaling model must reflect a well-understood (physical) relationship.

The routine uses a step-wise regression (step) using the leading EOFs. The calibration is by default carried out on de-trended data [ref: Benestad (2001), "The cause of warming over Norway in the ECHAM4/OPYC3 GHG integration", Int. J. Clim., 15 March, vol 21, p.371-387.].

The function biasfix provides a type of 'bias correction' based on the method diagnose which estimates the difference in the mean for the PCs of the calibration data and GCMs over a common period in addition to the ratio of standard deviations and lag-one autocorrelation. This 'bias correction' is described in Imbert and Benestad (2005), Theor. Appl. Clim. http://dx.doi.org/10.1007/s00704-005-0133-4.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
DS(y,X,verbose=TRUE,plot=FALSE,...)
DS.default(y,X,mon=NULL,
           method="lm",swsm="step",
           rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
           verbose=FALSE,...)
DS.station(y,X,biascorrect=FALSE,mon=NULL,
           method="lm",swsm="step",
           rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
           verbose=FALSE,pca=TRUE,neofs=20,...)
DS.eof(X,y,mon=NULL,
       method="lm",swsm="step",
       rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
       verbose=FALSE,pca=TRUE,npca=20,...)
DS.comb(X,y,biascorrect=FALSE,mon=NULL,
        method="lm",swsm="step",
        rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
        verbose=FALSE,...) 
DS.field(X,y,biascorrect=FALSE,mon=NULL,
         method="lm",swsm="step",
         rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
         verbose=FALSE,...) 
DS.t2m.month.field(y,X,biascorrect=FALSE,mon=NULL,
                   method="lm",swsm="step",
                   rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
                   verbose=FALSE,station=TRUE)
DS.t2m.season.field(y,X,biascorrect=FALSE,
                    method="lm",swsm="step",
                    rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
                    verbose=FALSE,station=TRUE)
DS.t2m.annual.field(y,X,biascorrect=FALSE,
                    method="lm",swsm="step",
                    rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
                    verbose=FALSE,station=TRUE)
DS.precip.season.field(y,X,biascorrect=FALSE,
                      method="lm",swsm="step",
                      rmtrend=TRUE,eofs=1:7,area.mean.expl=FALSE,
                      verbose=FALSE,...)
DS.freq(y,X,threshold=1,biascorrect=FALSE,method="glm",
family="gaussian",swsm="step",
        rmtrend=TRUE,eofs=1:7,verbose=FALSE,...)
DS.spell(y,X,threshold=1,biascorrect=FALSE,method="glm",
family="gaussian",swsm="step",
         rmtrend=TRUE,eofs=1:7,verbose=FALSE,...)
DS.pca(y,X,biascorrect=FALSE,mon=NULL,
       method="MVR",swsm=NULL,rmtrend=TRUE,...) 
predict.ds.mon(x,...) 
sametimescale(y,X,FUN=mean)
biasfix(x)

Arguments

y

The predictand - the station series representing local climate parameter

X

The predictor - an EOF object representing the large-scale situation.

mon

An integer or a vector of integers. The calendar month to downscale, e.g. '1' is all January months, '2' is February, and so on.

method

Model type, e.g. lm og glm

swsm

Stepwise screening, e.g. step. NULL skips stepwise screening

rmtrend

TRUE for detrending the predicant and predictors (in the PCs) before calibrating the model

eofs

Which EOF modes to include in the model training.

plot

TRUE: plot the results

verbose

TRUE: suppress output to the terminal.

station

TRUE: convert monthly data to station class using combine.ds, else return a list of different monthly DS-results.

area.mean.expl

When TRUE, subtract the area mean for the domain and use as a the first co-variate before the PCs from the EOF analysis.

Value

The downscaling analysis returns a time series representing the local climate, patterns of large-scale anomalies associated with this, ANOVA, and analysis of residuals. Care must be taken when using this routine to infer local scenarios: check the R2 and p-values to check wether the calibration yielded an appropriate model. It is also important to examine the spatial structures of the large-scale anomalies assocaiated with the variations in the local climate: do these patterns make physical sense?

It is a good idea to check whether there are any structure in the residuals: if so, then a linear model for the relationship between the large and small-scale structures may not be appropriate. It is furthermore important to experiment with predictors covering different regions [ref: Benestad (2001), "A comparison between two empirical downscaling strategies", Int. J. Climatology, vol 21, Issue 13, pp.1645–1668. DOI 10.1002/joc.703].

There is a cautionary tale for how the results can be misleading if the predictor domain in not appropriate: domain for northern Europe used for sites in Greenland [ref: Benestad (2002), "Empirically downscaled temperature scenarios for northern Europe based on a multi-model ensemble", Climate Research, vol 21 (2), pp.105–125. http://www.int-res.com/abstracts/cr/v21/n2/index.html]

Author(s)

R.E. Benestad

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# One exampe doing a simple ESD analysis:
X <- t2m.ERA40(lon=c(-40,50),lat=c(40,75))
data(Oslo)
#X <- OptimalDomain(X,Oslo)
Y <- DS(Oslo,X)
plot(Y)
str(Y)

# Look at the residual of the ESD analysis
y <- as.residual(Y)
plot(y)

# Check the residual: dependency to the global mean temperature?
T2m <- (t2m.ERA40())
yT2m <- merge.zoo(y,T2m)
plot(coredata(yT2m[,1]),coredata(yT2m[,2]))

data(t2m.DNMI)
y <- station.eca("Oslo")
X <- EOF(t2m.DNMI,mon=1)
ds <- DS.month.eof(y,X)

# Example: downscale annual wet-day mean precipitation -calibrate over
# part of the record and use the other part for evaluation.
T2M <- as.annual(t2m.NCEP(lon=c(-10,30),lat=c(50,70)))
cal <- subset(T2M,it=c("1948-01-01","1980-01-01"))
pre <- subset(T2M,it=c("1981-01-01","2013-01-01"))
comb <- combine(cal,pre)
X <- EOF(comb)
data(bjornholt)
y <- as.annual(bjornholt,FUN="exceedance")
z <- DS(y,X)
plot(z)

lon <- c(-12,37)
lat <- c(52,72)
ylim <- c(-6,6)
t2m <- t2m.NCEP(lon=lon,lat=lat)
T2m <- t2m.NorESM.M(lon=lon,lat=lat)
data(Oslo)
X <- combine(t2m,T2m)

eof <- EOF(X,it=7)
ds <- DS(Oslo,eof)
plot(ds)

DS(Oslo,X,station=FALSE) -> y
Y <- combine.ds.comb(y)
plot(Y)

data(ferder)
t2m <- t2m.NCEP(lon=c(-30,50),lat=c(40,70))
slp <- slp.NCEP(lon=c(-30,50),lat=c(40,70))
T2m <- as.4seasons(t2m)
SLP <- as.4seasons(slp)
X <- EOF(T2m,it=1)
Z <- EOF(SLP,it=1)
y <- ferder
sametimescale(y,X) -> z
ym <- as.4seasons(y,FUN="mean")
ys <- as.4seasons(y,FUN="sd")
dsm <- DS(ym,X)
dss <- DS(ys,Z)

metno/esd.test documentation built on May 22, 2019, 7:49 p.m.