Quantile Mapping correction.
The statistical distribution of the chosen parameter is computed and the multiplying factors provided as arguments are used to correct each provided quantiles (see https://rcmes.jpl.nasa.gov/content/statistical-downscaling#download).The quantiles must be provided as increasing decimal numbers between 0 (0%) and 1 (100%) and the full range must be covered. Values given for quantiles less than 0.5 (50%) are assumed to extend toward 0 while values above are assumed to extend toward 1 (100%).
It takes the following arguments:
- TYPE: either ADD (add the correction coefficient) or MULT (multiply by the correction coefficient);
- PERIOD: either YEARLY, MONTHLY, WEEKLY or DAILY. This describes the period over which the quantiles were calculated (and is currently used as a sliding window). If no argument is given, it takes the whole dataset at once (optional);
- CORRECTIONS: the file and path containing the corrections to apply;
- WRITE_QUANTILES: write out the average value of each quantile (if no corrections file is provided, it will generate 10 quantiles).
This example write out the yearly deciles without performing any corrections to the data (so the corrections factor can be later computed):
VW::filter1 = QM
VW::arg1::period = yearly
VW::arg1::write_quantiles = true
This example applies pre-computed correction factors (quantiles computed over the whole dataset):
TA::filter1 = QM
TA::arg1::corrections = correctionsTA.dat
TA::arg1::type = add
Example of correction file (quantiles in the first column and correction factors as second column):
0 1.2
0.25 1.2
0.5 1.05
0.8 0.95
0.9 0.89
|
void | correctPeriod (const unsigned int ¶m, const size_t &idx_start, const size_t &idx_end, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec) const |
|
void | writeQuantiles (const std::vector< double > &thresholds, const std::vector< double > &vecX, const std::string ¶meter, const std::string &station) const |
|
double | getCorrection (const std::vector< double > &thresholds, const double &value) const |
|
std::vector< std::pair< size_t, size_t > > | getStarts (const std::vector< MeteoData > &ivec) const |
|
void | parse_args (const std::vector< std::pair< std::string, std::string > > &vecArgs) |
|
| ProcessingBlock (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name) |
| protected constructor only to be called by children More...
|
|
|
static void | readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y) |
|
static void | readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y1, std::vector< double > &Y2) |
|
static std::vector< double > | readCorrections (const std::string &filter, const std::string &filename, const size_t &col_idx, const char &c_type, const double &init) |
|
static std::vector< offset_spec > | readCorrections (const std::string &filter, const std::string &filename, const double &TZ, const size_t &col_idx=2) |
|
static std::map< std::string, std::vector< dates_range > > | readDates (const std::string &filter, const std::string &filename, const double &TZ) |
|
static std::set< std::string > | initStationSet (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &keyword) |
|
static const double | soil_albedo = .23 |
|
static const double | snow_albedo = .85 |
|
static const double | snow_thresh = .1 |
| parametrize the albedo from HS More...
|
|