]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/math/doc/html/math_toolkit/dist_ref/dists/gamma_dist.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / math / doc / html / math_toolkit / dist_ref / dists / gamma_dist.html
CommitLineData
7c673cae
FG
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4<title>Gamma (and Erlang) Distribution</title>
5<link rel="stylesheet" href="../../../math.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
7<link rel="home" href="../../../index.html" title="Math Toolkit 2.5.1">
8<link rel="up" href="../dists.html" title="Distributions">
9<link rel="prev" href="f_dist.html" title="F Distribution">
10<link rel="next" href="geometric_dist.html" title="Geometric Distribution">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="f_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="geometric_dist.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h4 class="title">
27<a name="math_toolkit.dist_ref.dists.gamma_dist"></a><a class="link" href="gamma_dist.html" title="Gamma (and Erlang) Distribution">Gamma (and
28 Erlang) Distribution</a>
29</h4></div></div></div>
30<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">distributions</span><span class="special">/</span><span class="identifier">gamma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</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>
32
33<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span> <span class="special">=</span> <span class="keyword">double</span><span class="special">,</span>
34 <span class="keyword">class</span> <a class="link" href="../../../policy.html" title="Chapter&#160;15.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a> <span class="special">=</span> <a class="link" href="../../pol_ref/pol_ref_ref.html" title="Policy Class Reference">policies::policy&lt;&gt;</a> <span class="special">&gt;</span>
35<span class="keyword">class</span> <span class="identifier">gamma_distribution</span>
36<span class="special">{</span>
37<span class="keyword">public</span><span class="special">:</span>
38 <span class="keyword">typedef</span> <span class="identifier">RealType</span> <span class="identifier">value_type</span><span class="special">;</span>
39 <span class="keyword">typedef</span> <span class="identifier">Policy</span> <span class="identifier">policy_type</span><span class="special">;</span>
40
41 <span class="identifier">gamma_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">scale</span> <span class="special">=</span> <span class="number">1</span><span class="special">)</span>
42
43 <span class="identifier">RealType</span> <span class="identifier">shape</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
44 <span class="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
45<span class="special">};</span>
46
47<span class="special">}}</span> <span class="comment">// namespaces</span>
48</pre>
49<p>
50 The gamma distribution is a continuous probability distribution. When the
51 shape parameter is an integer then it is known as the Erlang Distribution.
52 It is also closely related to the Poisson and Chi Squared Distributions.
53 </p>
54<p>
55 When the shape parameter has an integer value, the distribution is the
56 <a href="http://en.wikipedia.org/wiki/Erlang_distribution" target="_top">Erlang distribution</a>.
57 Since this can be produced by ensuring that the shape parameter has an
58 integer value &gt; 0, the Erlang distribution is not separately implemented.
59 </p>
60<div class="note"><table border="0" summary="Note">
61<tr>
62<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
63<th align="left">Note</th>
64</tr>
65<tr><td align="left" valign="top">
66<p>
67 To avoid potential confusion with the gamma functions, this distribution
68 does not provide the typedef:
69 </p>
70<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">gamma_distribution</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">gamma</span><span class="special">;</span></pre>
71<p>
72 Instead if you want a double precision gamma distribution you can write
73 </p>
74<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gamma_distribution</span><span class="special">&lt;&gt;</span> <span class="identifier">my_gamma</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span></pre>
75</td></tr>
76</table></div>
77<p>
78 For shape parameter <span class="emphasis"><em>k</em></span> and scale parameter &#952; &#160; it is defined
79 by the probability density function:
80 </p>
81<p>
82 <span class="inlinemediaobject"><img src="../../../../equations/gamma_dist_ref1.svg"></span>
83 </p>
84<p>
85 Sometimes an alternative formulation is used: given parameters &#945; &#160;= k and
86 &#946; &#160;= 1 / &#952;, then the distribution can be defined by the PDF:
87 </p>
88<p>
89 <span class="inlinemediaobject"><img src="../../../../equations/gamma_dist_ref2.svg"></span>
90 </p>
91<p>
92 In this form the inverse scale parameter is called a <span class="emphasis"><em>rate parameter</em></span>.
93 </p>
94<p>
95 Both forms are in common usage: this library uses the first definition
96 throughout. Therefore to construct a Gamma Distribution from a <span class="emphasis"><em>rate
97 parameter</em></span>, you should pass the reciprocal of the rate as the
98 scale parameter.
99 </p>
100<p>
101 The following two graphs illustrate how the PDF of the gamma distribution
102 varies as the parameters vary:
103 </p>
104<p>
105 <span class="inlinemediaobject"><img src="../../../../graphs/gamma1_pdf.svg" align="middle"></span>
106 </p>
107<p>
108 <span class="inlinemediaobject"><img src="../../../../graphs/gamma2_pdf.svg" align="middle"></span>
109 </p>
110<p>
111 The <span class="bold"><strong>Erlang Distribution</strong></span> is the same as
112 the Gamma, but with the shape parameter an integer. It is often expressed
113 using a <span class="emphasis"><em>rate</em></span> rather than a <span class="emphasis"><em>scale</em></span>
114 as the second parameter (remember that the rate is the reciprocal of the
115 scale).
116 </p>
117<p>
118 Internally the functions used to implement the Gamma Distribution are already
119 optimised for small-integer arguments, so in general there should be no
120 great loss of performance from using a Gamma Distribution rather than a
121 dedicated Erlang Distribution.
122 </p>
123<h5>
124<a name="math_toolkit.dist_ref.dists.gamma_dist.h0"></a>
125 <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.member_functions"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.member_functions">Member
126 Functions</a>
127 </h5>
128<pre class="programlisting"><span class="identifier">gamma_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">shape</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">scale</span> <span class="special">=</span> <span class="number">1</span><span class="special">);</span>
129</pre>
130<p>
131 Constructs a gamma distribution with shape <span class="emphasis"><em>shape</em></span> and
132 scale <span class="emphasis"><em>scale</em></span>.
133 </p>
134<p>
135 Requires that the shape and scale parameters are greater than zero, otherwise
136 calls <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
137 </p>
138<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">shape</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
139</pre>
140<p>
141 Returns the <span class="emphasis"><em>shape</em></span> parameter of this distribution.
142 </p>
143<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">scale</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
144</pre>
145<p>
146 Returns the <span class="emphasis"><em>scale</em></span> parameter of this distribution.
147 </p>
148<h5>
149<a name="math_toolkit.dist_ref.dists.gamma_dist.h1"></a>
150 <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.non_member_accessors"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.non_member_accessors">Non-member
151 Accessors</a>
152 </h5>
153<p>
154 All the <a class="link" href="../nmp.html" title="Non-Member Properties">usual non-member accessor
155 functions</a> that are generic to all distributions are supported:
156 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.cdf">Cumulative Distribution Function</a>,
157 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.pdf">Probability Density Function</a>,
158 <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>,
159 <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>,
160 <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>,
161 <a class="link" href="../nmp.html#math_toolkit.dist_ref.nmp.sd">standard deviation</a>,
162 <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>,
163 <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>.
164 </p>
165<p>
166 The domain of the random variable is [0,+&#8734;].
167 </p>
168<h5>
169<a name="math_toolkit.dist_ref.dists.gamma_dist.h2"></a>
170 <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.accuracy"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.accuracy">Accuracy</a>
171 </h5>
172<p>
173 The lognormal distribution is implemented in terms of the incomplete gamma
174 functions <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a> and
175 <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a> and their inverses
176 <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a> and
177 <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>: refer
178 to the accuracy data for those functions for more information.
179 </p>
180<h5>
181<a name="math_toolkit.dist_ref.dists.gamma_dist.h3"></a>
182 <span class="phrase"><a name="math_toolkit.dist_ref.dists.gamma_dist.implementation"></a></span><a class="link" href="gamma_dist.html#math_toolkit.dist_ref.dists.gamma_dist.implementation">Implementation</a>
183 </h5>
184<p>
185 In the following table <span class="emphasis"><em>k</em></span> is the shape parameter of
186 the distribution, &#952; &#160; is its scale parameter, <span class="emphasis"><em>x</em></span> is the
187 random variate, <span class="emphasis"><em>p</em></span> is the probability and <span class="emphasis"><em>q
188 = 1-p</em></span>.
189 </p>
190<div class="informaltable"><table class="table">
191<colgroup>
192<col>
193<col>
194</colgroup>
195<thead><tr>
196<th>
197 <p>
198 Function
199 </p>
200 </th>
201<th>
202 <p>
203 Implementation Notes
204 </p>
205 </th>
206</tr></thead>
207<tbody>
208<tr>
209<td>
210 <p>
211 pdf
212 </p>
213 </td>
214<td>
215 <p>
216 Using the relation: pdf = <a class="link" href="../../sf_gamma/gamma_derivatives.html" title="Derivative of the Incomplete Gamma Function">gamma_p_derivative</a>(k,
217 x / &#952;) / &#952;
218 </p>
219 </td>
220</tr>
221<tr>
222<td>
223 <p>
224 cdf
225 </p>
226 </td>
227<td>
228 <p>
229 Using the relation: p = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_p</a>(k,
230 x / &#952;)
231 </p>
232 </td>
233</tr>
234<tr>
235<td>
236 <p>
237 cdf complement
238 </p>
239 </td>
240<td>
241 <p>
242 Using the relation: q = <a class="link" href="../../sf_gamma/igamma.html" title="Incomplete Gamma Functions">gamma_q</a>(k,
243 x / &#952;)
244 </p>
245 </td>
246</tr>
247<tr>
248<td>
249 <p>
250 quantile
251 </p>
252 </td>
253<td>
254 <p>
255 Using the relation: x = &#952; &#160;* <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_p_inv</a>(k,
256 p)
257 </p>
258 </td>
259</tr>
260<tr>
261<td>
262 <p>
263 quantile from the complement
264 </p>
265 </td>
266<td>
267 <p>
268 Using the relation: x = &#952; &#160;* <a class="link" href="../../sf_gamma/igamma_inv.html" title="Incomplete Gamma Function Inverses">gamma_q_inv</a>(k,
269 p)
270 </p>
271 </td>
272</tr>
273<tr>
274<td>
275 <p>
276 mean
277 </p>
278 </td>
279<td>
280 <p>
281 k&#952;
282 </p>
283 </td>
284</tr>
285<tr>
286<td>
287 <p>
288 variance
289 </p>
290 </td>
291<td>
292 <p>
293 k&#952;<sup>2</sup>
294 </p>
295 </td>
296</tr>
297<tr>
298<td>
299 <p>
300 mode
301 </p>
302 </td>
303<td>
304 <p>
305 (k-1)&#952; &#160; for <span class="emphasis"><em>k&gt;1</em></span> otherwise a <a class="link" href="../../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>
306 </p>
307 </td>
308</tr>
309<tr>
310<td>
311 <p>
312 skewness
313 </p>
314 </td>
315<td>
316 <p>
317 2 / sqrt(k)
318 </p>
319 </td>
320</tr>
321<tr>
322<td>
323 <p>
324 kurtosis
325 </p>
326 </td>
327<td>
328 <p>
329 3 + 6 / k
330 </p>
331 </td>
332</tr>
333<tr>
334<td>
335 <p>
336 kurtosis excess
337 </p>
338 </td>
339<td>
340 <p>
341 6 / k
342 </p>
343 </td>
344</tr>
345</tbody>
346</table></div>
347</div>
348<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
349<td align="left"></td>
350<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010, 2012-2014 Nikhar Agrawal,
351 Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert
352 Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R&#229;de, Gautam Sewani,
353 Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang<p>
354 Distributed under the Boost Software License, Version 1.0. (See accompanying
355 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>)
356 </p>
357</div></td>
358</tr></table>
359<hr>
360<div class="spirit-nav">
361<a accesskey="p" href="f_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="geometric_dist.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
362</div>
363</body>
364</html>