19#ifndef LIBINTERPOL1D_H
20#define LIBINTERPOL1D_H
38 static double min_element(
const std::vector<double>& X);
39 static double max_element(
const std::vector<double>& X);
40 static std::vector<double>
quantiles(
const std::vector<double>& X,
const std::vector<double>& quartiles);
41 static std::vector<double>
quantiles_core(std::vector<double> X,
const std::vector<double>& quartiles);
42 static std::vector<double>
derivative(
const std::vector<double>& X,
const std::vector<double>& Y);
43 static void sort(std::vector<double>& X, std::vector<double>& Y,
const bool& keep_nodata=
true);
44 static void equalBin(
const unsigned int k, std::vector<double> &X, std::vector<double> &Y);
45 static void equalCountBin(
const unsigned int k, std::vector<double> &X, std::vector<double> &Y);
46 static double weightedMean(
const double& d1,
const double& d2,
const double& weight=1.);
47 static double weightedMean(
const std::vector<double>& vecData,
const std::vector<double>& weight);
49 static double getMedian(
const std::vector<double>& vecData,
const bool& keep_nodata=
true);
51 static double variance(
const std::vector<double>& X);
52 static double std_dev(
const std::vector<double>& X);
53 static double covariance(
const std::vector<double>& z1,
const std::vector<double>& z2);
54 static double corr(
const std::vector<double>& z1,
const std::vector<double>& z2);
55 static double Pearson(
const std::vector<double>& X,
const std::vector<double>& Y);
56 static double R2(
const std::vector<double>& obs,
const std::vector<double>& sim);
57 static double NashSuttcliffe(
const std::vector<double>& obs,
const std::vector<double>& sim);
60 static void LinRegression(
const std::vector<double>& X,
const std::vector<double>& Y,
double& a,
double& b,
double& r, std::string& mesg,
const bool& fixed_rate=
false);
61 static void NoisyLinRegression(
const std::vector<double>& in_X,
const std::vector<double>& in_Y,
double& A,
double& B,
double& R, std::string& mesg,
const bool& fixed_rate=
false);
62 static void twoLinRegression(
const std::vector<double>& in_X,
const std::vector<double>& in_Y,
const double& bilin_inflection, std::vector<double>& coeffs);
63 static void LogRegression(
const std::vector<double>& X,
const std::vector<double>& Y,
double& a,
double& b,
double& r, std::string& mesg);
64 static void ExpRegression(
const std::vector<double>& X,
const std::vector<double>& Y,
double& a,
double& b,
double& r, std::string& mesg);
67 static double getMedianCore(std::vector<double> vecData);
68 static bool ptOK(
const double& x,
const double& y);
69 static void LinRegressionFixedRate(
const std::vector<double>& X,
const std::vector<double>& Y,
double& a,
double& b,
double& r, std::string& mesg);
70 static bool pair_comparator(
const std::pair<double, double>& l,
const std::pair<double, double>& r);
71 static double pt_line_distance(
const double& x,
const double& y,
const double& a,
const double& b);
A class to perform basic 1D statistics. Each method is static.
Definition: libinterpol1D.h:36
static void LogRegression(const std::vector< double > &X, const std::vector< double > &Y, double &a, double &b, double &r, std::string &mesg)
Computes the Log regression coefficients fitting the points given as X and Y in two vectors the log r...
Definition: libinterpol1D.cc:904
static std::vector< double > quantiles_core(std::vector< double > X, const std::vector< double > &quartiles)
This function returns a vector of quantiles, but does not filter out nodata values!...
Definition: libinterpol1D.cc:92
static double covariance(const std::vector< double > &z1, const std::vector< double > &z2)
Definition: libinterpol1D.cc:506
static void equalCountBin(const unsigned int k, std::vector< double > &X, std::vector< double > &Y)
data binning method This bins the data into k classes of equal number of elements (see https://en....
Definition: libinterpol1D.cc:242
static double corr(const std::vector< double > &z1, const std::vector< double > &z2)
Computes the Pearson product-moment correlation coefficient This should be equivalent to the default ...
Definition: libinterpol1D.cc:536
static std::vector< double > quantiles(const std::vector< double > &X, const std::vector< double > &quartiles)
This function returns a vector of quantiles. The vector does not have to be sorted....
Definition: libinterpol1D.cc:67
static double getBoxMuller()
Box–Muller method for normally distributed random numbers.
Definition: libinterpol1D.cc:652
static double weightedMean(const double &d1, const double &d2, const double &weight=1.)
This function returns the weighted arithmetic mean of two numbers. A weight of 0 returns d1,...
Definition: libinterpol1D.cc:335
static double arithmeticMean(const std::vector< double > &vecData)
Definition: libinterpol1D.cc:378
static double NashSuttcliffe(const std::vector< double > &obs, const std::vector< double > &sim)
Computes the Nash-Suttcliffe correlation coefficient for two vectors It is assumed that the same indi...
Definition: libinterpol1D.cc:623
static double std_dev(const std::vector< double > &X)
Definition: libinterpol1D.cc:500
static void NoisyLinRegression(const std::vector< double > &in_X, const std::vector< double > &in_Y, double &A, double &B, double &R, std::string &mesg, const bool &fixed_rate=false)
Computes the linear regression coefficients fitting the points given as X and Y in two vectors the li...
Definition: libinterpol1D.cc:809
static void equalBin(const unsigned int k, std::vector< double > &X, std::vector< double > &Y)
data binning method This bins the data into k classes of equal width (see https://en....
Definition: libinterpol1D.cc:198
static void LinRegression(const std::vector< double > &X, const std::vector< double > &Y, double &a, double &b, double &r, std::string &mesg, const bool &fixed_rate=false)
Computes the linear regression coefficients fitting the points given as X and Y in two vectors the li...
Definition: libinterpol1D.cc:687
static double getMedianAverageDeviation(std::vector< double > vecData, const bool &keep_nodata=true)
Definition: libinterpol1D.cc:441
static double min_element(const std::vector< double > &X)
Definition: libinterpol1D.cc:34
static double variance(const std::vector< double > &X)
Compute the variance of a vector of data It is computed using a compensated variance algorithm,...
Definition: libinterpol1D.cc:470
static double Pearson(const std::vector< double > &X, const std::vector< double > &Y)
Computes the Pearson product-moment correlation coefficient in a more numerically efficient manner th...
Definition: libinterpol1D.cc:556
static void ExpRegression(const std::vector< double > &X, const std::vector< double > &Y, double &a, double &b, double &r, std::string &mesg)
Computes the power regression coefficients fitting the points given as X and Y in two vectors the pow...
Definition: libinterpol1D.cc:926
static void sort(std::vector< double > &X, std::vector< double > &Y, const bool &keep_nodata=true)
This function sorts the X and Y vectors by increasing X. The nodata values (both in X and Y) are remo...
Definition: libinterpol1D.cc:294
static double R2(const std::vector< double > &obs, const std::vector< double > &sim)
Computes the R2 coefficient of determination See https://en.wikipedia.org/wiki/Coefficient_of_determi...
Definition: libinterpol1D.cc:592
static void twoLinRegression(const std::vector< double > &in_X, const std::vector< double > &in_Y, const double &bilin_inflection, std::vector< double > &coeffs)
Computes the bi-linear regression coefficients fitting the points given as X and Y in two vectors We ...
Definition: libinterpol1D.cc:861
static double max_element(const std::vector< double > &X)
Definition: libinterpol1D.cc:46
static double getMedian(const std::vector< double > &vecData, const bool &keep_nodata=true)
Definition: libinterpol1D.cc:421
static std::vector< double > derivative(const std::vector< double > &X, const std::vector< double > &Y)
This function returns the vector of local derivatives, given a vector of abscissae and ordinates....
Definition: libinterpol1D.cc:139