File: dist_reference.qbk

package info (click to toggle)
boost1.35 1.35.0-5
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 203,856 kB
  • ctags: 337,867
  • sloc: cpp: 938,683; xml: 56,847; ansic: 41,589; python: 18,999; sh: 11,566; makefile: 664; perl: 494; yacc: 456; asm: 353; csh: 6
file content (128 lines) | stat: -rw-r--r-- 4,356 bytes parent folder | download
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
[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/lognormal.qbk]
[include distributions/negative_binomial.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/weibull.qbk]
[include distributions/uniform.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 would be fairly trivial 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.  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 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).
]