3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Geometric Distribution</title>
5 <link rel="stylesheet" href="../../../math.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../index.html" title="Math Toolkit 2.11.0">
8 <link rel="up" href="../dists.html" title="Distributions">
9 <link rel="prev" href="gamma_dist.html" title="Gamma (and Erlang) Distribution">
10 <link rel="next" href="hyperexponential_dist.html" title="Hyperexponential Distribution">
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="gamma_dist.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="hyperexponential_dist.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="math_toolkit.dist_ref.dists.geometric_dist"></a><a class="link" href="geometric_dist.html" title="Geometric Distribution">Geometric
29 </h4></div></div></div>
30 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">geometric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></pre>
31 <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>
33 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">,</span>
34 <span class="keyword">class</span> <a class="link" href="../../../policy.html" title="Chapter 20. 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<></a> <span class="special">></span>
35 <span class="keyword">class</span> <span class="identifier">geometric_distribution</span><span class="special">;</span>
37 <span class="keyword">typedef</span> <span class="identifier">geometric_distribution</span><span class="special"><></span> <span class="identifier">geometric</span><span class="special">;</span>
39 <span class="keyword">template</span> <span class="special"><</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 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
40 <span class="keyword">class</span> <span class="identifier">geometric_distribution</span>
41 <span class="special">{</span>
42 <span class="keyword">public</span><span class="special">:</span>
43 <span class="keyword">typedef</span> <span class="identifier">RealType</span> <span class="identifier">value_type</span><span class="special">;</span>
44 <span class="keyword">typedef</span> <span class="identifier">Policy</span> <span class="identifier">policy_type</span><span class="special">;</span>
45 <span class="comment">// Constructor from success_fraction:</span>
46 <span class="identifier">geometric_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
48 <span class="comment">// Parameter accessors:</span>
49 <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
50 <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
52 <span class="comment">// Bounds on success fraction:</span>
53 <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
54 <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
55 <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
56 <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// alpha</span>
57 <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
58 <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
59 <span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">,</span>
60 <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// alpha</span>
62 <span class="comment">// Estimate min/max number of trials:</span>
63 <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
64 <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// Number of failures.</span>
65 <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// Success fraction.</span>
66 <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// Probability threshold alpha.</span>
67 <span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
68 <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// Number of failures.</span>
69 <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// Success fraction.</span>
70 <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">);</span> <span class="comment">// Probability threshold alpha.</span>
71 <span class="special">};</span>
73 <span class="special">}}</span> <span class="comment">// namespaces</span>
76 The class type <code class="computeroutput"><span class="identifier">geometric_distribution</span></code>
77 represents a <a href="http://en.wikipedia.org/wiki/geometric_distribution" target="_top">geometric
78 distribution</a>: it is used when there are exactly two mutually exclusive
79 outcomes of a <a href="http://en.wikipedia.org/wiki/Bernoulli_trial" target="_top">Bernoulli
80 trial</a>: these outcomes are labelled "success" and "failure".
83 For <a href="http://en.wikipedia.org/wiki/Bernoulli_trial" target="_top">Bernoulli
84 trials</a> each with success fraction <span class="emphasis"><em>p</em></span>, the geometric
85 distribution gives the probability of observing <span class="emphasis"><em>k</em></span>
86 trials (failures, events, occurrences, or arrivals) before the first success.
88 <div class="note"><table border="0" summary="Note">
90 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
91 <th align="left">Note</th>
93 <tr><td align="left" valign="top"><p>
94 For this implementation, the set of trials <span class="bold"><strong>includes
95 zero</strong></span> (unlike another definition where the set of trials starts
96 at one, sometimes named <span class="emphasis"><em>shifted</em></span>).
100 The geometric distribution assumes that success_fraction <span class="emphasis"><em>p</em></span>
101 is fixed for all <span class="emphasis"><em>k</em></span> trials.
104 The probability that there are <span class="emphasis"><em>k</em></span> failures before the
107 <div class="blockquote"><blockquote class="blockquote"><p>
108 <span class="serif_italic">Pr(Y=<span class="emphasis"><em>k</em></span>) = (1-<span class="emphasis"><em>p</em></span>)<sup><span class="emphasis"><em>k</em></span></sup> <span class="emphasis"><em>p</em></span></span>
109 </p></blockquote></div>
111 For example, when throwing a 6-face dice the success probability <span class="emphasis"><em>p</em></span>
112 = 1/6 = 0.1666 ̇. Throwing repeatedly until a <span class="emphasis"><em>three</em></span>
113 appears, the probability distribution of the number of times <span class="emphasis"><em>not-a-three</em></span>
114 is thrown is geometric.
117 Geometric distribution has the Probability Density Function PDF:
119 <div class="blockquote"><blockquote class="blockquote"><p>
120 <span class="serif_italic">(1-<span class="emphasis"><em>p</em></span>)<sup><span class="emphasis"><em>k</em></span></sup> <span class="emphasis"><em>p</em></span></span>
121 </p></blockquote></div>
123 The following graph illustrates how the PDF and CDF vary for three examples
124 of the success fraction <span class="emphasis"><em>p</em></span>, (when considering the geometric
125 distribution as a continuous function),
127 <div class="blockquote"><blockquote class="blockquote"><p>
128 <span class="inlinemediaobject"><img src="../../../../graphs/geometric_pdf_2.svg" align="middle"></span>
130 </p></blockquote></div>
131 <div class="blockquote"><blockquote class="blockquote"><p>
132 <span class="inlinemediaobject"><img src="../../../../graphs/geometric_cdf_2.svg" align="middle"></span>
134 </p></blockquote></div>
138 <div class="blockquote"><blockquote class="blockquote"><p>
139 <span class="inlinemediaobject"><img src="../../../../graphs/geometric_pdf_discrete.svg" align="middle"></span>
141 </p></blockquote></div>
142 <div class="blockquote"><blockquote class="blockquote"><p>
143 <span class="inlinemediaobject"><img src="../../../../graphs/geometric_cdf_discrete.svg" align="middle"></span>
145 </p></blockquote></div>
147 <a name="math_toolkit.dist_ref.dists.geometric_dist.h0"></a>
148 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.related_distributions"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.related_distributions">Related
152 The geometric distribution is a special case of the <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
153 Binomial Distribution</a> with successes parameter <span class="emphasis"><em>r</em></span>
154 = 1, so only one first and only success is required : thus by definition
155    <code class="computeroutput"><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">==</span>
156 <span class="identifier">negative_binomial</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span></code>
158 <pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">);</span>
159 <span class="identifier">negative_binomial</span> <span class="identifier">nb</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span>
160 <span class="identifier">geometric</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">success_fraction</span><span class="special">);</span>
161 <span class="identifier">ASSERT</span><span class="special">(</span><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">pdf</span><span class="special">(</span><span class="identifier">g</span><span class="special">,</span> <span class="number">1</span><span class="special">));</span>
164 This implementation uses real numbers for the computation throughout (because
165 it uses the <span class="bold"><strong>real-valued</strong></span> power and exponential
166 functions). So to obtain a conventional strictly-discrete geometric distribution
167 you must ensure that an integer value is provided for the number of trials
168 (random variable) <span class="emphasis"><em>k</em></span>, and take integer values (floor
169 or ceil functions) from functions that return a number of successes.
171 <div class="caution"><table border="0" summary="Caution">
173 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../../doc/src/images/caution.png"></td>
174 <th align="left">Caution</th>
176 <tr><td align="left" valign="top">
178 The geometric distribution is a discrete distribution: internally, functions
179 like the <code class="computeroutput"><span class="identifier">cdf</span></code> and <code class="computeroutput"><span class="identifier">pdf</span></code> are treated "as if" they
180 are continuous functions, but in reality the results returned from these
181 functions only have meaning if an integer value is provided for the random
185 The quantile function will by default return an integer result that has
186 been <span class="emphasis"><em>rounded outwards</em></span>. That is to say lower quantiles
187 (where the probability is less than 0.5) are rounded downward, and upper
188 quantiles (where the probability is greater than 0.5) are rounded upwards.
189 This behaviour ensures that if an X% quantile is requested, then <span class="emphasis"><em>at
190 least</em></span> the requested coverage will be present in the central
191 region, and <span class="emphasis"><em>no more than</em></span> the requested coverage
192 will be present in the tails.
195 This behaviour can be changed so that the quantile functions are rounded
196 differently, or even return a real-valued result using <a class="link" href="../../pol_overview.html" title="Policy Overview">Policies</a>.
197 It is strongly recommended that you read the tutorial <a class="link" href="../../pol_tutorial/understand_dis_quant.html" title="Understanding Quantiles of Discrete Distributions">Understanding
198 Quantiles of Discrete Distributions</a> before using the quantile
199 function on the geometric distribution. The <a class="link" href="../../pol_ref/discrete_quant_ref.html" title="Discrete Quantile Policies">reference
200 docs</a> describe how to change the rounding policy for these distributions.
205 <a name="math_toolkit.dist_ref.dists.geometric_dist.h1"></a>
206 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.member_functions"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.member_functions">Member
210 <a name="math_toolkit.dist_ref.dists.geometric_dist.h2"></a>
211 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.constructor"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.constructor">Constructor</a>
213 <pre class="programlisting"><span class="identifier">geometric_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
216 Constructor: <span class="emphasis"><em>p</em></span> or success_fraction is the probability
217 of success of a single trial.
220 Requires: <code class="computeroutput"><span class="number">0</span> <span class="special"><=</span>
221 <span class="identifier">p</span> <span class="special"><=</span>
222 <span class="number">1</span></code>.
225 <a name="math_toolkit.dist_ref.dists.geometric_dist.h3"></a>
226 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.accessors"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.accessors">Accessors</a>
228 <pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// successes / trials (0 <= p <= 1)</span>
231 Returns the success_fraction parameter <span class="emphasis"><em>p</em></span> from which
232 this distribution was constructed.
234 <pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">successes</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// required successes always one,</span>
235 <span class="comment">// included for compatibility with negative binomial distribution</span>
236 <span class="comment">// with successes r == 1.</span>
242 The following functions are equivalent to those provided for the negative
243 binomial, with successes = 1, but are provided here for completeness.
246 The best method of calculation for the following functions is disputed:
247 see <a class="link" href="binomial_dist.html" title="Binomial Distribution">Binomial
248 Distribution</a> and <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
249 Binomial Distribution</a> for more discussion.
252 <a name="math_toolkit.dist_ref.dists.geometric_dist.h4"></a>
253 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.lower_bound_on_success_fraction_"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.lower_bound_on_success_fraction_">Lower
254 Bound on success_fraction Parameter <span class="emphasis"><em>p</em></span></a>
256 <pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span>
257 <span class="identifier">RealType</span> <span class="identifier">failures</span><span class="special">,</span>
258 <span class="identifier">RealType</span> <span class="identifier">probability</span><span class="special">)</span> <span class="comment">// (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.</span>
261 Returns a <span class="bold"><strong>lower bound</strong></span> on the success fraction:
263 <div class="variablelist">
264 <p class="title"><b></b></p>
265 <dl class="variablelist">
266 <dt><span class="term">failures</span></dt>
268 The total number of failures before the 1st success.
270 <dt><span class="term">alpha</span></dt>
272 The largest acceptable probability that the true value of the success
273 fraction is <span class="bold"><strong>less than</strong></span> the value
279 For example, if you observe <span class="emphasis"><em>k</em></span> failures from <span class="emphasis"><em>n</em></span>
280 trials the best estimate for the success fraction is simply 1/<span class="emphasis"><em>n</em></span>,
281 but if you want to be 95% sure that the true value is <span class="bold"><strong>greater
282 than</strong></span> some value, <span class="emphasis"><em>p<sub>min</sub></em></span>, then:
284 <pre class="programlisting"><span class="identifier">p</span><sub>min</sub> <span class="special">=</span> <span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span>
285 <span class="identifier">find_lower_bound_on_p</span><span class="special">(</span><span class="identifier">failures</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
288 <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
289 negative_binomial confidence interval example.</a>
292 This function uses the Clopper-Pearson method of computing the lower bound
293 on the success fraction, whilst many texts refer to this method as giving
294 an "exact" result in practice it produces an interval that guarantees
295 <span class="emphasis"><em>at least</em></span> the coverage required, and may produce pessimistic
296 estimates for some combinations of <span class="emphasis"><em>failures</em></span> and <span class="emphasis"><em>successes</em></span>.
300 <a href="http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf" target="_top">Yong
301 Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some
302 Discrete Distributions. Computational statistics and data analysis, 2005,
303 vol. 48, no3, 605-621</a>.
306 <a name="math_toolkit.dist_ref.dists.geometric_dist.h5"></a>
307 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.upper_bound_on_success_fraction_"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.upper_bound_on_success_fraction_">Upper
308 Bound on success_fraction Parameter p</a>
310 <pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
311 <span class="identifier">RealType</span> <span class="identifier">trials</span><span class="special">,</span>
312 <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.</span>
315 Returns an <span class="bold"><strong>upper bound</strong></span> on the success
318 <div class="variablelist">
319 <p class="title"><b></b></p>
320 <dl class="variablelist">
321 <dt><span class="term">trials</span></dt>
323 The total number of trials conducted.
325 <dt><span class="term">alpha</span></dt>
327 The largest acceptable probability that the true value of the success
328 fraction is <span class="bold"><strong>greater than</strong></span> the value
334 For example, if you observe <span class="emphasis"><em>k</em></span> successes from <span class="emphasis"><em>n</em></span>
335 trials the best estimate for the success fraction is simply <span class="emphasis"><em>k/n</em></span>,
336 but if you want to be 95% sure that the true value is <span class="bold"><strong>less
337 than</strong></span> some value, <span class="emphasis"><em>p<sub>max</sub></em></span>, then:
339 <pre class="programlisting"><span class="identifier">p</span><sub>max</sub> <span class="special">=</span> <span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_upper_bound_on_p</span><span class="special">(</span>
340 <span class="identifier">k</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
343 <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_conf.html" title="Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution">See
344 negative binomial confidence interval example.</a>
347 This function uses the Clopper-Pearson method of computing the lower bound
348 on the success fraction, whilst many texts refer to this method as giving
349 an "exact" result in practice it produces an interval that guarantees
350 <span class="emphasis"><em>at least</em></span> the coverage required, and may produce pessimistic
351 estimates for some combinations of <span class="emphasis"><em>failures</em></span> and <span class="emphasis"><em>successes</em></span>.
355 <a href="http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf" target="_top">Yong
356 Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some
357 Discrete Distributions. Computational statistics and data analysis, 2005,
358 vol. 48, no3, 605-621</a>.
361 <a name="math_toolkit.dist_ref.dists.geometric_dist.h6"></a>
362 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_e"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_e">Estimating
363 Number of Trials to Ensure at Least a Certain Number of Failures</a>
365 <pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span>
366 <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of failures.</span>
367 <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction.</span>
368 <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold (0.05 equivalent to 95%).</span>
371 This functions estimates the number of trials required to achieve a certain
372 probability that <span class="bold"><strong>more than <span class="emphasis"><em>k</em></span>
373 failures will be observed</strong></span>.
375 <div class="variablelist">
376 <p class="title"><b></b></p>
377 <dl class="variablelist">
378 <dt><span class="term">k</span></dt>
380 The target number of failures to be observed.
382 <dt><span class="term">p</span></dt>
384 The probability of <span class="emphasis"><em>success</em></span> for each trial.
386 <dt><span class="term">alpha</span></dt>
388 The maximum acceptable <span class="emphasis"><em>risk</em></span> that only <span class="emphasis"><em>k</em></span>
389 failures or fewer will be observed.
396 <pre class="programlisting"><span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_minimum_number_of_trials</span><span class="special">(</span><span class="number">10</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
399 Returns the smallest number of trials we must conduct to be 95% (1-0.05)
400 sure of seeing 10 failures that occur with frequency one half.
403 <a class="link" href="../../stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial.">Worked
407 This function uses numeric inversion of the geometric distribution to obtain
408 the result: another interpretation of the result is that it finds the number
409 of trials (failures) that will lead to an <span class="emphasis"><em>alpha</em></span> probability
410 of observing <span class="emphasis"><em>k</em></span> failures or fewer.
413 <a name="math_toolkit.dist_ref.dists.geometric_dist.h7"></a>
414 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_0"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.estimating_number_of_trials_to_0">Estimating
415 Number of Trials to Ensure a Maximum Number of Failures or Less</a>
417 <pre class="programlisting"><span class="keyword">static</span> <span class="identifier">RealType</span> <span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span>
418 <span class="identifier">RealType</span> <span class="identifier">k</span><span class="special">,</span> <span class="comment">// number of failures.</span>
419 <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">,</span> <span class="comment">// success fraction.</span>
420 <span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">);</span> <span class="comment">// probability threshold (0.05 equivalent to 95%).</span>
423 This functions estimates the maximum number of trials we can conduct and
424 achieve a certain probability that <span class="bold"><strong>k failures or
425 fewer will be observed</strong></span>.
427 <div class="variablelist">
428 <p class="title"><b></b></p>
429 <dl class="variablelist">
430 <dt><span class="term">k</span></dt>
432 The maximum number of failures to be observed.
434 <dt><span class="term">p</span></dt>
436 The probability of <span class="emphasis"><em>success</em></span> for each trial.
438 <dt><span class="term">alpha</span></dt>
440 The maximum acceptable <span class="emphasis"><em>risk</em></span> that more than
441 <span class="emphasis"><em>k</em></span> failures will be observed.
448 <pre class="programlisting"><span class="identifier">geometric_distribution</span><span class="special"><</span><span class="identifier">RealType</span><span class="special">>::</span><span class="identifier">find_maximum_number_of_trials</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">-</span><span class="number">1.0</span><span class="special">/</span><span class="number">1000000</span><span class="special">,</span> <span class="number">0.05</span><span class="special">);</span>
451 Returns the largest number of trials we can conduct and still be 95% sure
452 of seeing no failures that occur with frequency one in one million.
455 This function uses numeric inversion of the geometric distribution to obtain
456 the result: another interpretation of the result, is that it finds the
457 number of trials that will lead to an <span class="emphasis"><em>alpha</em></span> probability
458 of observing more than k failures.
461 <a name="math_toolkit.dist_ref.dists.geometric_dist.h8"></a>
462 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.non_member_accessors"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.non_member_accessors">Non-member
466 All the <a class="link" href="../nmp.html" title="Non-Member Properties">usual non-member accessor
467 functions</a> that are generic to all distributions are supported:
468 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
469 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
470 <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>,
471 <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>,
472 <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>,
473 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
474 <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>,
475 <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>.
478 However it's worth taking a moment to define what these actually mean in
479 the context of this distribution:
482 <a name="math_toolkit.dist_ref.dists.geometric_dist.meaning_of_the_non_member_access"></a><p class="title"><b>Table 5.2. Meaning of the non-member accessors.</b></p>
483 <div class="table-contents"><table class="table" summary="Meaning of the non-member accessors.">
504 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density
510 The probability of obtaining <span class="bold"><strong>exactly k
511 failures</strong></span> from <span class="emphasis"><em>k</em></span> trials with success
512 fraction p. For example:
514 <pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">)</span></pre>
520 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution
526 The probability of obtaining <span class="bold"><strong>k failures
527 or fewer</strong></span> from <span class="emphasis"><em>k</em></span> trials with success
528 fraction p and success on the last trial. For example:
530 <pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">)</span></pre>
536 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.ccdf">Complement of
537 the Cumulative Distribution Function</a>
542 The probability of obtaining <span class="bold"><strong>more than
543 k failures</strong></span> from <span class="emphasis"><em>k</em></span> trials with
544 success fraction p and success on the last trial. For example:
546 <pre class="programlisting"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">k</span><span class="special">))</span></pre>
552 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile">Quantile</a>
557 The <span class="bold"><strong>greatest</strong></span> number of failures
558 <span class="emphasis"><em>k</em></span> expected to be observed from <span class="emphasis"><em>k</em></span>
559 trials with success fraction <span class="emphasis"><em>p</em></span>, at probability
560 <span class="emphasis"><em>P</em></span>. Note that the value returned is a real-number,
561 and not an integer. Depending on the use case you may want to
562 take either the floor or ceiling of the real result. For example:
564 <pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">P</span><span class="special">)</span></pre>
570 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.quantile_c">Quantile
571 from the complement of the probability</a>
576 The <span class="bold"><strong>smallest</strong></span> number of failures
577 <span class="emphasis"><em>k</em></span> expected to be observed from <span class="emphasis"><em>k</em></span>
578 trials with success fraction <span class="emphasis"><em>p</em></span>, at probability
579 <span class="emphasis"><em>P</em></span>. Note that the value returned is a real-number,
580 and not an integer. Depending on the use case you may want to
581 take either the floor or ceiling of the real result. For example:
583 <pre class="programlisting"><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">complement</span><span class="special">(</span><span class="identifier">geometric</span><span class="special">(</span><span class="identifier">p</span><span class="special">),</span> <span class="identifier">P</span><span class="special">))</span></pre>
589 <br class="table-break"><h5>
590 <a name="math_toolkit.dist_ref.dists.geometric_dist.h9"></a>
591 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.accuracy"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.accuracy">Accuracy</a>
594 This distribution is implemented using the pow and exp functions, so most
595 results are accurate within a few epsilon for the RealType. For extreme
596 values of <code class="computeroutput"><span class="keyword">double</span></code> <span class="emphasis"><em>p</em></span>,
597 for example 0.9999999999, accuracy can fall significantly, for example
598 to 10 decimal digits (from 16).
601 <a name="math_toolkit.dist_ref.dists.geometric_dist.h10"></a>
602 <span class="phrase"><a name="math_toolkit.dist_ref.dists.geometric_dist.implementation"></a></span><a class="link" href="geometric_dist.html#math_toolkit.dist_ref.dists.geometric_dist.implementation">Implementation</a>
605 In the following table, <span class="emphasis"><em>p</em></span> is the probability that
606 any one trial will be successful (the success fraction), <span class="emphasis"><em>k</em></span>
607 is the number of failures, <span class="emphasis"><em>p</em></span> is the probability and
608 <span class="emphasis"><em>q = 1-p</em></span>, <span class="emphasis"><em>x</em></span> is the given probability
609 to estimate the expected number of failures using the quantile.
611 <div class="informaltable"><table class="table">
649 cdf = 1 - q<sup>k=1</sup>
661 exp(log1p(-p) * (k+1))
673 k = log1p(-x) / log1p(-p) -1
680 quantile from the complement
685 k = log(x) / log1p(-p) -1
764 parameter estimation member functions
769 See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
770 Binomial Distribution</a>
777 <code class="computeroutput"><span class="identifier">find_lower_bound_on_p</span></code>
782 See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
783 Binomial Distribution</a>
790 <code class="computeroutput"><span class="identifier">find_upper_bound_on_p</span></code>
795 See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
796 Binomial Distribution</a>
803 <code class="computeroutput"><span class="identifier">find_minimum_number_of_trials</span></code>
808 See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
809 Binomial Distribution</a>
816 <code class="computeroutput"><span class="identifier">find_maximum_number_of_trials</span></code>
821 See <a class="link" href="negative_binomial_dist.html" title="Negative Binomial Distribution">Negative
822 Binomial Distribution</a>
829 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
830 <td align="left"></td>
831 <td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
832 Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
833 Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
834 Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
835 Daryle Walker and Xiaogang Zhang<p>
836 Distributed under the Boost Software License, Version 1.0. (See accompanying
837 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>)
842 <div class="spirit-nav">
843 <a accesskey="p" href="gamma_dist.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="hyperexponential_dist.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>