]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/math/doc/html/math_toolkit/dist_ref/dists/arcine_dist.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / math / doc / html / math_toolkit / dist_ref / dists / arcine_dist.html
CommitLineData
7c673cae
FG
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4<title>Arcsine Distribution</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="../dists.html" title="Distributions">
9<link rel="prev" href="../dists.html" title="Distributions">
10<link rel="next" href="bernoulli_dist.html" title="Bernoulli Distribution">
11</head>
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>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../dists.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.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="bernoulli_dist.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h4 class="title">
27<a name="math_toolkit.dist_ref.dists.arcine_dist"></a><a class="link" href="arcine_dist.html" title="Arcsine Distribution">Arcsine Distribution</a>
28</h4></div></div></div>
29<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">distributions</span><span class="special">/</span><span class="identifier">arcsine</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></pre>
30<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
31
32 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">,</span>
33 <span class="keyword">class</span> <a class="link" href="../../../policy.html" title="Chapter&#160;15.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy&lt;&gt;</a> <span class="special">&gt;</span>
34<span class="keyword">class</span> <span class="identifier">arcsine_distribution</span><span class="special">;</span>
35
36<span class="keyword">typedef</span> <span class="identifier">arcsine_distribution</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">arcsine</span><span class="special">;</span> <span class="comment">// double precision standard arcsine distribution [0,1].</span>
37
38<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../../policy.html" title="Chapter&#160;15.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
39<span class="keyword">class</span> <span class="identifier">arcsine_distribution</span>
40<span class="special">{</span>
41<span class="keyword">public</span><span class="special">:</span>
42 <span class="keyword">typedef</span> <span class="identifier">RealType</span> <span class="identifier">value_type</span><span class="special">;</span>
43 <span class="keyword">typedef</span> <span class="identifier">Policy</span> <span class="identifier">policy_type</span><span class="special">;</span>
44
45 <span class="comment">// Constructor from two range parameters, x_min and x_max:</span>
46 <span class="identifier">arcsine_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">x_min</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x_max</span><span class="special">);</span>
47
48 <span class="comment">// Range Parameter accessors:</span>
49 <span class="identifier">RealType</span> <span class="identifier">x_min</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
50 <span class="identifier">RealType</span> <span class="identifier">x_max</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
51<span class="special">};</span>
52<span class="special">}}</span> <span class="comment">// namespaces</span>
53</pre>
54<p>
55 The class type <code class="computeroutput"><span class="identifier">arcsine_distribution</span></code>
56 represents an <a href="http://en.wikipedia.org/wiki/arcsine_distribution" target="_top">arcsine</a>
57 <a href="http://en.wikipedia.org/wiki/Probability_distribution" target="_top">probability
58 distribution function</a>. The arcsine distribution is named because
59 its CDF uses the inverse sin<sup>-1</sup> or arcsine.
60 </p>
61<p>
62 This is implemented as a generalized version with support from <span class="emphasis"><em>x_min</em></span>
63 to <span class="emphasis"><em>x_max</em></span> providing the 'standard arcsine distribution'
64 as default with <span class="emphasis"><em>x_min = 0</em></span> and <span class="emphasis"><em>x_max = 1</em></span>.
65 (A few make other choices for 'standard').
66 </p>
67<p>
68 The arcsine distribution is generalized to include any bounded support
69 <span class="emphasis"><em>a &lt;= x &lt;= b</em></span> by <a href="http://reference.wolfram.com/language/ref/ArcSinDistribution.html" target="_top">Wolfram</a>
70 and <a href="http://en.wikipedia.org/wiki/arcsine_distribution" target="_top">Wikipedia</a>,
71 but also using <span class="emphasis"><em>location</em></span> and <span class="emphasis"><em>scale</em></span>
72 parameters by <a href="http://www.math.uah.edu/stat/index.html" target="_top">Virtual
73 Laboratories in Probability and Statistics</a> <a href="http://www.math.uah.edu/stat/special/Arcsine.html" target="_top">Arcsine
74 distribution</a>. The end-point version is simpler and more obvious,
75 so we implement that. If desired, <a href="http://en.wikipedia.org/wiki/arcsine_distribution" target="_top">this</a>
76 outlines how the <a class="link" href="beta_dist.html" title="Beta Distribution">Beta
77 Distribution</a> can be used to add a shape factor.
78 </p>
79<p>
80 The <a href="http://en.wikipedia.org/wiki/Probability_density_function" target="_top">probability
81 density function PDF</a> for the <a href="http://en.wikipedia.org/wiki/arcsine_distribution" target="_top">arcsine
82 distribution</a> defined on the interval [<span class="emphasis"><em>x_min, x_max</em></span>]
83 is given by:
84 </p>
85<p>
86 &#8199; &#8199; f(x; x_min, x_max) = 1 /(&#960;&#8901;&#8730;((x - x_min)&#8901;(x_max - x_min))
87 </p>
88<p>
89 For example, <a href="http://www.wolframalpha.com/" target="_top">Wolfram Alpha</a>
90 arcsine distribution, from input of
91 </p>
92<pre class="programlisting"><span class="identifier">N</span><span class="special">[</span><span class="identifier">PDF</span><span class="special">[</span><span class="identifier">arcsinedistribution</span><span class="special">[</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">],</span> <span class="number">0.5</span><span class="special">],</span> <span class="number">50</span><span class="special">]</span>
93</pre>
94<p>
95 computes the PDF value
96 </p>
97<pre class="programlisting"><span class="number">0.63661977236758134307553505349005744813783858296183</span>
98</pre>
99<p>
100 The Probability Density Functions (PDF) of generalized arcsine distributions
101 are symmetric U-shaped curves, centered on <span class="emphasis"><em>(x_max - x_min)/2</em></span>,
102 highest (infinite) near the two extrema, and quite flat over the central
103 region.
104 </p>
105<p>
106 If random variate <span class="emphasis"><em>x</em></span> is <span class="emphasis"><em>x_min</em></span>
107 or <span class="emphasis"><em>x_max</em></span>, then the PDF is infinity. If random variate
108 <span class="emphasis"><em>x</em></span> is <span class="emphasis"><em>x_min</em></span> then the CDF is zero.
109 If random variate <span class="emphasis"><em>x</em></span> is <span class="emphasis"><em>x_max</em></span>
110 then the CDF is unity.
111 </p>
112<p>
113 The 'Standard' (0, 1) arcsine distribution is shown in blue and some generalized
114 examples with other <span class="emphasis"><em>x</em></span> ranges.
115 </p>
116<p>
117 <span class="inlinemediaobject"><img src="../../../../graphs/arcsine_pdf.svg" align="middle"></span>
118 </p>
119<p>
120 The Cumulative Distribution Function CDF is defined as
121 </p>
122<p>
123 &#8199; &#8199; F(x) = 2&#8901;arcsin(&#8730;((x-x_min)/(x_max - x))) / &#960;
124 </p>
125<p>
126 <span class="inlinemediaobject"><img src="../../../../graphs/arcsine_cdf.svg" align="middle"></span>
127 </p>
128<h6>
129<a name="math_toolkit.dist_ref.dists.arcine_dist.h0"></a>
130 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.constructor"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.constructor">Constructor</a>
131 </h6>
132<pre class="programlisting"><span class="identifier">arcsine_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">x_min</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">x_max</span><span class="special">);</span>
133</pre>
134<p>
135 constructs an arcsine distribution with range parameters <span class="emphasis"><em>x_min</em></span>
136 and <span class="emphasis"><em>x_max</em></span>.
137 </p>
138<p>
139 Requires <span class="emphasis"><em>x_min &lt; x_max</em></span>, otherwise <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
140 is called.
141 </p>
142<p>
143 For example:
144 </p>
145<pre class="programlisting"><span class="identifier">arcsine_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">myarcsine</span><span class="special">(-</span><span class="number">2</span><span class="special">,</span> <span class="number">4</span><span class="special">);</span>
146</pre>
147<p>
148 constructs an arcsine distribution with <span class="emphasis"><em>x_min = -2</em></span>
149 and <span class="emphasis"><em>x_max = 4</em></span>.
150 </p>
151<p>
152 Default values of <span class="emphasis"><em>x_min = 0</em></span> and <span class="emphasis"><em>x_max =
153 1</em></span> and a <code class="computeroutput"> <span class="keyword">typedef</span> <span class="identifier">arcsine_distribution</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">arcsine</span><span class="special">;</span></code>
154 mean that
155 </p>
156<pre class="programlisting"><span class="identifier">arcsine</span> <span class="identifier">as</span><span class="special">;</span>
157</pre>
158<p>
159 constructs a 'Standard 01' arcsine distribution.
160 </p>
161<h6>
162<a name="math_toolkit.dist_ref.dists.arcine_dist.h1"></a>
163 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.parameter_accessors"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.parameter_accessors">Parameter
164 Accessors</a>
165 </h6>
166<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">x_min</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
167<span class="identifier">RealType</span> <span class="identifier">x_max</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
168</pre>
169<p>
170 Return the parameter <span class="emphasis"><em>x_min</em></span> or <span class="emphasis"><em>x_max</em></span>
171 from which this distribution was constructed.
172 </p>
173<p>
174 So, for example:
175 </p>
176<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">arcsine_distribution</span><span class="special">;</span>
177
178<span class="identifier">arcsine_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">as</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span> <span class="comment">// Cconstructs a double arcsine distribution.</span>
179<span class="identifier">assert</span><span class="special">(</span><span class="identifier">as</span><span class="special">.</span><span class="identifier">x_min</span><span class="special">()</span> <span class="special">==</span> <span class="number">2.</span><span class="special">);</span> <span class="comment">// as.x_min() returns 2.</span>
180<span class="identifier">assert</span><span class="special">(</span><span class="identifier">as</span><span class="special">.</span><span class="identifier">x_max</span><span class="special">()</span> <span class="special">==</span> <span class="number">5.</span><span class="special">);</span> <span class="comment">// as.x_max() returns 5.</span>
181</pre>
182<h5>
183<a name="math_toolkit.dist_ref.dists.arcine_dist.h2"></a>
184 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.non_member_accessor_functions"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.non_member_accessor_functions">Non-member
185 Accessor Functions</a>
186 </h5>
187<p>
188 All the <a class="link" href="../nmp.html" title="Non-Member Properties">usual non-member accessor
189 functions</a> that are generic to all distributions are supported:
190 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
191 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
192 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.hazard">Hazard Function</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.chf">Cumulative Hazard Function</a>,
193 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mean">mean</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.median">median</a>,
194 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.mode">mode</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.variance">variance</a>,
195 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
196 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.skewness">skewness</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis">kurtosis</a>, <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.kurtosis_excess">kurtosis_excess</a>,
197 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.range">range</a> and <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.support">support</a>.
198 </p>
199<p>
200 The formulae for calculating these are shown in the table below, and at
201 <a href="http://mathworld.wolfram.com/arcsineDistribution.html" target="_top">Wolfram
202 Mathworld</a>.
203 </p>
204<div class="note"><table border="0" summary="Note">
205<tr>
206<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
207<th align="left">Note</th>
208</tr>
209<tr><td align="left" valign="top"><p>
210 There are always <span class="bold"><strong>two</strong></span> values for the
211 <span class="bold"><strong>mode</strong></span>, at <span class="emphasis"><em>x_min</em></span>
212 and at <span class="emphasis"><em>x_max</em></span>, default 0 and 1, so instead we raise
213 the exception <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
214 At these extrema, the PDFs are infinite, and the CDFs zero or unity.
215 </p></td></tr>
216</table></div>
217<h5>
218<a name="math_toolkit.dist_ref.dists.arcine_dist.h3"></a>
219 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.applications"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.applications">Applications</a>
220 </h5>
221<p>
222 The arcsine distribution is useful to describe <a href="http://en.wikipedia.org/wiki/Random_walk" target="_top">Random
223 walks</a>, (including drunken walks) <a href="http://en.wikipedia.org/wiki/Brownian_motion" target="_top">Brownian
224 motion</a>, <a href="http://en.wikipedia.org/wiki/Wiener_process" target="_top">Weiner
225 processes</a>, <a href="http://en.wikipedia.org/wiki/Bernoulli_trial" target="_top">Bernoulli
226 trials</a>, and their appplication to solve stock market and other
227 <a href="http://en.wikipedia.org/wiki/Gambler%27s_ruin" target="_top">ruinous gambling
228 games</a>.
229 </p>
230<p>
231 The random variate <span class="emphasis"><em>x</em></span> is constrained to <span class="emphasis"><em>x_min</em></span>
232 and <span class="emphasis"><em>x_max</em></span>, (for our 'standard' distribution, 0 and
233 1), and is usually some fraction. For any other <span class="emphasis"><em>x_min</em></span>
234 and <span class="emphasis"><em>x_max</em></span> a fraction can be obtained from <span class="emphasis"><em>x</em></span>
235 using
236 </p>
237<p>
238 &#8198; fraction = (x - x_min) / (x_max - x_min)
239 </p>
240<p>
241 The simplest example is tossing heads and tails with a fair coin and modelling
242 the risk of losing, or winning. Walkers (molecules, drunks...) moving left
243 or right of a centre line are another common example.
244 </p>
245<p>
246 The random variate <span class="emphasis"><em>x</em></span> is the fraction of time spent
247 on the 'winning' side. If half the time is spent on the 'winning' side
248 (and so the other half on the 'losing' side) then <span class="emphasis"><em>x = 1/2</em></span>.
249 </p>
250<p>
251 For large numbers of tosses, this is modelled by the (standard [0,1]) arcsine
252 distribution, and the PDF can be calculated thus:
253 </p>
254<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">1.</span> <span class="special">/</span> <span class="number">2</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.637</span>
255<span class="comment">// pdf has a minimum at x = 0.5</span>
256</pre>
257<p>
258 From the plot of PDF, it is clear that <span class="emphasis"><em>x</em></span> = &#189; is the
259 <span class="bold"><strong>minimum</strong></span> of the curve, so this is the
260 <span class="bold"><strong>least likely</strong></span> scenario. (This is highly
261 counter-intuitive, considering that fair tosses must <span class="bold"><strong>eventually</strong></span>
262 become equal. It turns out that <span class="emphasis"><em>eventually</em></span> is not
263 just very long, but <span class="bold"><strong>infinite</strong></span>!).
264 </p>
265<p>
266 The <span class="bold"><strong>most likely</strong></span> scenarios are towards
267 the extrema where <span class="emphasis"><em>x</em></span> = 0 or <span class="emphasis"><em>x</em></span>
268 = 1.
269 </p>
270<p>
271 If fraction of time on the left is a &#188;, it is only slightly more likely
272 because the curve is quite flat bottomed.
273 </p>
274<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">1.</span> <span class="special">/</span> <span class="number">4</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.735</span>
275</pre>
276<p>
277 If we consider fair coin-tossing games being played for 100 days (hypothetically
278 continuously to be 'at-limit') the person winning after day 5 will not
279 change in fraction 0.144 of the cases.
280 </p>
281<p>
282 We can easily compute this setting <span class="emphasis"><em>x</em></span> = 5./100 = 0.05
283 </p>
284<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">0.05</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.144</span>
285</pre>
286<p>
287 Similarly, we can compute from a fraction of 0.05 /2 = 0.025 (halved because
288 we are considering both winners and losers) corresponding to 1 - 0.025
289 or 97.5% of the gamblers, (walkers, particles...) on the <span class="bold"><strong>same
290 side</strong></span> of the origin
291 </p>
292<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">1</span> <span class="special">-</span> <span class="number">0.975</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.202</span>
293</pre>
294<p>
295 (use of the complement gives a bit more clarity, and avoids potential loss
296 of accuracy when <span class="emphasis"><em>x</em></span> is close to unity, see <a class="link" href="../../stat_tut/overview/complements.html#why_complements">why
297 complements?</a>).
298 </p>
299<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">0.975</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.202</span>
300</pre>
301<p>
302 or we can reverse the calculation by assuming a fraction of time on one
303 side, say fraction 0.2,
304 </p>
305<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">1</span> <span class="special">-</span> <span class="number">0.2</span> <span class="special">/</span> <span class="number">2</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.976</span>
306
307<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">0.2</span> <span class="special">/</span> <span class="number">2</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.976</span>
308</pre>
309<p>
310 <span class="bold"><strong>Summary</strong></span>: Every time we toss, the odds
311 are equal, so on average we have the same change of winning and losing.
312 </p>
313<p>
314 But this is <span class="bold"><strong>not true</strong></span> for an an individual
315 game where one will be <span class="bold"><strong>mostly in a bad or good patch</strong></span>.
316 </p>
317<p>
318 This is quite counter-intuitive to most people, but the mathematics is
319 clear, and gamblers continue to provide proof.
320 </p>
321<p>
322 <span class="bold"><strong>Moral</strong></span>: if you in a losing patch, leave
323 the game. (Because the odds to recover to a good patch are poor).
324 </p>
325<p>
326 <span class="bold"><strong>Corollary</strong></span>: Quit while you are ahead?
327 </p>
328<p>
329 A working example is at <a href="../../../../../example/arcsine_example.cpp" target="_top">arcsine_example.cpp</a>
330 including sample output .
331 </p>
332<h5>
333<a name="math_toolkit.dist_ref.dists.arcine_dist.h4"></a>
334 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.related_distributions"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.related_distributions">Related
335 distributions</a>
336 </h5>
337<p>
338 The arcsine distribution with <span class="emphasis"><em>x_min = 0</em></span> and <span class="emphasis"><em>x_max
339 = 1</em></span> is special case of the <a class="link" href="beta_dist.html" title="Beta Distribution">Beta
340 Distribution</a> with &#945; = 1/2 and &#946; = 1/2.
341 </p>
342<h5>
343<a name="math_toolkit.dist_ref.dists.arcine_dist.h5"></a>
344 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.accuracy"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.accuracy">Accuracy</a>
345 </h5>
346<p>
347 This distribution is implemented using sqrt, sine, cos and arc sine and
348 cos trigonometric functions which are normally accurate to a few <a href="http://en.wikipedia.org/wiki/Machine_epsilon" target="_top">machine epsilon</a>.
349 But all values suffer from <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">loss
350 of significance or cancellation error</a> for values of <span class="emphasis"><em>x</em></span>
351 close to <span class="emphasis"><em>x_max</em></span>. For example, for a standard [0, 1]
352 arcsine distribution <span class="emphasis"><em>as</em></span>, the pdf is symmetric about
353 random variate <span class="emphasis"><em>x = 0.5</em></span> so that one would expect <code class="computeroutput"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">0.01</span><span class="special">)</span> <span class="special">==</span>
354 <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">as</span><span class="special">,</span> <span class="number">0.99</span><span class="special">)</span></code>. But
355 as <span class="emphasis"><em>x</em></span> nears unity, there is increasing <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">loss
356 of significance</a>. To counteract this, the complement versions of
357 CDF and quantile are implemented with alternative expressions using <span class="emphasis"><em>cos<sup>-1</sup></em></span>
358 instead of <span class="emphasis"><em>sin<sup>-1</sup></em></span>. Users should see <a class="link" href="../../stat_tut/overview/complements.html#why_complements">why
359 complements?</a> for guidance on when to avoid loss of accuracy by using
360 complements.
361 </p>
362<h5>
363<a name="math_toolkit.dist_ref.dists.arcine_dist.h6"></a>
364 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.testing"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.testing">Testing</a>
365 </h5>
366<p>
367 The results were tested against a few accurate spot values computed by
368 <a href="http://www.wolframalpha.com/" target="_top">Wolfram Alpha</a>, for example:
369 </p>
370<pre class="programlisting"><span class="identifier">N</span><span class="special">[</span><span class="identifier">PDF</span><span class="special">[</span><span class="identifier">arcsinedistribution</span><span class="special">[</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">],</span> <span class="number">0.5</span><span class="special">],</span> <span class="number">50</span><span class="special">]</span>
371 <span class="number">0.63661977236758134307553505349005744813783858296183</span>
372</pre>
373<h5>
374<a name="math_toolkit.dist_ref.dists.arcine_dist.h7"></a>
375 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.implementation"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.implementation">Implementation</a>
376 </h5>
377<p>
378 In the following table <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span>
379 are the parameters <span class="emphasis"><em>x_min</em></span> &#160; and <span class="emphasis"><em>x_max</em></span>,
380 <span class="emphasis"><em>x</em></span> is the random variable, <span class="emphasis"><em>p</em></span> is
381 the probability and its complement <span class="emphasis"><em>q = 1-p</em></span>.
382 </p>
383<div class="informaltable"><table class="table">
384<colgroup>
385<col>
386<col>
387</colgroup>
388<thead><tr>
389<th>
390 <p>
391 Function
392 </p>
393 </th>
394<th>
395 <p>
396 Implementation Notes
397 </p>
398 </th>
399</tr></thead>
400<tbody>
401<tr>
402<td>
403 <p>
404 support
405 </p>
406 </td>
407<td>
408 <p>
409 x &#8712; [a, b], default x &#8712; [0, 1]
410 </p>
411 </td>
412</tr>
413<tr>
414<td>
415 <p>
416 pdf
417 </p>
418 </td>
419<td>
420 <p>
421 f(x; a, b) = 1/(&#960;&#8901;&#8730;(x - a)&#8901;(b - x))
422 </p>
423 </td>
424</tr>
425<tr>
426<td>
427 <p>
428 cdf
429 </p>
430 </td>
431<td>
432 <p>
433 F(x) = 2/&#960;&#8901;sin<sup>-1</sup>(&#8730;(x - a) / (b - a) )
434 </p>
435 </td>
436</tr>
437<tr>
438<td>
439 <p>
440 cdf of complement
441 </p>
442 </td>
443<td>
444 <p>
445 2/(&#960;&#8901;cos<sup>-1</sup>(&#8730;(x - a) / (b - a)))
446 </p>
447 </td>
448</tr>
449<tr>
450<td>
451 <p>
452 quantile
453 </p>
454 </td>
455<td>
456 <p>
457 -a&#8901;sin<sup>2</sup>(&#189;&#960;&#8901;p) + a + b&#8901;sin<sup>2</sup>(&#189;&#960;&#8901;p)
458 </p>
459 </td>
460</tr>
461<tr>
462<td>
463 <p>
464 quantile from the complement
465 </p>
466 </td>
467<td>
468 <p>
469 -a&#8901;cos<sup>2</sup>(&#189;&#960;&#8901;p) + a + b&#8901;cos<sup>2</sup>(&#189;&#960;&#8901;q)
470 </p>
471 </td>
472</tr>
473<tr>
474<td>
475 <p>
476 mean
477 </p>
478 </td>
479<td>
480 <p>
481 &#189;(a+b)
482 </p>
483 </td>
484</tr>
485<tr>
486<td>
487 <p>
488 median
489 </p>
490 </td>
491<td>
492 <p>
493 &#189;(a+b)
494 </p>
495 </td>
496</tr>
497<tr>
498<td>
499 <p>
500 mode
501 </p>
502 </td>
503<td>
504 <p>
505 x &#8712; [a, b], so raises domain_error (returning NaN).
506 </p>
507 </td>
508</tr>
509<tr>
510<td>
511 <p>
512 variance
513 </p>
514 </td>
515<td>
516 <p>
517 (b - a)<sup>2</sup> / 8
518 </p>
519 </td>
520</tr>
521<tr>
522<td>
523 <p>
524 skewness
525 </p>
526 </td>
527<td>
528 <p>
529 0
530 </p>
531 </td>
532</tr>
533<tr>
534<td>
535 <p>
536 kurtosis excess
537 </p>
538 </td>
539<td>
540 <p>
541 -3/2
542 </p>
543 </td>
544</tr>
545<tr>
546<td>
547 <p>
548 kurtosis
549 </p>
550 </td>
551<td>
552 <p>
553 kurtosis_excess + 3
554 </p>
555 </td>
556</tr>
557</tbody>
558</table></div>
559<p>
560 The quantile was calculated using an expression obtained by using <a href="http://www.wolframalpha.com/" target="_top">Wolfram Alpha</a> to invert the
561 formula for the CDF thus
562 </p>
563<pre class="programlisting"><span class="identifier">solve</span> <span class="special">[</span><span class="identifier">p</span> <span class="special">-</span> <span class="number">2</span><span class="special">/</span><span class="identifier">pi</span> <span class="identifier">sin</span><span class="special">^-</span><span class="number">1</span><span class="special">(</span><span class="identifier">sqrt</span><span class="special">((</span><span class="identifier">x</span><span class="special">-</span><span class="identifier">a</span><span class="special">)/(</span><span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)))</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">x</span><span class="special">]</span>
564</pre>
565<p>
566 which was interpreted as
567 </p>
568<pre class="programlisting"><span class="identifier">Solve</span><span class="special">[</span><span class="identifier">p</span> <span class="special">-</span> <span class="special">(</span><span class="number">2</span> <span class="identifier">ArcSin</span><span class="special">[</span><span class="identifier">Sqrt</span><span class="special">[(-</span><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">x</span><span class="special">)/(-</span><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span><span class="special">)]])/</span><span class="identifier">Pi</span> <span class="special">==</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">MaxExtraConditions</span> <span class="special">-&gt;</span> <span class="identifier">Automatic</span><span class="special">]</span>
569</pre>
570<p>
571 and produced the resulting expression
572 </p>
573<pre class="programlisting"><span class="identifier">x</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">a</span> <span class="identifier">sin</span><span class="special">^</span><span class="number">2</span><span class="special">((</span><span class="identifier">pi</span> <span class="identifier">p</span><span class="special">)/</span><span class="number">2</span><span class="special">)+</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span> <span class="identifier">sin</span><span class="special">^</span><span class="number">2</span><span class="special">((</span><span class="identifier">pi</span> <span class="identifier">p</span><span class="special">)/</span><span class="number">2</span><span class="special">)</span>
574</pre>
575<p>
576 Thanks to Wolfram for providing this facility.
577 </p>
578<h5>
579<a name="math_toolkit.dist_ref.dists.arcine_dist.h8"></a>
580 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.references"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.references">References</a>
581 </h5>
582<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
583<li class="listitem">
584 <a href="http://en.wikipedia.org/wiki/arcsine_distribution" target="_top">Wikipedia
585 arcsine distribution</a>
586 </li>
587<li class="listitem">
588 <a href="http://en.wikipedia.org/wiki/Beta_distribution" target="_top">Wikipedia
589 Beta distribution</a>
590 </li>
591<li class="listitem">
592 <a href="http://mathworld.wolfram.com/BetaDistribution.html" target="_top">Wolfram
593 MathWorld</a>
594 </li>
595<li class="listitem">
596 <a href="http://www.wolframalpha.com/" target="_top">Wolfram Alpha</a>
597 </li>
598</ul></div>
599<h5>
600<a name="math_toolkit.dist_ref.dists.arcine_dist.h9"></a>
601 <span class="phrase"><a name="math_toolkit.dist_ref.dists.arcine_dist.sources"></a></span><a class="link" href="arcine_dist.html#math_toolkit.dist_ref.dists.arcine_dist.sources">Sources</a>
602 </h5>
603<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
604<li class="listitem">
605 <a href="http://estebanmoro.org/2009/04/the-probability-of-going-through-a-bad-patch" target="_top">The
606 probability of going through a bad patch</a> Esteban Moro's Blog.
607 </li>
608<li class="listitem">
609 <a href="http://www.gotohaggstrom.com/What%20do%20schmucks%20and%20the%20arc%20sine%20law%20have%20in%20common.pdf" target="_top">What
610 soschumcks and the arc sine have in common</a> Peter Haggstrom.
611 </li>
612<li class="listitem">
613 <a href="http://www.math.uah.edu/stat/special/Arcsine.html" target="_top">arcsine
614 distribution</a>.
615 </li>
616<li class="listitem">
617 <a href="http://reference.wolfram.com/language/ref/ArcSinDistribution.html" target="_top">Wolfram
618 reference arcsine examples</a>.
619 </li>
620<li class="listitem">
621 <a href="http://www.math.harvard.edu/library/sternberg/slides/1180908.pdf" target="_top">Shlomo
622 Sternberg slides</a>.
623 </li>
624</ul></div>
625</div>
626<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
627<td align="left"></td>
628<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010, 2012-2014 Nikhar Agrawal,
629 Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert
630 Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R&#229;de, Gautam Sewani,
631 Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
632 Distributed under the Boost Software License, Version 1.0. (See accompanying
633 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>)
634 </p>
635</div></td>
636</tr></table>
637<hr>
638<div class="spirit-nav">
639<a accesskey="p" href="../dists.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../dists.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="bernoulli_dist.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
640</div>
641</body>
642</html>