Open PDF
Download PDF
Tutorial →
Back to SD-GCM
This document gives the mathematical details of every method SD-GCM V2.1 implements,
from raw GCM input through bias correction to the final downscaled output. It is intended
as a technical companion to the user-facing Tutorial.
All methods support two correction-factor modes selected by the user: additive
(temperature-like variables, where bias is a difference) and multiplicative
(precipitation-like variables, where bias is a ratio and negative outputs are clamped to zero).
New in V2.1. Three new methods (QDM, DQM, SDM), Monthly Stratification wrapper
for all six methods, LOCI pre-processor for precipitation, empirical CDF with tail extrapolation,
and six new evaluation metrics (KGE, PBIAS, RSR, WDF, Spearman ρ, NRMSE).
The Wavelet Downscaling feature has been removed.
1. Variable Names and Notation
Throughout this document the following symbols are used consistently.
| Symbol | Meaning |
| VObs(t) | Observed station value at time step t |
| VGCM-Hist(t) | Historical GCM value at time t (calibration period, after unit conversion) |
| VGCM-SSP(t) | Future GCM value at time t (SSP/RCP scenario, after unit conversion) |
| VCorrected(t) | Bias-corrected output value |
| μObs | Long-term mean of observed data over the calibration period |
| μGCM-Hist | Long-term mean of historical GCM data |
| μObs,m | Mean of observed data in calendar month m |
| μGCM-Hist,m | Mean of historical GCM data in calendar month m |
| CDFObs(v) | Empirical CDF of observed data at value v |
| CDFGCM-Hist(v) | Empirical CDF of historical GCM data |
| CDF−1Obs(p) | Empirical inverse CDF (quantile function) of observed data |
| Δ(t) | Quantile delta — GCM-projected change at quantile p(t) |
| δ | Correction factor, global mode (one value for all months) |
| δm | Monthly correction factor for calendar month m |
| θwet | Wet-day threshold = 0.1 mm/day (constant) |
| WetFreqObs | Observed wet-day frequency = #{VObs > θwet} / N |
| m | Calendar month: 1 = Jan … 12 = Dec |
2. Unit Conversion
Applied to all GCM values before any bias-correction calculation. The user selects the
conversion mode in the Gridded Data tab. The same conversion is applied to both the
historical GCM calibration data and the future SSP/RCP data.
| Mode | Formula | Typical use |
| No conversion | V′ = V | Data already in display units |
| Kelvin → °C | V′ = V − 273.15 | tas, tasmax, tasmin |
| Flux → mm/day | V′ = V × 86 400 | pr, prsn (kg m⁻² s⁻¹) |
| W/m² → hr/day | V′ = V × 0.041 674 | rsds |
| Multiply × b | V′ = V × b | Pa → hPa (b = 0.01) |
| Subtract − b | V′ = V − b | Custom offset removal |
| Add + b | V′ = V + b | Custom offset addition |
3. A — Delta Method
Reference: Panofsky & Brier (1968). Corrects the GCM mean by a multiplicative ratio
(precipitation) or additive shift (temperature) derived from the calibration period.
Global mode vs Monthly Stratification.
When Monthly Stratification is OFF, one δ is computed from all months together.
When it is ON, twelve separate δm values are computed, one per calendar month.
The same choice is available for all six methods (see Section 10).
3.1 Global Delta (Monthly Stratification OFF)
δ = μObs / μGCM-Hist (multiplicative — precipitation) (1a)
δ = μObs − μGCM-Hist (additive — temperature) (1b)
VCorrected(t) = max(0, VGCM-SSP(t) × δ) (2a)
VCorrected(t) = VGCM-SSP(t) + δ (2b)
3.2 Monthly-Stratified Delta (Monthly Stratification ON)
δm = μObs,m / μGCM-Hist,m (multiplicative) (3a)
δm = μObs,m − μGCM-Hist,m (additive) (3b)
VCorrected(t) = max(0, VGCM-SSP(t) × δm(t)) (4)
where m(t) denotes the calendar month of time step t. In global mode δm(t) = δ for all t.
4. B — Quantile Mapping (QM)
References: Gudmundsson et al. (2012); Wood et al. (2002). Maps each GCM value to the
corresponding observed quantile using the CDF transfer function.
4.1 Temperature — Parametric Normal CDF
QM fits a Normal distribution to both observed and historical GCM data:
p(t) = ΦGCM-Hist(VGCM-Hist(t); μGCM-Hist, σGCM-Hist) (5a)
VCorrected(t) = Φ−1Obs(p(t); μObs, σObs) (5b)
where Φ is the Normal CDF and Φ−1 is the inverse Normal CDF (quantile function).
4.2 Precipitation — Empirical CDF with LOCI (V2.1)
Change from V2.0. V2.0 used a Gamma distribution for precipitation QM.
V2.1 uses an empirical (data-driven) CDF with LOCI pre-processing for greater robustness
across different climates and model types.
VLOCI(t) = LOCI(VGCM-Hist(t)) [see Section 8] (6a)
p(t) = CDFGCM-Hist(VLOCI(t)) (6b)
VCorrected(t) = CDF−1Obs(p(t)) (6c)
VCorrected(t) = 0 if VLOCI(t) ≤ θwet (6d)
5. C — Empirical Quantile Mapping (EQM)
References: Boé et al. (2007); Wetterhall et al. (2012). Fully non-parametric variant of QM:
uses sorted data directly, no distribution assumed.
5.1 Temperature — Empirical CDF
Unlike QM (which uses a Normal distribution for temperature), EQM uses pre-sorted empirical arrays:
p(t) = CDFGCM-Hist(VGCM-Hist(t)) [using sorted data] (7a)
VCorrected(t) = CDF−1Obs(p(t)) [using sorted data] (7b)
5.2 Precipitation — identical to QM precipitation (Eq. 6a–6d)
For precipitation, QM and EQM use identical formulas in V2.1. Both QM and EQM appear
in both the Evaluation tab and the Bias Correction tab. The key mathematical difference
between QM and EQM is in temperature only: QM uses a parametric Normal CDF; EQM uses
the empirical CDF from sorted data.
6. D — Quantile Delta Mapping (QDM)
Reference: Cannon, Sobie & Murdock (2015) J. Climate 28:6938–6959. doi:10.1175/JCLI-D-14-00754.1 [NEW IN V2.1]
QDM preserves the GCM-projected change signal at every quantile of the distribution,
not just the mean. It decomposes each future value into the observed climatological value
at the matching quantile plus the quantile-specific change (delta).
6.1 Temperature — Additive QDM
Step 1: p(t) = CDFGCM-SSP(VGCM-SSP(t)) (8a)
Step 2: VGCM-Hist at p = CDF−1GCM-Hist(p(t)) (8b)
Step 3: Δ(t) = VGCM-SSP(t) − VGCM-Hist at p [additive quantile delta] (8c)
Step 4: VCorrected(t) = CDF−1Obs(p(t)) + Δ(t) (8d)
6.2 Precipitation — Multiplicative QDM
LOCI pre-processing is applied to both historical and future GCM data before QDM.
Step 1: p(t) = CDFGCM-SSP-LOCI(VLOCI-SSP(t)) (9a)
Step 2: VGCM-Hist at p = CDF−1GCM-Hist-LOCI(p(t)) (9b)
Step 3: Δ(t) = VLOCI-SSP(t) / VGCM-Hist at p [ratio delta; = 1 if VGCM-Hist at p < 10−10] (9c)
Step 4: VCorrected(t) = max(0, CDF−1Obs(p(t)) × Δ(t)) (9d)
VCorrected(t) = 0 if VLOCI-SSP(t) ≤ θwet (9e)
The cumulative probability p is clamped to [10−6, 1 − 10−6] for numerical stability.
7. E — Detrended Quantile Mapping (DQM)
Reference: Cannon, Sobie & Murdock (2015) J. Climate 28:6938–6959. [NEW IN V2.1]
DQM removes the mean trend from the future GCM before applying EQM, then reapplies
the trend. It preserves the mean change signal while correcting distributional biases.
7.1 Temperature — Additive DQM
Step 1: Trend = μGCM-SSP − μGCM-Hist (10a)
Step 2: VDetrended(t) = VGCM-SSP(t) − Trend (10b)
Step 3: VEQM(t) = EQM(VDetrended(t)) [apply Temp_EQM, Eq. 7a–7b] (10c)
Step 4: VCorrected(t) = VEQM(t) + Trend (10d)
7.2 Precipitation — Multiplicative DQM
Step 1: Ratio = μGCM-Hist,wet / μGCM-SSP,wet (11a)
Step 2: VDetrended(t) = VGCM-SSP(t) × Ratio [if VGCM-SSP(t) > θwet] (11b)
Step 3: VEQM(t) = EQMprecip(VDetrended) [Eq. 6a–6d] (11c)
Step 4: VCorrected(t) = max(0, VEQM(t) / Ratio) (11d)
8. F — Scaled Distribution Mapping (SDM)
Reference: Switanek, Troch, Castro, Leuprecht, Chang, Mukherjee & Demaria (2017)
Hydrol. Earth Syst. Sci. 21:2649–2666. doi:10.5194/hess-21-2649-2017 [NEW IN V2.1]
SDM maps through exceedance probability (1 − p) and explicitly resolves the GCM
drizzle bias by correcting wet-day frequency before mapping intensities.
8.1 Temperature
Step 1: pexceed(t) = 1 − CDFGCM-Hist(VGCM-SSP(t)) (12a)
Step 2: VCorrected(t) = CDF−1Obs(1 − pexceed(t)) (12b)
8.2 Precipitation — Rank-Based Frequency Correction
Step 1: Sort all future GCM wet days ascending by intensity (13a)
Step 2a: nexcess = max(0, nGCM-wet − nObs-wet) (13b)
Step 2b: Set the lowest nexcess intensity wet days to 0 (reclassify as dry) (13c)
Step 3 (for each of the remaining nmapped wet days):
Ranksubset(k) = k − nexcess + 1 (1-based) (13d)
obs_idx = round[(Ranksubset − 1) / (nmapped − 1) × (nObs-wet − 1)] (13e)
VCorrected(k) = max(0, VObs,sorted[obs_idx]) (13f)
where nmapped = min(nGCM-wet, nObs-wet).
Drizzle bias correction. If the GCM produces more wet days than observed,
the lowest-intensity excess days are set to zero. Only the top nObs-wet days
are mapped to the observed distribution. If the GCM has fewer wet days than observed,
all GCM wet days are mapped and the rank scaling in Eq. (13e) stretches them across
the full observed range.
9. LOCI — Local Intensity Scaling Pre-Processor
Reference: Schmidli, Frei & Vidale (2006) Int. J. Climatol. 26:679–689. doi:10.1002/joc.1287 [NEW IN V2.1]
LOCI is applied automatically before all precipitation quantile-mapping methods (QM, EQM, QDM, DQM).
It corrects the GCM’s wet-day frequency and mean intensity to match observations. LOCI is not
applied to temperature.
Step 1: ThresholdLOCI = CDF−1GCM(1 − WetFreqObs) (14a)
ThresholdLOCI = max(ThresholdLOCI, θwet) (14b)
Step 2: μGCM-wet,above = mean{ VGCM : VGCM > ThresholdLOCI } (14c)
Step 3: ScaleFactorLOCI = μObs,wet / μGCM-wet,above (14d)
Step 4: VLOCI(t) = 0 if VGCM(t) ≤ ThresholdLOCI (14e)
VLOCI(t) = max(0, VGCM(t) × ScaleFactorLOCI) if VGCM(t) > ThresholdLOCI (14f)
10. Empirical Inverse CDF with Tail Extrapolation
[NEW IN V2.1] All quantile-mapping methods use this function to look up observed station
values at a given probability. V2.1 adds linear tail extrapolation beyond the observed data
range, preventing systematic underestimation of extreme future values that fall outside the
historical range.
Let Vsorted = observed data sorted ascending, with n values (index 0 … n−1):
Interior range (1/n ≤ p ≤ (n−1)/n)
pos = p × (n − 1) (15a)
lo = ⌊pos⌋, hi = min(lo + 1, n − 1) (15b)
CDF−1Obs(p) = Vsorted[lo] + (pos − lo) × (Vsorted[hi] − Vsorted[lo]) (15c)
Lower tail (p < 1/n)
slope = (Vsorted[1] − Vsorted[0]) / (1/n) (16a)
CDF−1Obs(p) = Vsorted[0] + slope × (p − 1/n) (16b)
Upper tail (p > (n−1)/n)
slope = (Vsorted[n−1] − Vsorted[n−2]) / (1/n) (17a)
CDF−1Obs(p) = Vsorted[n−1] + slope × (p − (n−1)/n) (17b)
Precipitation outputs are clipped to ≥ 0 after extrapolation.
11. Monthly Stratification
[NEW IN V2.1] An optional checkbox in both the Evaluation and Bias Correction tabs.
When enabled, the selected method is run 12 separate times, once for each calendar month.
Output is labelled with the _M suffix (e.g. Delta_M, QDM_M, SDM_M).
m(d) = DayOfYearToMonth[min(d, 365)] (18)
where d is the 0-based day-of-year index. Leap-year day 365 is assigned to February,
introducing ≤ 0.3% position error which is negligible for monthly grouping. References:
Gudmundsson et al. (2012); Teutschbein & Seibert (2012).
12. Evaluation Metrics
Computed in the Evaluation tab. Oi = observed value; Si = simulated (bias-corrected)
value; Ō = mean observed; S̅ = mean simulated; N = number of paired time steps.
| Metric | Formula | Ideal | Reference |
| MAE | (1/N) Σ|Oi − Si| | 0 | Willmott (1981) |
| MBE | (1/N) Σ(Oi − Si) | 0 | Standard |
| Pearson r | Σ[(Oi−Ō)(Si−S̅)] / [√Σ(Oi−Ō)² × √Σ(Si−S̅)²] | 1 | Pearson (1895) |
| Spearman ρ * | 1 − 6Σdi² / [N(N²−1)]; di = rank(Oi) − rank(Si) | 1 | Spearman (1904) |
| NSE | 1 − Σ(Oi−Si)² / Σ(Oi−Ō)² | 1 | Nash & Sutcliffe (1970) |
| RMSE | √[(1/N) Σ(Oi−Si)²] | 0 | Standard |
| NRMSE * | RMSE / Ō | 0 | Standard |
| IoA (d) | 1 − Σ(Oi−Si)² / Σ(|Si−Ō|+|Oi−Ō|)² | 1 | Willmott (1981) |
| KGE * | 1 − √[(r−1)²+(α−1)²+(β−1)²]; α = σsim/σobs; β = μsim/μobs | 1 | Gupta et al. (2009) |
| PBIAS * | 100 × Σ(Oi−Si) / ΣOi (%) | 0% | Moriasi et al. (2007) |
| RSR * | RMSE / σObs | 0 | Moriasi et al. (2007) |
| WDF * | fwet,sim / fwet,obs | 1 | V2.1 |
* New metric added in V2.1. KGE values above −0.41 are generally better than using the
observed mean as a naive forecast. WDF = 1 is perfect wet-day frequency agreement;
WDF is only meaningful for precipitation variables.
12.1 Wet-Day Frequency Ratio (WDF)
fwet,obs = #{Oi > θwet} / N (19a)
fwet,sim = #{Si > θwet} / N (19b)
WDF = fwet,sim / fwet,obs (19c)
13. Wet-Day Threshold
θwet = 0.1 mm/day (20)
Applied in: LOCI pre-processing, QM/EQM/QDM/DQM dry-day filtering,
SDM wet-day ranking, and WDF metric calculation.
14. Wavelet Downscaling (Removed in V2.1)
Removed in V2.1. Wavelet-based downscaling was available in V2.0 as an add-on
to the Delta, QM, and EQM methods. It has been removed in V2.1.
Recommended alternatives: QDM_M or SDM_M, which provide
superior change-signal preservation without the added complexity of wavelet decomposition.
15. References
Boé, J., Terray, L., Habets, F. & Martin, E. (2007).
Statistical and dynamical downscaling of the Seine basin climate for hydro-meteorological studies.
Int. J. Climatol. 27:1643–1655.
Cannon, A.J., Sobie, S.R. & Murdock, T.Q. (2015).
Bias correction of GCM precipitation by quantile mapping: How well do methods preserve changes
in quantiles and extremes? J. Climate 28:6938–6959. doi:10.1175/JCLI-D-14-00754.1
Gupta, H.V., Kling, H., Yilmaz, K.K. & Martinez, G.F. (2009).
Decomposition of the mean squared error and NSE performance criteria: Implications for
improving hydrological modelling. J. Hydrol. 377:80–91.
Gudmundsson, L., Bremnes, J.B., Haugen, J.E. & Engen-Skaugen, T. (2012).
Technical Note: Downscaling RCM precipitation to the station scale using statistical
transformations. Hydrol. Earth Syst. Sci. 16:3383–3390.
Moriasi, D.N. et al. (2007). Model evaluation guidelines for systematic
quantification of accuracy in watershed simulations. Trans. ASABE 50:885–900.
Nash, J.E. & Sutcliffe, J.V. (1970). River flow forecasting through
conceptual models. J. Hydrol. 10:282–290.
Panofsky, H.A. & Brier, G.W. (1968).
Some Applications of Statistics to Meteorology. Pennsylvania State University.
Schmidli, J., Frei, C. & Vidale, P.L. (2006). Downscaling from GCM
precipitation: a benchmark for dynamical and statistical downscaling methods.
Int. J. Climatol. 26:679–689. doi:10.1002/joc.1287
Switanek, M.B. et al. (2017). Scaled distribution mapping: a bias correction
method that preserves raw climate model projected changes.
Hydrol. Earth Syst. Sci. 21:2649–2666. doi:10.5194/hess-21-2649-2017
Teutschbein, C. & Seibert, J. (2012). Bias correction of regional climate
model simulations for hydrological climate-change impact studies.
J. Hydrol. 456–457:12–29.
Wetterhall, F. et al. (2012). Statistical downscaling of daily precipitation
over Sweden using GCM output. Theor. Appl. Climatol. 96:95–103.
Willmott, C.J. (1981). On the validation of models.
Phys. Geogr. 2:184–194.
Wood, A.W. et al. (2002). Long-range experimental hydrologic forecasting
for the eastern United States. J. Geophys. Res. 107(D20):4429.
Software libraries used: Accord.NET Framework (distribution fitting, KS test,
Anderson-Darling test) (accord-framework.net);
MathNet.Numerics (sample statistics, Pearson/Spearman correlation).
16. Further Resources
Tool website: https://agrimetsoft.com/sd-gcm
Tutorial: /sd-gcm/tutorial/
Video tutorials: http://www.youtube.com/AgriMetSoft
User-facing workflow descriptions and step-by-step instructions are in the companion Tutorial document.
Open PDF
Download PDF
Tutorial →
Back to SD-GCM