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).

1. Variable Names and Notation

Throughout this document the following symbols are used consistently.

SymbolMeaning
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
μObsLong-term mean of observed data over the calibration period
μGCM-HistLong-term mean of historical GCM data
μObs,mMean of observed data in calendar month m
μGCM-Hist,mMean 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)
δmMonthly correction factor for calendar month m
θwetWet-day threshold = 0.1 mm/day (constant)
WetFreqObsObserved wet-day frequency = #{VObs > θwet} / N
mCalendar 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.

ModeFormulaTypical use
No conversionV′ = VData already in display units
Kelvin → °CV′ = V − 273.15tas, tasmax, tasmin
Flux → mm/dayV′ = V × 86 400pr, prsn (kg m⁻² s⁻¹)
W/m² → hr/dayV′ = V × 0.041 674rsds
Multiply × bV′ = V × bPa → hPa (b = 0.01)
Subtract − bV′ = VbCustom offset removal
Add + bV′ = V + bCustom 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.

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)

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-wetnObs-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) = knexcess + 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).

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/np ≤ (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.

MetricFormulaIdealReference
MAE(1/N) Σ|Oi − Si|0Willmott (1981)
MBE(1/N) Σ(Oi − Si)0Standard
Pearson rΣ[(Oi−Ō)(Si−S̅)] / [√Σ(Oi−Ō)² × √Σ(Si−S̅)²]1Pearson (1895)
Spearman ρ *1 − 6Σdi² / [N(N²−1)]; di = rank(Oi) − rank(Si)1Spearman (1904)
NSE1 − Σ(Oi−Si)² / Σ(Oi−Ō)²1Nash & Sutcliffe (1970)
RMSE√[(1/N) Σ(Oi−Si)²]0Standard
NRMSE *RMSE / Ō0Standard
IoA (d)1 − Σ(Oi−Si)² / Σ(|Si−Ō|+|Oi−Ō|)²1Willmott (1981)
KGE *1 − √[(r−1)²+(α−1)²+(β−1)²]; α = σsimobs; β = μsimobs1Gupta et al. (2009)
PBIAS *100 × Σ(Oi−Si) / ΣOi (%)0%Moriasi et al. (2007)
RSR *RMSE / σObs0Moriasi et al. (2007)
WDF *fwet,sim / fwet,obs1V2.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)

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