]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | <html> |
2 | <head> | |
3 | <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> | |
4 | <title>Negative Binomial Sales Quota Example.</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="../neg_binom_eg.html" title="Negative Binomial Distribution Examples"> | |
9 | <link rel="prev" href="neg_binom_size_eg.html" title="Estimating Sample Sizes for the Negative Binomial."> | |
10 | <link rel="next" href="negative_binomial_example2.html" title="Negative Binomial Table Printing Example."> | |
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="neg_binom_size_eg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.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="negative_binomial_example2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> | |
24 | </div> | |
25 | <div class="section"> | |
26 | <div class="titlepage"><div><div><h5 class="title"> | |
27 | <a name="math_toolkit.stat_tut.weg.neg_binom_eg.negative_binomial_example1"></a><a class="link" href="negative_binomial_example1.html" title="Negative Binomial Sales Quota Example.">Negative | |
28 | Binomial Sales Quota Example.</a> | |
29 | </h5></div></div></div> | |
30 | <p> | |
31 | This example program <a href="../../../../../../example/negative_binomial_example1.cpp" target="_top">negative_binomial_example1.cpp | |
32 | (full source code)</a> demonstrates a simple use to find the probability | |
33 | of meeting a sales quota. | |
34 | </p> | |
35 | <p> | |
36 | Based on <a href="http://en.wikipedia.org/wiki/Negative_binomial_distribution" target="_top">a | |
37 | problem by Dr. Diane Evans, Professor of Mathematics at Rose-Hulman Institute | |
38 | of Technology</a>. | |
39 | </p> | |
40 | <p> | |
41 | Pat is required to sell candy bars to raise money for the 6th grade field | |
42 | trip. There are thirty houses in the neighborhood, and Pat is not supposed | |
43 | to return home until five candy bars have been sold. So the child goes | |
44 | door to door, selling candy bars. At each house, there is a 0.4 probability | |
45 | (40%) of selling one candy bar and a 0.6 probability (60%) of selling | |
46 | nothing. | |
47 | </p> | |
48 | <p> | |
49 | What is the probability mass (density) function (pdf) for selling the | |
50 | last (fifth) candy bar at the nth house? | |
51 | </p> | |
52 | <p> | |
53 | The Negative Binomial(r, p) distribution describes the probability of | |
54 | k failures and r successes in k+r Bernoulli(p) trials with success on | |
55 | the last trial. (A <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli | |
56 | trial</a> is one with only two possible outcomes, success of failure, | |
57 | and p is the probability of success). See also <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli | |
58 | distribution</a> and <a href="http://www.math.uah.edu/stat/bernoulli/Introduction.xhtml" target="_top">Bernoulli | |
59 | applications</a>. | |
60 | </p> | |
61 | <p> | |
62 | In this example, we will deliberately produce a variety of calculations | |
63 | and outputs to demonstrate the ways that the negative binomial distribution | |
64 | can be implemented with this library: it is also deliberately over-commented. | |
65 | </p> | |
66 | <p> | |
67 | First we need to #define macros to control the error and discrete handling | |
68 | policies. For this simple example, we want to avoid throwing an exception | |
69 | (the default policy) and just return infinity. We want to treat the distribution | |
70 | as if it was continuous, so we choose a discrete_quantile policy of real, | |
71 | rather than the default policy integer_round_outwards. | |
72 | </p> | |
73 | <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_OVERFLOW_ERROR_POLICY</span> <span class="identifier">ignore_error</span> | |
74 | <span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span> | |
75 | </pre> | |
76 | <p> | |
77 | After that we need some includes to provide easy access to the negative | |
78 | binomial distribution, | |
79 | </p> | |
80 | <div class="caution"><table border="0" summary="Caution"> | |
81 | <tr> | |
82 | <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../../../doc/src/images/caution.png"></td> | |
83 | <th align="left">Caution</th> | |
84 | </tr> | |
85 | <tr><td align="left" valign="top"><p> | |
86 | It is vital to #include distributions etc <span class="bold"><strong>after</strong></span> | |
87 | the above #defines | |
88 | </p></td></tr> | |
89 | </table></div> | |
90 | <p> | |
91 | and we need some std library iostream, of course. | |
92 | </p> | |
93 | <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">negative_binomial</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> | |
94 | <span class="comment">// for negative_binomial_distribution</span> | |
95 | <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">negative_binomial</span><span class="special">;</span> <span class="comment">// typedef provides default type is double.</span> | |
96 | <span class="keyword">using</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">pdf</span><span class="special">;</span> <span class="comment">// Probability mass function.</span> | |
97 | <span class="keyword">using</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">cdf</span><span class="special">;</span> <span class="comment">// Cumulative density function.</span> | |
98 | <span class="keyword">using</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">quantile</span><span class="special">;</span> | |
99 | ||
100 | <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span> | |
101 | <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> | |
102 | <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">noshowpoint</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">right</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span><span class="special">;</span> | |
103 | <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iomanip</span><span class="special">></span> | |
104 | <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">;</span> | |
105 | ||
106 | <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">limits</span><span class="special">></span> | |
107 | <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">;</span> | |
108 | </pre> | |
109 | <p> | |
110 | It is always sensible to use try and catch blocks because defaults policies | |
111 | are to throw an exception if anything goes wrong. | |
112 | </p> | |
113 | <p> | |
114 | A simple catch block (see below) will ensure that you get a helpful error | |
115 | message instead of an abrupt program abort. | |
116 | </p> | |
117 | <pre class="programlisting"><span class="keyword">try</span> | |
118 | <span class="special">{</span> | |
119 | </pre> | |
120 | <p> | |
121 | Selling five candy bars means getting five successes, so successes r | |
122 | = 5. The total number of trials (n, in this case, houses visited) this | |
123 | takes is therefore = sucesses + failures or k + r = k + 5. | |
124 | </p> | |
125 | <pre class="programlisting"><span class="keyword">double</span> <span class="identifier">sales_quota</span> <span class="special">=</span> <span class="number">5</span><span class="special">;</span> <span class="comment">// Pat's sales quota - successes (r).</span> | |
126 | </pre> | |
127 | <p> | |
128 | At each house, there is a 0.4 probability (40%) of selling one candy | |
129 | bar and a 0.6 probability (60%) of selling nothing. | |
130 | </p> | |
131 | <pre class="programlisting"><span class="keyword">double</span> <span class="identifier">success_fraction</span> <span class="special">=</span> <span class="number">0.4</span><span class="special">;</span> <span class="comment">// success_fraction (p) - so failure_fraction is 0.6.</span> | |
132 | </pre> | |
133 | <p> | |
134 | The Negative Binomial(r, p) distribution describes the probability of | |
135 | k failures and r successes in k+r Bernoulli(p) trials with success on | |
136 | the last trial. (A <a href="http://en.wikipedia.org/wiki/Bernoulli_distribution" target="_top">Bernoulli | |
137 | trial</a> is one with only two possible outcomes, success of failure, | |
138 | and p is the probability of success). | |
139 | </p> | |
140 | <p> | |
141 | We therefore start by constructing a negative binomial distribution with | |
142 | parameters sales_quota (required successes) and probability of success. | |
143 | </p> | |
144 | <pre class="programlisting"><span class="identifier">negative_binomial</span> <span class="identifier">nb</span><span class="special">(</span><span class="identifier">sales_quota</span><span class="special">,</span> <span class="identifier">success_fraction</span><span class="special">);</span> <span class="comment">// type double by default.</span> | |
145 | </pre> | |
146 | <p> | |
147 | To confirm, display the success_fraction & successes parameters of | |
148 | the distribution. | |
149 | </p> | |
150 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Pat has a sales per house success rate of "</span> <span class="special"><<</span> <span class="identifier">success_fraction</span> | |
151 | <span class="special"><<</span> <span class="string">".\nTherefore he would, on average, sell "</span> <span class="special"><<</span> <span class="identifier">nb</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span> <span class="special">*</span> <span class="number">100</span> | |
152 | <span class="special"><<</span> <span class="string">" bars after trying 100 houses."</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
153 | ||
154 | <span class="keyword">int</span> <span class="identifier">all_houses</span> <span class="special">=</span> <span class="number">30</span><span class="special">;</span> <span class="comment">// The number of houses on the estate.</span> | |
155 | ||
156 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"With a success rate of "</span> <span class="special"><<</span> <span class="identifier">nb</span><span class="special">.</span><span class="identifier">success_fraction</span><span class="special">()</span> | |
157 | <span class="special"><<</span> <span class="string">", he might expect, on average,\n"</span> | |
158 | <span class="string">"to need to visit about "</span> <span class="special"><<</span> <span class="identifier">success_fraction</span> <span class="special">*</span> <span class="identifier">all_houses</span> | |
159 | <span class="special"><<</span> <span class="string">" houses in order to sell all "</span> <span class="special"><<</span> <span class="identifier">nb</span><span class="special">.</span><span class="identifier">successes</span><span class="special">()</span> <span class="special"><<</span> <span class="string">" bars. "</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
160 | </pre> | |
161 | <pre class="programlisting">Pat has a sales per house success rate of 0.4. | |
162 | Therefore he would, on average, sell 40 bars after trying 100 houses. | |
163 | With a success rate of 0.4, he might expect, on average, | |
164 | to need to visit about 12 houses in order to sell all 5 bars. | |
165 | </pre> | |
166 | <p> | |
167 | The random variable of interest is the number of houses that must be | |
168 | visited to sell five candy bars, so we substitute k = n - 5 into a negative_binomial(5, | |
169 | 0.4) and obtain the <a class="link" href="../../../dist_ref/nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability | |
170 | Density Function</a> of the distribution of houses visited. Obviously, | |
171 | the best possible case is that Pat makes sales on all the first five | |
172 | houses. | |
173 | </p> | |
174 | <p> | |
175 | We calculate this using the pdf function: | |
176 | </p> | |
177 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="string">"th house is "</span> | |
178 | <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">5</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// == pdf(nb, 0)</span> | |
179 | </pre> | |
180 | <p> | |
181 | Of course, he could not finish on fewer than 5 houses because he must | |
182 | sell 5 candy bars. So the 5th house is the first that he could possibly | |
183 | finish on. | |
184 | </p> | |
185 | <p> | |
186 | To finish on or before the 8th house, Pat must finish at the 5th, 6th, | |
187 | 7th or 8th house. The probability that he will finish on <span class="bold"><strong>exactly</strong></span> | |
188 | ( == ) on any house is the Probability Density Function (pdf). | |
189 | </p> | |
190 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the 6th house is "</span> | |
191 | <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">6</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
192 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the 7th house is "</span> | |
193 | <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">7</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
194 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the 8th house is "</span> | |
195 | <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">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
196 | </pre> | |
197 | <pre class="programlisting">Probability that Pat finishes on the 6th house is 0.03072 | |
198 | Probability that Pat finishes on the 7th house is 0.055296 | |
199 | Probability that Pat finishes on the 8th house is 0.077414 | |
200 | </pre> | |
201 | <p> | |
202 | The sum of the probabilities for these houses is the Cumulative Distribution | |
203 | Function (cdf). We can calculate it by adding the individual probabilities. | |
204 | </p> | |
205 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on or before the 8th house is sum "</span> | |
206 | <span class="string">"\n"</span> <span class="special"><<</span> <span class="string">"pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = "</span> | |
207 | <span class="comment">// Sum each of the mass/density probabilities for houses sales_quota = 5, 6, 7, & 8.</span> | |
208 | <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">5</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 0 failures.</span> | |
209 | <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">6</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 1 failure.</span> | |
210 | <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">7</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 2 failures.</span> | |
211 | <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">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="comment">// 3 failures.</span> | |
212 | <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
213 | </pre> | |
214 | <pre class="programlisting">pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = 0.17367 | |
215 | </pre> | |
216 | <p> | |
217 | Or, usually better, by using the negative binomial <span class="bold"><strong>cumulative</strong></span> | |
218 | distribution function. | |
219 | </p> | |
220 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> | |
221 | <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">8</span> <span class="special"><<</span> <span class="string">"th house is "</span> | |
222 | <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
223 | </pre> | |
224 | <pre class="programlisting">Probability of selling his quota of 5 bars on or before the 8th house is 0.17367 | |
225 | </pre> | |
226 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability that Pat finishes exactly on the 10th house is "</span> | |
227 | <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">10</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
228 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> | |
229 | <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">10</span> <span class="special"><<</span> <span class="string">"th house is "</span> | |
230 | <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">10</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
231 | </pre> | |
232 | <pre class="programlisting">Probability that Pat finishes exactly on the 10th house is 0.10033 | |
233 | Probability of selling his quota of 5 bars on or before the 10th house is 0.3669 | |
234 | </pre> | |
235 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes exactly on the 11th house is "</span> | |
236 | <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">11</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
237 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> | |
238 | <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">11</span> <span class="special"><<</span> <span class="string">"th house is "</span> | |
239 | <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">11</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
240 | </pre> | |
241 | <pre class="programlisting">Probability that Pat finishes on the 11th house is 0.10033 | |
242 | Probability of selling his quota of 5 candy bars | |
243 | on or before the 11th house is 0.46723 | |
244 | </pre> | |
245 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes exactly on the 12th house is "</span> | |
246 | <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">12</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
247 | ||
248 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> | |
249 | <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="number">12</span> <span class="special"><<</span> <span class="string">"th house is "</span> | |
250 | <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">12</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
251 | </pre> | |
252 | <pre class="programlisting">Probability that Pat finishes on the 12th house is 0.094596 | |
253 | Probability of selling his quota of 5 candy bars | |
254 | on or before the 12th house is 0.56182 | |
255 | </pre> | |
256 | <p> | |
257 | Finally consider the risk of Pat not selling his quota of 5 bars even | |
258 | after visiting all the houses. Calculate the probability that he <span class="emphasis"><em>will</em></span> | |
259 | sell on or before the last house: Calculate the probability that he would | |
260 | sell all his quota on the very last house. | |
261 | </p> | |
262 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability that Pat finishes on the "</span> <span class="special"><<</span> <span class="identifier">all_houses</span> | |
263 | <span class="special"><<</span> <span class="string">" house is "</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="identifier">all_houses</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
264 | </pre> | |
265 | <p> | |
266 | Probability of selling his quota of 5 bars on the 30th house is | |
267 | </p> | |
268 | <pre class="programlisting">Probability that Pat finishes on the 30 house is 0.00069145 | |
269 | </pre> | |
270 | <p> | |
271 | when he'd be very unlucky indeed! | |
272 | </p> | |
273 | <p> | |
274 | What is the probability that Pat exhausts all 30 houses in the neighborhood, | |
275 | and <span class="bold"><strong>still</strong></span> doesn't sell the required | |
276 | 5 candy bars? | |
277 | </p> | |
278 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of selling his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> | |
279 | <span class="special"><<</span> <span class="string">" bars\non or before the "</span> <span class="special"><<</span> <span class="identifier">all_houses</span> <span class="special"><<</span> <span class="string">"th house is "</span> | |
280 | <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
281 | </pre> | |
282 | <pre class="programlisting">Probability of selling his quota of 5 bars | |
283 | on or before the 30th house is 0.99849 | |
284 | </pre> | |
285 | <p> | |
286 | /*<code class="computeroutput"><span class="identifier">So</span> <span class="identifier">the</span> | |
287 | <span class="identifier">risk</span> <span class="identifier">of</span> | |
288 | <span class="identifier">failing</span> <span class="identifier">even</span> | |
289 | <span class="identifier">after</span> <span class="identifier">visiting</span> | |
290 | <span class="identifier">all</span> <span class="identifier">the</span> | |
291 | <span class="identifier">houses</span> <span class="identifier">is</span> | |
292 | <span class="number">1</span> <span class="special">-</span> <span class="keyword">this</span> <span class="identifier">probability</span><span class="special">,</span> </code><code class="computeroutput"><span class="number">1</span> | |
293 | <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> | |
294 | <span class="special">-</span> <span class="identifier">sales_quota</span></code><code class="computeroutput"> | |
295 | <span class="identifier">But</span> <span class="keyword">using</span> | |
296 | <span class="keyword">this</span> <span class="identifier">expression</span> | |
297 | <span class="identifier">may</span> <span class="identifier">cause</span> | |
298 | <span class="identifier">serious</span> <span class="identifier">inaccuracy</span><span class="special">,</span> <span class="identifier">so</span> <span class="identifier">it</span> <span class="identifier">would</span> | |
299 | <span class="identifier">be</span> <span class="identifier">much</span> | |
300 | <span class="identifier">better</span> <span class="identifier">to</span> | |
301 | <span class="identifier">use</span> <span class="identifier">the</span> | |
302 | <span class="identifier">complement</span> <span class="identifier">of</span> | |
303 | <span class="identifier">the</span> <span class="identifier">cdf</span><span class="special">:</span> <span class="identifier">So</span> <span class="identifier">the</span> <span class="identifier">risk</span> | |
304 | <span class="identifier">of</span> <span class="identifier">failing</span> | |
305 | <span class="identifier">even</span> <span class="identifier">at</span><span class="special">,</span> <span class="keyword">or</span> <span class="identifier">after</span><span class="special">,</span> <span class="identifier">the</span> <span class="number">31</span><span class="identifier">th</span> <span class="special">(</span><span class="identifier">non</span><span class="special">-</span><span class="identifier">existent</span><span class="special">)</span> | |
306 | <span class="identifier">houses</span> <span class="identifier">is</span> | |
307 | <span class="number">1</span> <span class="special">-</span> <span class="keyword">this</span> <span class="identifier">probability</span><span class="special">,</span> </code><code class="computeroutput"><span class="number">1</span> | |
308 | <span class="special">-</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> | |
309 | <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span></code>` But using this expression may cause | |
310 | serious inaccuracy. So it would be much better to use the __complement | |
311 | of the cdf (see <a class="link" href="../../overview/complements.html#why_complements">why complements?</a>). | |
312 | </p> | |
313 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nProbability of failing to sell his quota of "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> | |
314 | <span class="special"><<</span> <span class="string">" bars\neven after visiting all "</span> <span class="special"><<</span> <span class="identifier">all_houses</span> <span class="special"><<</span> <span class="string">" houses is "</span> | |
315 | <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">nb</span><span class="special">,</span> <span class="identifier">all_houses</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">))</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
316 | </pre> | |
317 | <pre class="programlisting">Probability of failing to sell his quota of 5 bars | |
318 | even after visiting all 30 houses is 0.0015101 | |
319 | </pre> | |
320 | <p> | |
321 | We can also use the quantile (percentile), the inverse of the cdf, to | |
322 | predict which house Pat will finish on. So for the 8th house: | |
323 | </p> | |
324 | <pre class="programlisting"><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="special">(</span><span class="number">8</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">));</span> | |
325 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Probability of meeting sales quota on or before 8th house is "</span><span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
326 | </pre> | |
327 | <pre class="programlisting">Probability of meeting sales quota on or before 8th house is 0.174 | |
328 | </pre> | |
329 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="identifier">p</span> | |
330 | <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
331 | ||
332 | <span class="identifier">cout</span><span class="special"><<</span> <span class="string">" quantile(nb, p) = "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
333 | </pre> | |
334 | <pre class="programlisting">If the confidence of meeting sales quota is 0.17367, then the finishing house is 8 | |
335 | </pre> | |
336 | <p> | |
337 | Demanding absolute certainty that all 5 will be sold, implies an infinite | |
338 | number of trials. (Of course, there are only 30 houses on the estate, | |
339 | so he can't ever be <span class="bold"><strong>certain</strong></span> of selling | |
340 | his quota). | |
341 | </p> | |
342 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">1.</span> | |
343 | <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</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">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
344 | <span class="comment">// 1.#INF == infinity.</span> | |
345 | </pre> | |
346 | <pre class="programlisting">If the confidence of meeting sales quota is 1, then the finishing house is 1.#INF | |
347 | </pre> | |
348 | <p> | |
349 | And similarly for a few other probabilities: | |
350 | </p> | |
351 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">0.</span> | |
352 | <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">0.</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
353 | ||
354 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">0.5</span> | |
355 | <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="number">0.5</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
356 | ||
357 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If the confidence of meeting sales quota is "</span> <span class="special"><<</span> <span class="number">1</span> <span class="special">-</span> <span class="number">0.00151</span> <span class="comment">// 30 th</span> | |
358 | <span class="special"><<</span> <span class="string">", then the finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</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="number">0.00151</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
359 | </pre> | |
360 | <pre class="programlisting">If the confidence of meeting sales quota is 0, then the finishing house is 5 | |
361 | If the confidence of meeting sales quota is 0.5, then the finishing house is 11.337 | |
362 | If the confidence of meeting sales quota is 0.99849, then the finishing house is 30 | |
363 | </pre> | |
364 | <p> | |
365 | Notice that because we chose a discrete quantile policy of real, the | |
366 | result can be an 'unreal' fractional house. | |
367 | </p> | |
368 | <p> | |
369 | If the opposite is true, we don't want to assume any confidence, then | |
370 | this is tantamount to assuming that all the first sales_quota trials | |
371 | will be successful sales. | |
372 | </p> | |
373 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If confidence of meeting quota is zero\n(we assume all houses are successful sales)"</span> | |
374 | <span class="string">", then finishing house is "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
375 | </pre> | |
376 | <pre class="programlisting">If confidence of meeting quota is zero (we assume all houses are successful sales), then finishing house is 5 | |
377 | If confidence of meeting quota is 0, then finishing house is 5 | |
378 | </pre> | |
379 | <p> | |
380 | We can list quantiles for a few probabilities: | |
381 | </p> | |
382 | <pre class="programlisting"> <span class="keyword">double</span> <span class="identifier">ps</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">0.</span><span class="special">,</span> <span class="number">0.001</span><span class="special">,</span> <span class="number">0.01</span><span class="special">,</span> <span class="number">0.05</span><span class="special">,</span> <span class="number">0.1</span><span class="special">,</span> <span class="number">0.5</span><span class="special">,</span> <span class="number">0.9</span><span class="special">,</span> <span class="number">0.95</span><span class="special">,</span> <span class="number">0.99</span><span class="special">,</span> <span class="number">0.999</span><span class="special">,</span> <span class="number">1.</span><span class="special">};</span> | |
383 | <span class="comment">// Confidence as fraction = 1-alpha, as percent = 100 * (1-alpha[i]) %</span> | |
384 | <span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">3</span><span class="special">);</span> | |
385 | <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">ps</span><span class="special">)/</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">ps</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="identifier">i</span><span class="special">++)</span> | |
386 | <span class="special">{</span> | |
387 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"If confidence of meeting quota is "</span> <span class="special"><<</span> <span class="identifier">ps</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> | |
388 | <span class="special"><<</span> <span class="string">", then finishing house is "</span> <span class="special"><<</span> <span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">ps</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span> <span class="special">+</span> <span class="identifier">sales_quota</span> | |
389 | <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
390 | <span class="special">}</span> | |
391 | </pre> | |
392 | <pre class="programlisting">If confidence of meeting quota is 0, then finishing house is 5 | |
393 | If confidence of meeting quota is 0.001, then finishing house is 5 | |
394 | If confidence of meeting quota is 0.01, then finishing house is 5 | |
395 | If confidence of meeting quota is 0.05, then finishing house is 6.2 | |
396 | If confidence of meeting quota is 0.1, then finishing house is 7.06 | |
397 | If confidence of meeting quota is 0.5, then finishing house is 11.3 | |
398 | If confidence of meeting quota is 0.9, then finishing house is 17.8 | |
399 | If confidence of meeting quota is 0.95, then finishing house is 20.1 | |
400 | If confidence of meeting quota is 0.99, then finishing house is 24.8 | |
401 | If confidence of meeting quota is 0.999, then finishing house is 31.1 | |
402 | If confidence of meeting quota is 1, then finishing house is 1.#INF | |
403 | </pre> | |
404 | <p> | |
405 | We could have applied a ceil function to obtain a 'worst case' integer | |
406 | value for house. | |
407 | </p> | |
408 | <pre class="programlisting"><span class="identifier">ceil</span><span class="special">(</span><span class="identifier">quantile</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">ps</span><span class="special">[</span><span class="identifier">i</span><span class="special">]))</span></pre> | |
409 | <p> | |
410 | Or, if we had used the default discrete quantile policy, integer_outside, | |
411 | by omitting | |
412 | </p> | |
413 | <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MATH_DISCRETE_QUANTILE_POLICY</span> <span class="identifier">real</span></pre> | |
414 | <p> | |
415 | we would have achieved the same effect. | |
416 | </p> | |
417 | <p> | |
418 | The real result gives some suggestion which house is most likely. For | |
419 | example, compare the real and integer_outside for 95% confidence. | |
420 | </p> | |
421 | <pre class="programlisting">If confidence of meeting quota is 0.95, then finishing house is 20.1 | |
422 | If confidence of meeting quota is 0.95, then finishing house is 21 | |
423 | </pre> | |
424 | <p> | |
425 | The real value 20.1 is much closer to 20 than 21, so integer_outside | |
426 | is pessimistic. We could also use integer_round_nearest policy to suggest | |
427 | that 20 is more likely. | |
428 | </p> | |
429 | <p> | |
430 | Finally, we can tabulate the probability for the last sale being exactly | |
431 | on each house. | |
432 | </p> | |
433 | <pre class="programlisting"><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nHouse for "</span> <span class="special"><<</span> <span class="identifier">sales_quota</span> <span class="special"><<</span> <span class="string">"th (last) sale. Probability (%)"</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
434 | <span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">5</span><span class="special">);</span> | |
435 | <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)</span><span class="identifier">sales_quota</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">all_houses</span><span class="special">+</span><span class="number">1</span><span class="special">;</span> <span class="identifier">i</span><span class="special">++)</span> | |
436 | <span class="special">{</span> | |
437 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">left</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">setw</span><span class="special">(</span><span class="number">8</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">cdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">-</span> <span class="identifier">sales_quota</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
438 | <span class="special">}</span> | |
439 | <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span> | |
440 | </pre> | |
441 | <pre class="programlisting">House for 5 th (last) sale. Probability (%) | |
442 | 5 0.01024 | |
443 | 6 0.04096 | |
444 | 7 0.096256 | |
445 | 8 0.17367 | |
446 | 9 0.26657 | |
447 | 10 0.3669 | |
448 | 11 0.46723 | |
449 | 12 0.56182 | |
450 | 13 0.64696 | |
451 | 14 0.72074 | |
452 | 15 0.78272 | |
453 | 16 0.83343 | |
454 | 17 0.874 | |
455 | 18 0.90583 | |
456 | 19 0.93039 | |
457 | 20 0.94905 | |
458 | 21 0.96304 | |
459 | 22 0.97342 | |
460 | 23 0.98103 | |
461 | 24 0.98655 | |
462 | 25 0.99053 | |
463 | 26 0.99337 | |
464 | 27 0.99539 | |
465 | 28 0.99681 | |
466 | 29 0.9978 | |
467 | 30 0.99849 | |
468 | </pre> | |
469 | <p> | |
470 | As noted above, using a catch block is always a good idea, even if you | |
471 | do not expect to use it. | |
472 | </p> | |
473 | <pre class="programlisting"><span class="special">}</span> | |
474 | <span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception</span><span class="special">&</span> <span class="identifier">e</span><span class="special">)</span> | |
475 | <span class="special">{</span> <span class="comment">// Since we have set an overflow policy of ignore_error,</span> | |
476 | <span class="comment">// an overflow exception should never be thrown.</span> | |
477 | <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"\nMessage from thrown exception was:\n "</span> <span class="special"><<</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> | |
478 | </pre> | |
479 | <p> | |
480 | For example, without a ignore domain error policy, if we asked for | |
481 | </p> | |
482 | <pre class="programlisting"><span class="identifier">pdf</span><span class="special">(</span><span class="identifier">nb</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre> | |
483 | <p> | |
484 | for example, we would get: | |
485 | </p> | |
486 | <pre class="programlisting">Message from thrown exception was: | |
487 | Error in function boost::math::pdf(const negative_binomial_distribution<double>&, double): | |
488 | Number of failures argument is -1, but must be >= 0 ! | |
489 | </pre> | |
490 | </div> | |
491 | <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> | |
492 | <td align="left"></td> | |
493 | <td align="right"><div class="copyright-footer">Copyright © 2006-2010, 2012-2014 Nikhar Agrawal, | |
494 | Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert | |
495 | Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan Råde, Gautam Sewani, | |
496 | Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p> | |
497 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
498 | 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>) | |
499 | </p> | |
500 | </div></td> | |
501 | </tr></table> | |
502 | <hr> | |
503 | <div class="spirit-nav"> | |
504 | <a accesskey="p" href="neg_binom_size_eg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../neg_binom_eg.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="negative_binomial_example2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> | |
505 | </div> | |
506 | </body> | |
507 | </html> |