3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Extras/Future Directions
</title>
5 <link rel=
"stylesheet" href=
"../math.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.77.1">
7 <link rel=
"home" href=
"../index.html" title=
"Math Toolkit 2.5.1">
8 <link rel=
"up" href=
"../dist.html" title=
"Chapter 5. Statistical Distributions and Functions">
9 <link rel=
"prev" href=
"dist_ref/dist_algorithms.html" title=
"Distribution Algorithms">
10 <link rel=
"next" href=
"../special.html" title=
"Chapter 6. Special Functions">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"dist_ref/dist_algorithms.html"><img src=
"../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../dist.html"><img src=
"../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../index.html"><img src=
"../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"../special.html"><img src=
"../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h2 class=
"title" style=
"clear: both">
27 <a name=
"math_toolkit.future"></a><a class=
"link" href=
"future.html" title=
"Extras/Future Directions">Extras/Future Directions
</a>
28 </h2></div></div></div>
30 <a name=
"math_toolkit.future.h0"></a>
31 <span class=
"phrase"><a name=
"math_toolkit.future.adding_additional_location_and_s"></a></span><a class=
"link" href=
"future.html#math_toolkit.future.adding_additional_location_and_s">Adding
32 Additional Location and Scale Parameters
</a>
35 In some modelling applications we require a distribution with a specific location
36 and scale: often this equates to a specific mean and standard deviation, although
37 for many distributions the relationship between these properties and the location
38 and scale parameters are non-trivial. See
<a href=
"http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm" target=
"_top">http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm
</a>
42 The obvious way to handle this is via an adapter template:
44 <pre class=
"programlisting"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">Dist
</span><span class=
"special">></span>
45 <span class=
"keyword">class
</span> <span class=
"identifier">scaled_distribution
</span>
46 <span class=
"special">{
</span>
47 <span class=
"identifier">scaled_distribution
</span><span class=
"special">(
</span>
48 <span class=
"keyword">const
</span> <span class=
"identifier">Dist
</span> <span class=
"identifier">dist
</span><span class=
"special">,
</span>
49 <span class=
"keyword">typename
</span> <span class=
"identifier">Dist
</span><span class=
"special">::
</span><span class=
"identifier">value_type
</span> <span class=
"identifier">location
</span><span class=
"special">,
</span>
50 <span class=
"keyword">typename
</span> <span class=
"identifier">Dist
</span><span class=
"special">::
</span><span class=
"identifier">value_type
</span> <span class=
"identifier">scale
</span> <span class=
"special">=
</span> <span class=
"number">0</span><span class=
"special">);
</span>
51 <span class=
"special">};
</span>
54 Which would then have its own set of overloads for the non-member accessor
58 <a name=
"math_toolkit.future.h1"></a>
59 <span class=
"phrase"><a name=
"math_toolkit.future.an_any_distribution_class"></a></span><a class=
"link" href=
"future.html#math_toolkit.future.an_any_distribution_class">An
60 "any_distribution" class
</a>
63 It is easy to add a distribution object that virtualises the actual type of
64 the distribution, and can therefore hold
"any" object that conforms
65 to the conceptual requirements of a distribution:
67 <pre class=
"programlisting"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">RealType
</span><span class=
"special">></span>
68 <span class=
"keyword">class
</span> <span class=
"identifier">any_distribution
</span>
69 <span class=
"special">{
</span>
70 <span class=
"keyword">public
</span><span class=
"special">:
</span>
71 <span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">Distribution
</span><span class=
"special">></span>
72 <span class=
"identifier">any_distribution
</span><span class=
"special">(
</span><span class=
"keyword">const
</span> <span class=
"identifier">Distribution
</span><span class=
"special">&</span> <span class=
"identifier">d
</span><span class=
"special">);
</span>
73 <span class=
"special">};
</span>
75 <span class=
"comment">// Get the cdf of the underlying distribution:
</span>
76 <span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">RealType
</span><span class=
"special">></span>
77 <span class=
"identifier">RealType
</span> <span class=
"identifier">cdf
</span><span class=
"special">(
</span><span class=
"keyword">const
</span> <span class=
"identifier">any_distribution
</span><span class=
"special"><</span><span class=
"identifier">RealType
</span><span class=
"special">>&</span> <span class=
"identifier">d
</span><span class=
"special">,
</span> <span class=
"identifier">RealType
</span> <span class=
"identifier">x
</span><span class=
"special">);
</span>
78 <span class=
"comment">// etc....
</span>
81 Such a class would facilitate the writing of non-template code that can function
82 with any distribution type.
85 The
<a href=
"http://sourceforge.net/projects/distexplorer/" target=
"_top">Statistical
86 Distribution Explorer
</a> utility for Windows is a usage example.
89 It's not clear yet whether there is a compelling use case though. Possibly
90 tests for goodness of fit might provide such a use case: this needs more investigation.
93 <a name=
"math_toolkit.future.h2"></a>
94 <span class=
"phrase"><a name=
"math_toolkit.future.higher_level_hypothesis_tests"></a></span><a class=
"link" href=
"future.html#math_toolkit.future.higher_level_hypothesis_tests">Higher
95 Level Hypothesis Tests
</a>
98 Higher-level tests roughly corresponding to the
<a href=
"http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/HypothesisTests.html" target=
"_top">Mathematica
99 Hypothesis Tests
</a> package could be added reasonably easily, for example:
101 <pre class=
"programlisting"><span class=
"keyword">template
</span> <span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">InputIterator
</span><span class=
"special">></span>
102 <span class=
"keyword">typename
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">iterator_traits
</span><span class=
"special"><</span><span class=
"identifier">InputIterator
</span><span class=
"special">>::
</span><span class=
"identifier">value_type
</span>
103 <span class=
"identifier">test_equal_mean
</span><span class=
"special">(
</span>
104 <span class=
"identifier">InputIterator
</span> <span class=
"identifier">a
</span><span class=
"special">,
</span>
105 <span class=
"identifier">InputIterator
</span> <span class=
"identifier">b
</span><span class=
"special">,
</span>
106 <span class=
"keyword">typename
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">iterator_traits
</span><span class=
"special"><</span><span class=
"identifier">InputIterator
</span><span class=
"special">>::
</span><span class=
"identifier">value_type
</span> <span class=
"identifier">expected_mean
</span><span class=
"special">);
</span>
109 Returns the probability that the data in the sequence [a,b) has the mean
<span class=
"emphasis"><em>expected_mean
</em></span>.
112 <a name=
"math_toolkit.future.h3"></a>
113 <span class=
"phrase"><a name=
"math_toolkit.future.integration_with_statistical_acc"></a></span><a class=
"link" href=
"future.html#math_toolkit.future.integration_with_statistical_acc">Integration
114 With Statistical Accumulators
</a>
117 <a href=
"http://boost-sandbox.sourceforge.net/libs/accumulators/doc/html/index.html" target=
"_top">Eric
118 Niebler's accumulator framework
</a> - also work in progress - provides
119 the means to calculate various statistical properties from experimental data.
120 There is an opportunity to integrate the statistical tests with this framework
123 <pre class=
"programlisting"><span class=
"comment">// Define an accumulator, all required statistics to calculate the test
</span>
124 <span class=
"comment">// are calculated automatically:
</span>
125 <span class=
"identifier">accumulator_set
</span><span class=
"special"><</span><span class=
"keyword">double
</span><span class=
"special">,
</span> <span class=
"identifier">features
</span><span class=
"special"><</span><span class=
"identifier">tag
</span><span class=
"special">::
</span><span class=
"identifier">test_expected_mean
</span><span class=
"special">></span> <span class=
"special">></span> <span class=
"identifier">acc
</span><span class=
"special">(
</span><span class=
"identifier">expected_mean
</span><span class=
"special">=
</span><span class=
"number">4</span><span class=
"special">);
</span>
126 <span class=
"comment">// Pass our data to the accumulator:
</span>
127 <span class=
"identifier">acc
</span> <span class=
"special">=
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">for_each
</span><span class=
"special">(
</span><span class=
"identifier">mydata
</span><span class=
"special">.
</span><span class=
"identifier">begin
</span><span class=
"special">(),
</span> <span class=
"identifier">mydata
</span><span class=
"special">.
</span><span class=
"identifier">end
</span><span class=
"special">(),
</span> <span class=
"identifier">acc
</span><span class=
"special">);
</span>
128 <span class=
"comment">// Extract the result:
</span>
129 <span class=
"keyword">double
</span> <span class=
"identifier">p
</span> <span class=
"special">=
</span> <span class=
"identifier">probability
</span><span class=
"special">(
</span><span class=
"identifier">acc
</span><span class=
"special">);
</span>
132 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
133 <td align=
"left"></td>
134 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2006-
2010,
2012-
2014 Nikhar Agrawal,
135 Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert
136 Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R
åde, Gautam Sewani,
137 Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang
<p>
138 Distributed under the Boost Software License, Version
1.0. (See accompanying
139 file LICENSE_1_0.txt or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt" target=
"_top">http://www.boost.org/LICENSE_1_0.txt
</a>)
144 <div class=
"spirit-nav">
145 <a accesskey=
"p" href=
"dist_ref/dist_algorithms.html"><img src=
"../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../dist.html"><img src=
"../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../index.html"><img src=
"../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"../special.html"><img src=
"../../../../../doc/src/images/next.png" alt=
"Next"></a>