blob: 4e63eef98b974c1d6717090f436f8b9e5c53a6d9 [file] [log] [blame]
[section:poisson_dist Poisson Distribution]
``#include <boost/math/distributions/poisson.hpp>``
namespace boost { namespace math {
template <class RealType = double,
class ``__Policy`` = ``__policy_class`` >
class poisson_distribution;
typedef poisson_distribution<> poisson;
template <class RealType, class ``__Policy``>
class poisson_distribution
{
public:
typedef RealType value_type;
typedef Policy policy_type;
poisson_distribution(RealType mean = 1); // Constructor.
RealType mean()const; // Accessor.
}
}} // namespaces boost::math
The [@http://en.wikipedia.org/wiki/Poisson_distribution Poisson distribution]
is a well-known statistical discrete distribution.
It expresses the probability of a number of events
(or failures, arrivals, occurrences ...)
occurring in a fixed period of time,
provided these events occur with a known mean rate [lambda][space]
(events/time), and are independent of the time since the last event.
The distribution was discovered by Sim__eacute on-Denis Poisson (1781 to 1840).
It has the Probability Mass Function:
[equation poisson_ref1]
for k events, with an expected number of events [lambda].
The following graph illustrates how the PDF varies with the parameter [lambda]:
[graph poisson_pdf_1]
[discrete_quantile_warning Poisson]
[h4 Member Functions]
poisson_distribution(RealType mean = 1);
Constructs a poisson distribution with mean /mean/.
RealType mean()const;
Returns the /mean/ of this 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 variable is \[0, [infin]\].
[h4 Accuracy]
The Poisson distribution is implemented in terms of the
incomplete gamma functions __gamma_p and __gamma_q
and as such should have low error rates: but refer to the documentation
of those functions for more information.
The quantile and its complement use the inverse gamma functions
and are therefore probably slightly less accurate: this is because the
inverse gamma functions are implemented using an iterative method with a
lower tolerance to avoid excessive computation.
[h4 Implementation]
In the following table [lambda][space] is the mean of the distribution,
/k/ is the random variable, /p/ is the probability and /q = 1-p/.
[table
[[Function][Implementation Notes]]
[[pdf][Using the relation: pdf = e[super -[lambda]] [lambda][super k] \/ k! ]]
[[cdf][Using the relation: p = [Gamma](k+1, [lambda]) \/ k! = __gamma_q(k+1, [lambda])]]
[[cdf complement][Using the relation: q = __gamma_p(k+1, [lambda]) ]]
[[quantile][Using the relation: k = __gamma_q_inva([lambda], p) - 1]]
[[quantile from the complement][Using the relation: k = __gamma_p_inva([lambda], q) - 1]]
[[mean][[lambda]]]
[[mode][ floor ([lambda]) or [floorlr[lambda]] ]]
[[skewness][1/[radic][lambda]]]
[[kurtosis][3 + 1/[lambda]]]
[[kurtosis excess][1/[lambda]]]
]
[/ poisson.qbk
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).
]
[endsect][/section:poisson_dist Poisson]