Cauchy Distribution

Table of contents


Density Function

The density function of the Cauchy distribution:

\[f(x; \mu, \sigma) = \dfrac{1}{\pi \sigma \left[ 1 + \left( \frac{x - \mu}{\sigma} \right)^2 \right]}\]

Methods for scalar input, as well as for vector/matrix input, are listed below.

Scalar Input

template<typename T1, typename T2, typename T3>
constexpr common_return_t<T1, T2, T3> dcauchy(const T1 x, const T2 mu_par, const T3 sigma_par, const bool log_form = false) noexcept

Density function of the Cauchy distribution.

Example:

stats::dcauchy(2.5,1.0,3.0,false); 

Parameters
  • x – a real-valued input.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-density or the true form.

Returns

the density function evaluated at x.

Vector/Matrix Input

STL Containers

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>>
inline std::vector<rT> dcauchy(const std::vector<eT> &x, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Density function of the Cauchy distribution.

Example:

std::vector<double> x = {0.0, 1.0, 2.0};
stats::dcauchy(x,1.0,2.0,false);

Parameters
  • x – a standard vector.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-density or the true form.

Returns

a vector of density function values corresponding to the elements of x.

Armadillo

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>>
inline ArmaMat<rT> dcauchy(const ArmaMat<eT> &X, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Density function of the Cauchy distribution.

Example:

arma::mat X = { {0.2, -1.7,  0.1},
                {0.9,  4.0, -0.3} };
stats::dcauchy(X,1.0,1.0,false);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-density or the true form.

Returns

a matrix of density function values corresponding to the elements of X.

Blaze

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>, bool To = blaze::columnMajor>
inline BlazeMat<rT, To> dcauchy(const BlazeMat<eT, To> &X, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Density function of the Cauchy distribution.

Example:

stats::dcauchy(X,1.0,1.0,false);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-density or the true form.

Returns

a matrix of density function values corresponding to the elements of X.

Eigen

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>, int iTr = Eigen::Dynamic, int iTc = Eigen::Dynamic>
inline EigenMat<rT, iTr, iTc> dcauchy(const EigenMat<eT, iTr, iTc> &X, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Density function of the Cauchy distribution.

Example:

stats::dcauchy(X,1.0,1.0,false);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-density or the true form.

Returns

a matrix of density function values corresponding to the elements of X.


Cumulative Distribution Function

The cumulative distribution function of the Cauchy distribution:

\[F(x; \mu, \sigma) = \int_{-\infty}^x f(z; \mu, \sigma) dz = 0.5 + \dfrac{1}{\pi} \text{arctan}\left( \frac{x - \mu}{\sigma} \right)\]

Methods for scalar input, as well as for vector/matrix input, are listed below.

Scalar Input

template<typename T1, typename T2, typename T3>
constexpr common_return_t<T1, T2, T3> pcauchy(const T1 x, const T2 mu_par, const T3 sigma_par, const bool log_form = false) noexcept

Distribution function of the Cauchy distribution.

Example:

stats::pcauchy(2.5,1.0,3.0,false); 

Parameters
  • x – a real-valued input.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-probability or the true form.

Returns

the cumulative distribution function evaluated at x.

Vector/Matrix Input

STL Containers

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>>
inline std::vector<rT> pcauchy(const std::vector<eT> &x, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Distribution function of the Cauchy distribution.

Example:

std::vector<double> x = {0.0, 1.0, 2.0};
stats::pcauchy(x,1.0,2.0,false);

Parameters
  • x – a standard vector.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-probability or the true form.

Returns

a vector of CDF values corresponding to the elements of x.

Armadillo

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>>
inline ArmaMat<rT> pcauchy(const ArmaMat<eT> &X, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Distribution function of the Cauchy distribution.

Example:

arma::mat X = { {0.2, -1.7,  0.1},
                {0.9,  4.0, -0.3} };
stats::pcauchy(X,1.0,1.0,false);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-probability or the true form.

Returns

a matrix of CDF values corresponding to the elements of X.

Blaze

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>, bool To = blaze::columnMajor>
inline BlazeMat<rT, To> pcauchy(const BlazeMat<eT, To> &X, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Distribution function of the Cauchy distribution.

Example:

stats::pcauchy(X,1.0,1.0,false);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-probability or the true form.

Returns

a matrix of CDF values corresponding to the elements of X.

Eigen

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>, int iTr = Eigen::Dynamic, int iTc = Eigen::Dynamic>
inline EigenMat<rT, iTr, iTc> pcauchy(const EigenMat<eT, iTr, iTc> &X, const T1 mu_par, const T2 sigma_par, const bool log_form = false)

Distribution function of the Cauchy distribution.

Example:

stats::pcauchy(X,1.0,1.0,false);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • log_form – return the log-probability or the true form.

Returns

a matrix of CDF values corresponding to the elements of X.


Quantile Function

The quantile function of the Cauchy distribution:

\[q(p; \mu, \sigma) = \mu + \gamma \text{tan} \left( \pi (p - 0.5) \right)\]

Methods for scalar input, as well as for vector/matrix input, are listed below.

Scalar Input

template<typename T1, typename T2, typename T3>
constexpr common_return_t<T1, T2, T3> qcauchy(const T1 p, const T2 mu_par, const T3 sigma_par) noexcept

Quantile function of the Cauchy distribution.

Example:

stats::qcauchy(0.5,1.0,3.0); 

Parameters
  • p – a real-valued input.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

Returns

the quantile function evaluated at p.

Vector/Matrix Input

STL Containers

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>>
inline std::vector<rT> qcauchy(const std::vector<eT> &x, const T1 mu_par, const T2 sigma_par)

Quantile function of the Cauchy distribution.

Example:

std::vector<double> x = {0.1, 0.3, 0.7};
stats::qcauchy(x,1.0,2.0);

Parameters
  • x – a standard vector.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

Returns

a vector of quantile values corresponding to the elements of x.

Armadillo

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>>
inline ArmaMat<rT> qcauchy(const ArmaMat<eT> &X, const T1 mu_par, const T2 sigma_par)

Quantile function of the Cauchy distribution.

Example:

arma::mat X = { {0.2, 0.7, 0.9},
                {0.1, 0.8, 0.3} };
stats::qcauchy(X,1.0,1.0);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

Returns

a matrix of quantile values corresponding to the elements of X.

Blaze

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>, bool To = blaze::columnMajor>
inline BlazeMat<rT, To> qcauchy(const BlazeMat<eT, To> &X, const T1 mu_par, const T2 sigma_par)

Quantile function of the Cauchy distribution.

Example:

stats::qcauchy(X,1.0,1.0);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

Returns

a matrix of quantile values corresponding to the elements of X.

Eigen

template<typename eT, typename T1, typename T2, typename rT = common_return_t<eT, T1, T2>, int iTr = Eigen::Dynamic, int iTc = Eigen::Dynamic>
inline EigenMat<rT, iTr, iTc> qcauchy(const EigenMat<eT, iTr, iTc> &X, const T1 mu_par, const T2 sigma_par)

Quantile function of the Cauchy distribution.

Example:

stats::qcauchy(X,1.0,1.0);

Parameters
  • X – a matrix of input values.

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

Returns

a matrix of quantile values corresponding to the elements of X.


Random Sampling

Random sampling for the Cauchy distribution is achieved via the inverse probability integral transform.

Scalar Output

Random number engines

template<typename T1, typename T2>
inline common_return_t<T1, T2> rcauchy(const T1 mu_par, const T2 sigma_par, rand_engine_t &engine)

Random sampling function for the Cauchy distribution.

Example:

stats::rand_engine_t engine(1776);
stats::rcauchy(1.0,2.0,engine);

Parameters
  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • engine – a random engine, passed by reference.

Returns

a pseudo-random draw from the Cauchy distribution.

Seed values

template<typename T1, typename T2>
inline common_return_t<T1, T2> rcauchy(const T1 mu_par, const T2 sigma_par, const ullint_t seed_val = std::random_device{}())

Random sampling function for the Cauchy distribution.

Example:

stats::rcauchy(1.0,2.0,1776);

Parameters
  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • seed_val – initialize the random engine with a non-negative integral-valued seed.

Returns

a pseudo-random draw from the Cauchy distribution.

Vector/Matrix Output

  1. Random number engines

template<typename mT, typename T1, typename T2>
inline mT rcauchy(const ullint_t n, const ullint_t k, const T1 mu_par, const T2 sigma_par, rand_engine_t &engine)

Random matrix sampling function for the Cauchy distribution.

Example:

stats::rand_engine_t engine(1776);
// std::vector
stats::rcauchy<std::vector<double>>(5,4,1.0,2.0,engine);
// Armadillo matrix
stats::rcauchy<arma::mat>(5,4,1.0,2.0,engine);
// Blaze dynamic matrix
stats::rcauchy<blaze::DynamicMatrix<double,blaze::columnMajor>>(5,4,1.0,2.0,engine);
// Eigen dynamic matrix
stats::rcauchy<Eigen::MatrixXd>(5,4,1.0,2.0,engine);

Note

This function requires template instantiation; acceptable output types include: std::vector, with element types float, double, etc., as well as Armadillo, Blaze, and Eigen dense matrices.

Parameters
  • n – the number of output rows

  • k – the number of output columns

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • engine – a random engine, passed by reference.

Returns

a matrix of pseudo-random draws from the Cauchy distribution.

  1. Seed values

template<typename mT, typename T1, typename T2>
inline mT rcauchy(const ullint_t n, const ullint_t k, const T1 mu_par, const T2 sigma_par, const ullint_t seed_val = std::random_device{}())

Random matrix sampling function for the Cauchy distribution.

Example:

// std::vector
stats::rcauchy<std::vector<double>>(5,4,1.0,2.0);
// Armadillo matrix
stats::rcauchy<arma::mat>(5,4,1.0,2.0);
// Blaze dynamic matrix
stats::rcauchy<blaze::DynamicMatrix<double,blaze::columnMajor>>(5,4,1.0,2.0);
// Eigen dynamic matrix
stats::rcauchy<Eigen::MatrixXd>(5,4,1.0,2.0);

Note

This function requires template instantiation; acceptable output types include: std::vector, with element types float, double, etc., as well as Armadillo, Blaze, and Eigen dense matrices.

Parameters
  • n – the number of output rows

  • k – the number of output columns

  • mu_par – the location parameter, a real-valued input.

  • sigma_par – the scale parameter, a real-valued input.

  • seed_val – initialize the random engine with a non-negative integral-valued seed.

Returns

a matrix of pseudo-random draws from the Cauchy distribution.