fitQmapSSPLIN {qmap} | R Documentation |
Quantile mapping using a smoothing spline
Description
fitQmapSSPLIN
fits a smoothing spline to the quantile-quantile
plot of observed and modelled time series. doQmapSSPLIN
uses
the spline function to adjust the distribution of the modelled data
to match the distribution of the observations.
Usage
fitQmapSSPLIN(obs, mod, ...)
## Default S3 method:
fitQmapSSPLIN(obs,mod,wet.day=TRUE,qstep=0.01,
spline.par,...)
## S3 method for class 'matrix'
fitQmapSSPLIN(obs, mod, ...)
## S3 method for class 'data.frame'
fitQmapSSPLIN(obs, mod, ...)
doQmapSSPLIN(x,fobj,...)
## Default S3 method:
doQmapSSPLIN(x,fobj,...)
## S3 method for class 'matrix'
doQmapSSPLIN(x,fobj,...)
## S3 method for class 'data.frame'
doQmapSSPLIN(x,fobj,...)
Arguments
obs |
|
mod |
|
wet.day |
|
qstep |
|
spline.par |
a named list with parameters passed to |
x |
|
fobj |
output from |
... |
Further arguments passed to methods |
Details
Before further computations the empirical cumulative distribution
functions (CDF) of the observed (obs
) and modelled (mod
)
are estimated. If !is.null(qstep)
than mod
and
obs
are aggregated to quantiles before model identification as:
quantile(x,probs=seq(0,1,by=qstep)
. If !is.null(qstep)
than mod
and obs
are sorted to produce an estimate of
the empirical CDF. In case of different length of mod
and
obs
than quantile(x,probs=seq(0,1,len=n)]
is used, where
n <- min(length(obs),length(mod))
. NOTE that large values of
qstep
effectively reduce the sample-size and can be used to
speedup computations - but may render estimates less reliable.
wet.day
is intended for the use for precipitation data. Wet day
correction attempts to equalise the fraction of days with
precipitation between the observed and the modelled data. If
wet.day=TRUE
the empirical probability of nonzero observations
is found (obs>=0
) and the corresponding modelled value is
selected as a threshold. All modelled values below this threshold are
set to zero. If wet.day
is numeric
the same procedure is
performed after setting all obs<wet.day
to zero. The
transformations are then only fitted to the portion of the
distributions corresponding to observed wet days.
Value
fitQmapSSPLIN
returns an object of class fitQmapSSPLIN
containing following elements:
par |
A list containing objects of class |
wet.day |
|
doQmapSSPLIN
returns a numeric
vector or matrix
depending on the format of x
.
Author(s)
Lukas Gudmundsson
References
Gudmundsson, L.; Bremnes, J. B.; Haugen, J. E. & Engen-Skaugen, T. Technical Note: Downscaling RCM precipitation to the station scale using statistical transformations - a comparison of methods. Hydrology and Earth System Sciences, 2012, 16, 3383-3390, doi:10.5194/hess-16-3383-2012.
See Also
Examples
data(obsprecip)
data(modprecip)
qm.a.fit <- fitQmapSSPLIN(obsprecip[,2],modprecip[,2],
qstep=0.01,wet.day=TRUE)
qm.a <- doQmapSSPLIN(modprecip[,2],qm.a.fit)
## example on how to use spline.par
## (this example has little effect)
qm.b.fit <- fitQmapSSPLIN(obsprecip[,2],modprecip[,2],
qstep=0.01,wet.day=TRUE,
spline.par=list(cv=TRUE))
qm.b <- doQmapSSPLIN(modprecip[,2],qm.b.fit)
sqrtquant <- function(x,qstep=0.01){
qq <- quantile(x,prob=seq(0,1,by=qstep))
sqrt(qq)
}
plot(sqrtquant(modprecip[,2]),
sqrtquant(obsprecip[,2]))
lines(sqrtquant(modprecip[,2]),
sqrtquant(qm.a),col="red")
lines(sqrtquant(modprecip[,2]),
sqrtquant(qm.b),col="blue")
legend("topleft",legend=c("cv=FALSE","cv=TRUE"),
lty=1,col=c("red","blue"))
qm2.fit <- fitQmapSSPLIN(obsprecip,modprecip,
qstep=0.1,wet.day=TRUE)
qm2 <- doQmapSSPLIN(modprecip,qm2.fit)
op <- par(mfrow=c(1,3))
for(i in 1:3){
plot(sqrtquant(modprecip[,i]),
sqrtquant(obsprecip[,i]),
main=names(qm2)[i])
lines(sqrtquant(modprecip[,i]),
sqrtquant(qm2[,i]),col="red")
}
par(op)