Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / math / doc / distributions / dist_reference.qbk
1 [section:dist_ref Statistical Distributions Reference]
2
3 [include non_members.qbk]
4
5 [section:dists Distributions]
6
7 [include arcsine.qbk]
8 [include bernoulli.qbk]
9 [include beta.qbk]
10 [include binomial.qbk]
11 [include cauchy.qbk]
12 [include chi_squared.qbk]
13 [include empirical_cdf.qbk]
14 [include exponential.qbk]
15 [include extreme_value.qbk]
16 [include fisher.qbk]
17 [include gamma.qbk]
18 [include geometric.qbk]
19 [include hyperexponential.qbk]
20 [include hypergeometric.qbk]
21 [include inverse_chi_squared.qbk]
22 [include inverse_gamma.qbk]
23 [include inverse_gaussian.qbk]
24 [include laplace.qbk]
25 [include logistic.qbk]
26 [include lognormal.qbk]
27 [include negative_binomial.qbk]
28 [include nc_beta.qbk]
29 [include nc_chi_squared.qbk]
30 [include nc_f.qbk]
31 [include nc_t.qbk]
32 [include normal.qbk]
33 [include pareto.qbk]
34 [include poisson.qbk]
35 [include rayleigh.qbk]
36 [include skew_normal.qbk]
37 [include students_t.qbk]
38 [include triangular.qbk]
39 [include uniform.qbk]
40 [include weibull.qbk]
41 [endsect] [/section:dists Distributions]
42
43 [include dist_algorithms.qbk]
44
45 [endsect] [/section:dist_ref Statistical Distributions and Functions Reference]
46
47
48 [section:future Extras/Future Directions]
49
50 [h4 Adding Additional Location and Scale Parameters]
51
52 In some modelling applications we require a distribution
53 with a specific location and scale:
54 often this equates to a specific mean and standard deviation, although for many
55 distributions the relationship between these properties and the location and
56 scale parameters are non-trivial. See
57 [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm]
58 for more information.
59
60 The obvious way to handle this is via an adapter template:
61
62   template <class Dist>
63   class scaled_distribution
64   {
65      scaled_distribution(
66        const Dist dist,
67        typename Dist::value_type location,
68        typename Dist::value_type scale = 0);
69   };
70
71 Which would then have its own set of overloads for the non-member accessor functions.
72
73 [h4 An "any_distribution" class]
74
75 It is easy to add a distribution object that virtualises
76 the actual type of the distribution, and can therefore hold "any" object
77 that conforms to the conceptual requirements of a distribution:
78
79    template <class RealType>
80    class any_distribution
81    {
82    public:
83       template <class Distribution>
84       any_distribution(const Distribution& d);
85    };
86
87    // Get the cdf of the underlying distribution:
88    template <class RealType>
89    RealType cdf(const any_distribution<RealType>& d, RealType x);
90    // etc....
91
92 Such a class would facilitate the writing of non-template code that can
93 function with any distribution type.
94
95 The [@http://sourceforge.net/projects/distexplorer/ Statistical Distribution Explorer]
96 utility for Windows is a usage example.
97
98 It's not clear yet whether there is a compelling use case though.
99 Possibly tests for goodness of fit might
100 provide such a use case: this needs more investigation.
101
102 [h4 Higher Level Hypothesis Tests]
103
104 Higher-level tests roughly corresponding to the
105 [@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/HypothesisTests.html Mathematica Hypothesis Tests]
106 package could be added reasonably easily, for example:
107
108   template <class InputIterator>
109   typename std::iterator_traits<InputIterator>::value_type
110      test_equal_mean(
111        InputIterator a,
112        InputIterator b,
113        typename std::iterator_traits<InputIterator>::value_type expected_mean);
114
115 Returns the probability that the data in the sequence \[a,b) has the mean
116 /expected_mean/.
117
118 [h4 Integration With Statistical Accumulators]
119
120 [@http://boost-sandbox.sourceforge.net/libs/accumulators/doc/html/index.html
121 Eric Niebler's accumulator framework] - also work in progress - provides the means
122 to calculate various statistical properties from experimental data.  There is an
123 opportunity to integrate the statistical tests with this framework at some later date:
124
125   // Define an accumulator, all required statistics to calculate the test
126   // are calculated automatically:
127   accumulator_set<double, features<tag::test_expected_mean> > acc(expected_mean=4);
128   // Pass our data to the accumulator:
129   acc = std::for_each(mydata.begin(), mydata.end(), acc);
130   // Extract the result:
131   double p = probability(acc);
132
133 [endsect] [/section:future Extras Future Directions]
134
135 [/ dist_reference.qbk
136   Copyright 2006, 2010 John Maddock and Paul A. Bristow.
137   Distributed under the Boost Software License, Version 1.0.
138   (See accompanying file LICENSE_1_0.txt or copy at
139   http://www.boost.org/LICENSE_1_0.txt).
140 ]