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