| [section:variates Random Variates and Distribution Parameters] |
| |
| [@http://en.wikipedia.org/wiki/Random_variate Random variates] |
| and [@http://en.wikipedia.org/wiki/Parameter distribution parameters] |
| are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld |
| by placing a semi-colon after the __random_variate (whose value you 'choose'), |
| to separate the variate from the parameter(s) that defines the shape of the distribution. |
| |
| For example, the binomial distribution has two parameters: |
| n (the number of trials) and p (the probability of success on one trial). |
| It also has the __random_variate /k/: the number of successes observed. |
| This means the probability density\/mass function (pdf) is written as ['f(k; n, p)]. |
| |
| Translating this into code the `binomial_distribution` constructor |
| therefore has two parameters: |
| |
| binomial_distribution(RealType n, RealType p); |
| |
| While the function `pdf` has one argument specifying the distribution type |
| (which includes it's parameters, if any), |
| and a second argument for the __random_variate. So taking our binomial distribution |
| example, we would write: |
| |
| pdf(binomial_distribution<RealType>(n, p), k); |
| |
| [endsect] |
| |
| [section:dist_params Discrete Probability Distributions] |
| |
| Note that the [@http://en.wikipedia.org/wiki/Discrete_probability_distribution |
| discrete distributions], including the binomial, negative binomial, Poisson & Bernoulli, |
| are all mathematically defined as discrete functions: |
| only integral values of the __random_variate are envisaged |
| and the functions are only defined at these integral values. |
| However because the method of calculation often uses continuous functions, |
| it is convenient to treat them as if they were continuous functions, |
| and permit non-integral values of their parameters. |
| |
| To enforce a strict mathematical model, |
| users may use floor or ceil functions on the __random_variate, |
| prior to calling the distribution function, to enforce integral values. |
| |
| For similar reasons, in continuous distributions, parameters like degrees of freedom |
| that might appear to be integral, are treated as real values |
| (and are promoted from integer to floating-point if necessary). |
| In this case however, that there are a small number of situations where non-integral |
| degrees of freedom do have a genuine meaning. |
| |
| Generally speaking there is no loss of performance from allowing real-values |
| parameters: the underlying special functions contain optimizations for |
| integer-valued arguments when applicable. |
| |
| [caution |
| The quantile function of a discrete distribution will by |
| default return an integer result that has been |
| /rounded outwards/. That is to say lower quantiles (where the probability is |
| less than 0.5) are rounded downward, and upper quantiles (where the probability |
| is greater than 0.5) are rounded upwards. This behaviour |
| ensures that if an X% quantile is requested, then /at least/ the requested |
| coverage will be present in the central region, and /no more than/ |
| the requested coverage will be present in the tails. |
| |
| This behaviour can be changed so that the quantile functions are rounded |
| differently, or even return a real-valued result using |
| [link math_toolkit.policy.pol_overview Policies]. It is strongly |
| recommended that you read the tutorial |
| [link math_toolkit.policy.pol_tutorial.understand_dis_quant |
| Understanding Quantiles of Discrete Distributions] before |
| using the quantile function on a discrete distribution. The |
| [link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs] |
| describe how to change the rounding policy |
| for these distributions. |
| ] |
| |
| [endsect] |
| |
| [/ |
| Copyright 2006 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). |
| ] |
| |
| |