Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Quantile Delta Mapping (QDM) bias correction method #48

Open
dgergel opened this issue Oct 20, 2020 · 2 comments
Open

Add Quantile Delta Mapping (QDM) bias correction method #48

dgergel opened this issue Oct 20, 2020 · 2 comments

Comments

@dgergel
Copy link
Contributor

dgergel commented Oct 20, 2020

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:

  1. detrend future model outputs by quantile
  2. bias correct to obs by quantile mapping
  3. superimpose model-projected relative changes in quantiles on bias corrected model output

It is also the first step in the Multivariate Bias Correction (MBC) methods (e.g. MBCp, MBCr and MBCn).

cc @kemccusker

@dgergel
Copy link
Contributor Author

dgergel commented Oct 20, 2020

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.

@jhamman
Copy link
Member

jhamman commented Oct 20, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants