Open dgergel opened 4 years ago
I've been putting some thought into how best to implement QDM in scikit-downscale - which I'm hoping to do over the next few weeks - and it would be great to get your two cents on this, @jhamman!
What I'm roughly envisioning is updating the BcsdBase
class to be something like QMBase
and then have subclasses for each QM-based bias correction method, e.g. BCSD
, QDM
, etc. So whatever isn't specific to BCSD and a more general characteristic of QM techniques can be part of the base class. A few things in this category would include the obs climatology pieces and perhaps also fitting quantile mappers though some of that might be method-specific.
I'm also thinking it probably makes more sense not to have specific temperature and precipitation subclasses but to absorb the temperature and precip-specific functionality into the method subclass, or some sort of wrapper function that would account for method differences, considering that we'll want to add functionality for bias correcting other variables as well.
@dgergel - +1 on adding these methods. I've been also working on some quantile methods here (#42). More importantly though, I think we should discuss #49 before you get too far along as the API changes I'm proposing may fundamentally change the development path for these methods.
The QDM bias correction method, developed by Alex Cannon (see Cannon et al 2015) preserves relative changes in quantiles by applying simulated relative changes in quantiles on top of observed historical series. It has three basic steps:
It is also the first step in the Multivariate Bias Correction (MBC) methods (e.g. MBCp, MBCr and MBCn).
cc @kemccusker