| [section:inverse_gamma_dist Inverse Gamma Distribution] |
| |
| ``#include <boost/math/distributions/inverse_gamma.hpp>`` |
| |
| namespace boost{ namespace math{ |
| |
| template <class RealType = double, |
| class ``__Policy`` = ``__policy_class`` > |
| class inverse_gamma_distribution |
| { |
| public: |
| typedef RealType value_type; |
| typedef Policy policy_type; |
| |
| inverse_gamma_distribution(RealType shape, RealType scale = 1) |
| |
| RealType shape()const; |
| RealType scale()const; |
| }; |
| |
| }} // namespaces |
| |
| The inverse_gamma distribution is a continuous probability distribution |
| of the reciprocal of a variable distributed according to the gamma distribution. |
| |
| The inverse_gamma distribution is used in Bayesian statistics. |
| |
| See [@http://en.wikipedia.org/wiki/Inverse-gamma_distribution inverse gamma distribution]. |
| |
| [@http://rss.acs.unt.edu/Rdoc/library/pscl/html/igamma.html R inverse gamma distribution functions]. |
| |
| [@http://reference.wolfram.com/mathematica/ref/InverseGammaDistribution.html Wolfram inverse gamma distribution]. |
| |
| See also __gamma_distrib. |
| |
| |
| [note |
| In spite of potential confusion with the inverse gamma function, this |
| distribution *does* provide the typedef: |
| |
| ``typedef inverse_gamma_distribution<double> gamma;`` |
| |
| If you want a `double` precision gamma distribution you can use |
| |
| ``boost::math::inverse_gamma_distribution<>`` |
| |
| or you can write `inverse_gamma my_ig(2, 3);`] |
| |
| For shape parameter [alpha] and scale parameter [beta], it is defined |
| by the probability density function (PDF): |
| |
| __spaces f(x;[alpha], [beta]) = [beta][super [alpha]] * (1/x) [super [alpha]+1] exp(-[beta]/x) / [Gamma]([alpha]) |
| |
| and cumulative density function (CDF) |
| |
| __spaces F(x;[alpha], [beta]) = [Gamma]([alpha], [beta]/x) / [Gamma]([alpha]) |
| |
| The following graphs illustrate how the PDF and CDF of the inverse gamma distribution |
| varies as the parameters vary: |
| |
| [graph inverse_gamma_pdf] [/png or svg] |
| |
| [graph inverse_gamma_cdf] |
| |
| [h4 Member Functions] |
| |
| inverse_gamma_distribution(RealType shape = 1, RealType scale = 1); |
| |
| Constructs an inverse gamma distribution with shape [alpha] and scale [beta]. |
| |
| Requires that the shape and scale parameters are greater than zero, otherwise calls |
| __domain_error. |
| |
| RealType shape()const; |
| |
| Returns the [alpha] shape parameter of this inverse gamma distribution. |
| |
| RealType scale()const; |
| |
| Returns the [beta] scale parameter of this inverse gamma distribution. |
| |
| [h4 Non-member Accessors] |
| |
| All the [link math_toolkit.dist.dist_ref.nmp usual non-member accessor functions] that are generic to all |
| distributions are supported: __usual_accessors. |
| |
| The domain of the random variate is \[0,+[infin]\]. |
| [note Unlike some definitions, this implementation supports a random variate |
| equal to zero as a special case, returning zero for pdf and cdf.] |
| |
| [h4 Accuracy] |
| |
| The inverse gamma distribution is implemented in terms of the |
| incomplete gamma functions __gamma_p and __gamma_q and their |
| inverses __gamma_p_inv and __gamma_q_inv: refer to the accuracy |
| data for those functions for more information. |
| But in general, inverse_gamma results are accurate to a few epsilon, |
| >14 decimal digits accuracy for 64-bit double. |
| |
| [h4 Implementation] |
| |
| In the following table [alpha] is the shape parameter of the distribution, |
| [alpha][space] is its scale parameter, /x/ is the random variate, /p/ is the probability |
| and /q = 1-p/. |
| |
| [table |
| [[Function][Implementation Notes]] |
| [[pdf][Using the relation: pdf = __gamma_p_derivative([alpha], [beta]/ x, [beta]) / x * x ]] |
| [[cdf][Using the relation: p = __gamma_q([alpha], [beta] / x) ]] |
| [[cdf complement][Using the relation: q = __gamma_p([alpha], [beta] / x) ]] |
| [[quantile][Using the relation: x = [beta][space]/ __gamma_q_inv([alpha], p) ]] |
| [[quantile from the complement][Using the relation: x = [alpha][space]/ __gamma_p_inv([alpha], q) ]] |
| [[mode][[beta] / ([alpha] + 1) ]] |
| [[median][no analytic equation is known, but is evaluated as quantile(0.5)]] |
| [[mean][[beta] / ([alpha] - 1) for [alpha] > 1, else a __domain_error]] |
| [[variance][([beta] * [beta]) / (([alpha] - 1) * ([alpha] - 1) * ([alpha] - 2)) for [alpha] >2, else a __domain_error]] |
| [[skewness][4 * sqrt ([alpha] -2) / ([alpha] -3) for [alpha] >3, else a __domain_error]] |
| [[kurtosis_excess][(30 * [alpha] - 66) / (([alpha]-3)*([alpha] - 4)) for [alpha] >4, else a __domain_error]] |
| ] [/table] |
| |
| [endsect][/section:inverse_gamma_dist Inverse Gamma Distribution] |
| |
| [/ |
| Copyright 2010 John Maddock and Paul A. Bristow. |
| Distributed under the Boost Software License, Version 1.0. |
| (See accompanying file LICENSE_1_0.txt or copy at |
| http://www.boost.org/LICENSE_1_0.txt). |
| ] |
| |