Fix bug #3926: Various limits give UND where they should give IND
[maxima.git] / doc / info / distrib.texi.m4
blob8e2e9e55db746b10639fdd14e79128d71c8c0ae8
1 @c -*- mode: texinfo -*-
2 @menu
3 * Introduction to distrib::
4 * Functions and Variables for continuous distributions::
5 * Functions and Variables for discrete distributions::
6 @end menu
8 @c Define an m4 macro for the NormalRV function that is used below.
9 @c Can't use @macro because m4 is processed too late for this to work.
10 m4_define(<<<m4_Normal_RV>>>,
11 m4_math(<<<{\it Normal}($1, $2)>>>, <<<Normal($1, $2)>>>))
13 @c Define the function student t to denote Student's t random variable
14 m4_define(<<<m4_Student_T_RV>>>,
15 @math{t($1)})
17 @c Define noncentral Student's t RV
18 m4_define(<<<m4_Noncentral_T_RV>>>,
19 m4_math(<<<{\it nc\_t}($1, $2)>>>,<<<nc_t($1, $2)>>>))
21 @c Define Chi^2(n), the chi-squared random variate function.
22 m4_define(<<<m4_Chi2_RV>>>,
23 m4_math(<<<\chi^2($1)>>>, <<<Chi^2($2)>>>))
25 @c Define the Gamma RV
26 m4_define(<<<m4_Gamma_RV>>>,
27 m4_math(<<<\Gamma\left($1,$2\right)>>>, <<<Gamma($1,$2)>>>))
29 @c Define the noncentral chi-squared RV
30 m4_define(<<<m4_noncentral_chi2_RV>>>,
31 m4_math(<<<{\it nc\_Chi}^2($1,$2)>>>, <<<nc_Chi^2($1,$2)>>>))
33 @c Define the exponential RV
34 m4_define(<<<m4_Exponential_RV>>>,
35 m4_math(<<<{\it Exponential}($1)>>>, <<<Exponential($1)>>>))
37 @c Define the Weibull RV
38 m4_define(<<<m4_Weibull_RV>>>,
39 m4_math(<<<{\it Weibull}($1,$2)>>>, <<<Weibull($1,$2)>>>))
41 @c Define lognormal RV
42 m4_define(<<<m4_Lognormal_RV>>>,
43 m4_math(<<<{\it Lognormal}($1,$2)>>>,<<<Lognormal($1,$2)>>>))
45 @c Define beta RV
46 m4_define(<<<m4_Beta_RV>>>,
47 m4_math(<<<{\it Beta}($1,$2)>>>,<<<Beta($1,$2)>>>))
49 @c Define continuous uniform RV
50 m4_define(<<<m4_Continuous_Uniform_RV>>>,
51 m4_math(<<<{\it
52 ContinuousUniform}($1,$2)>>>,<<<ContinuousUniform($1,$2)>>>))
54 @c Define logistic RV
55 m4_define(<<<m4_Logistic_RV>>>,
56 m4_math(<<<{\it Logistic}($1,$2)>>>,<<<<Logistice($1,$2)>>>))
58 @c Define pareto RV
59 m4_define(<<<m4_Pareto_RV>>>,
60 m4_math(<<<{\it Pareto}($1,$2)>>>,<<<Pareto($1,$2)>>>))
62 @c Define Rayleigh RV
63 m4_define(<<<m4_Rayleigh_RV>>>,
64 m4_math(<<<{\it Rayleigh}($1)>>>,<<<Rayleigh($1)>>>))
66 @c Define Laplace RV
67 m4_define(<<<m4_Laplace_RV>>>,
68 m4_math(<<<{\it Laplace}($1,$2)>>>,<<<Laplace($1,$2)>>>))
70 @c Define Cauchy RV
71 m4_define(<<<m4_Cauchy_RV>>>,
72 m4_math(<<<{\it Cauchy}($1,$2)>>>,<<<Cauchy($1,$2)>>>))
74 @c Define Gumbel RV
75 m4_define(<<<m4_Gumbel_RV>>>,
76 m4_math(<<<{\it Gumbel}($1,$2)>>>,<<<Gumbel($1,$2)>>>))
78 @c Define Binomial RV
79 m4_define(<<<m4_Binomial_RV>>>,
80 m4_math(<<<{\it Binomial}($1,$2)>>>,<<<Binomial($1,$2)>>>))
82 @c Define Poisson RV
83 m4_define(<<<m4_Poisson_RV>>>,
84 m4_math(<<<{\it Poisson}($1)>>>,<<<Poisson($1)>>>))
86 @c Define Bernoulli RV
87 m4_define(<<<m4_Bernoulli_RV>>>,
88 m4_math(<<<{\it Bernoulli}($1)>>>,<<<Bernoulli($1)>>>))
90 @c Define Geometric RV
91 m4_define(<<<m4_Geometric_RV>>>,
92 m4_math(<<<{\it Geometric}($1)>>>,<<<Geometric($1)>>>))
94 @c Define Discrete Uniform RV
95 m4_define(<<<m4_DiscreteUniform_RV>>>,
96 m4_math(<<<{\it DiscreteUniform}($1)>>>,<<<DiscreteUniform($1)>>>))
98 @c Define Hypergeometric RV
99 m4_define(<<<m4_Hypergeometric_RV>>>,
100 m4_math(<<<{\it Hypergeometric}($1,$2,$3)>>>,<<<Hypergeometric($1,$2,$3)>>>))
102 @c Define Negative Binomial RV
103 m4_define(<<<m4_NegativeBinomial_RV>>>,
104 m4_math(<<<{\it NegativeBinomial}($1,$2)>>>,<<<NegativeBinomial($1,$2)>>>))
107 @node Introduction to distrib, Functions and Variables for continuous distributions
108 @section Introduction to distrib
111 Package @code{distrib} contains a set of functions for making probability computations on both discrete and continuous univariate models. 
113 What follows is a short reminder of basic probabilistic related definitions.
115 Let @math{f(x)} be the @var{density function} of an absolute continuous random variable @math{X}. The @var{distribution function} is defined as
116 m4_displaymath(
117 <<<F\left(x\right)=\int_{ -\infty }^{x}{f\left(u\right)\;du}>>>,
119 @example
120                        x
121                       /
122                       [
123                F(x) = I     f(u) du
124                       ]
125                       /
126                        minf
127 @end example
128 >>>)
129 which equals the probability m4_math(<<<{\rm Pr}(X \le x)>>>, <<<Pr(X <= x)>>>).
131 The @var{mean} value is a localization parameter and is defined as
132 m4_displaymath(
133 <<<E\left[X\right]=\int_{ -\infty }^{\infty }{x\,f\left(x\right)\;dx}>>>,
135 @example
136                      inf
137                     /
138                     [
139            E[X]  =  I   x f(x) dx
140                     ]
141                     /
142                      minf
143 @end example
144 >>>)
146 The @var{variance} is a measure of variation,
147 m4_displaymath(
148 <<<V\left[X\right]=\int_{ -\infty }^{\infty }{f\left(x\right)\,\left(x
149  -E\left[X\right]\right)^2\;dx}>>>,
151 @example
152                  inf
153                 /
154                 [                    2
155          V[X] = I     f(x) (x - E[X])  dx
156                 ]
157                 /
158                  minf
159 @end example
160 >>>)
161 which is a positive real number. The square root of the variance is
162 the @var{standard deviation}, m4_math(<<<D[x]=\sqrt{V[X]}>>>, <<<D[X]=sqrt(V[X])>>>), and it is another measure of variation.
164 The @var{skewness coefficient} is a measure of non-symmetry,
165 m4_displaymath(
166 <<<SK\left[X\right]={{\int_{ -\infty }^{\infty }{f\left(x\right)\,
167  \left(x-E\left[X\right]\right)^3\;dx}}\over{D\left[X\right]^3}}>>>,
169 @example
170                  inf
171                 /
172             1   [                    3
173   SK[X] = ----- I     f(x) (x - E[X])  dx
174               3 ]
175           D[X]  /
176                  minf
177 @end example
178 >>>)
180 And the @var{kurtosis coefficient} measures the peakedness of the distribution,
181 m4_displaymath(
182 <<<KU\left[X\right]={{\int_{ -\infty }^{\infty }{f\left(x\right)\,
183  \left(x-E\left[X\right]\right)^4\;dx}}\over{D\left[X\right]^4}}-3>>>,
185 @example
186                  inf
187                 /
188             1   [                    4
189   KU[X] = ----- I     f(x) (x - E[X])  dx - 3
190               4 ]
191           D[X]  /
192                  minf
193 @end example
194 >>>)
195 If @math{X} is gaussian, @math{KU[X]=0}. In fact, both skewness and kurtosis are shape parameters used to measure the non--gaussianity of a distribution.
197 If the random variable @math{X} is discrete, the density, or @var{probability}, function @math{f(x)} takes positive values within certain countable set of numbers @math{x_i}, and zero elsewhere. In this case, the distribution function is
198 m4_displaymath(
199 <<< F\left(x\right)=\sum_{x_{i}\leq x}{f\left(x_{i}\right)} >>>,
201 @example
202                        ====
203                        \
204                 F(x) =  >    f(x )
205                        /        i
206                        ====
207                       x <= x
208                        i
209 @end example
210 >>>)
212 The mean, variance, standard deviation, skewness coefficient and kurtosis coefficient take the form
213 m4_displaymath(
214 <<<\eqalign{
215 E\left[X\right]&=\sum_{x_{i}}{x_{i}f\left(x_{i}\right)}, \cr
216 V\left[X\right]&=\sum_{x_{i}}{f\left(x_{i}\right)\left(x_{i}-E\left[X\right]\right)^2},\cr
217 D\left[X\right]&=\sqrt{V\left[X\right]},\cr
218 SK\left[X\right]&={{\sum_{x_{i}}{f\left(x\right)\,
219  \left(x-E\left[X\right]\right)^3\;dx}}\over{D\left[X\right]^3}}, \cr
220 KU\left[X\right]&={{\sum_{x_{i}}{f\left(x\right)\,
221  \left(x-E\left[X\right]\right)^4\;dx}}\over{D\left[X\right]^4}}-3, 
222 }>>>,
224 @example
225           ====
226           \
227    E[X] =  >  x  f(x ) ,
228           /    i    i
229           ====
230            x 
231             i
233            ====
234            \                     2
235    V[X] =   >    f(x ) (x - E[X])  ,
236            /        i    i
237            ====
238             x
239              i
241           D[X] = sqrt(V[X]),
243                      ====
244               1      \                     3
245   SK[X] =  -------    >    f(x ) (x - E[X])  
246            D[X]^3    /        i    i
247                      ====
248                       x
249                        i
251                      ====
252               1      \                     4
253   KU[X] =  -------    >    f(x ) (x - E[X])   - 3 ,
254            D[X]^4    /        i    i
255                      ====
256                       x
257                        i
258 @end example
259 >>>)
260 respectively.
262 There is a naming convention in package @code{distrib}. Every function name has two parts, the first one makes reference to the function or parameter we want to calculate,
263 @example
264 Functions:
265    Density function            (pdf_*)
266    Distribution function       (cdf_*)
267    Quantile                    (quantile_*)
268    Mean                        (mean_*)
269    Variance                    (var_*)
270    Standard deviation          (std_*)
271    Skewness coefficient        (skewness_*)
272    Kurtosis coefficient        (kurtosis_*)
273    Random variate              (random_*)
274 @end example
276 The second part is an explicit reference to the probabilistic model,
277 @example
278 Continuous distributions:
279    Normal              (*normal)
280    Student             (*student_t)
281    Chi^2               (*chi2)
282    Noncentral Chi^2    (*noncentral_chi2)
283    F                   (*f)
284    Exponential         (*exp)
285    Lognormal           (*lognormal)
286    Gamma               (*gamma)
287    Beta                (*beta)
288    Continuous uniform  (*continuous_uniform)
289    Logistic            (*logistic)
290    Pareto              (*pareto)
291    Weibull             (*weibull)
292    Rayleigh            (*rayleigh)
293    Laplace             (*laplace)
294    Cauchy              (*cauchy)
295    Gumbel              (*gumbel)
297 Discrete distributions:
298    Binomial             (*binomial)
299    Poisson              (*poisson)
300    Bernoulli            (*bernoulli)
301    Geometric            (*geometric)
302    Discrete uniform     (*discrete_uniform)
303    hypergeometric       (*hypergeometric)
304    Negative binomial    (*negative_binomial)
305    Finite discrete      (*general_finite_discrete)
306 @end example
308 For example, @code{pdf_student_t(x,n)} is the density function of the Student distribution with @var{n} degrees of freedom, @code{std_pareto(a,b)} is the standard deviation of the Pareto distribution with parameters @var{a} and @var{b} and @code{kurtosis_poisson(m)} is the kurtosis coefficient of the Poisson distribution with mean @var{m}.
311 In order to make use of package @code{distrib} you need first to load it by typing
312 @example
313 (%i1) load("distrib")$
314 @end example
316 For comments, bugs or suggestions, please contact the author at @var{'riotorto AT yahoo DOT com'}.
318 @opencatbox{Categories:}
319 @category{Statistical functions}
320 @category{Share packages}
321 @category{Package distrib}
322 @closecatbox
327 @node Functions and Variables for continuous distributions, Functions and Variables for discrete distributions, Introduction to distrib
328 @section Functions and Variables for continuous distributions
329 Maxima knows the following kinds of continuous distributions.
331 @menu
332 * Normal Random Variable::
333 * Student's t Random Variable::
334 * Noncentral Student's t Random Variable::
335 * Chi-squared Random Variable::
336 * Noncentral Chi-squared Random Variable::
337 * F Random Variable::
338 * Exponential Random Variable::
339 * Lognormal Random Variable::
340 * Gamma Random Variable::
341 * Beta Random Variable::
342 * Continuous Uniform Random Variable::
343 * Logistic Random Variable::
344 * Pareto Random Variable::
345 * Weibull Random Variable::
346 * Rayleigh Random Variable::
347 * Laplace Random Variable::
348 * Cauchy Random Variable::
349 * Gumbel Random Variable::
350 @end menu
352 @node Normal Random Variable, Student's t Random Variable, Functions and Variables for continuous distributions, Functions and Variables for continuous distributions
353 @subsection Normal Random Variable
355 Normal random variables (also called Gaussian) is denoted
356 by m4_Normal_RV(m, s) where
357 @math{m} is the mean and @math{s > 0} is the standard deviation.
359 @anchor{pdf_normal}
360 @deffn {Function} pdf_normal (@var{x},@var{m},@var{s})
361 Returns the value at @var{x} of the density function of a m4_Normal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
363 The pdf is
364 m4_displaymath(
365 <<<f(x; m, s) = {1\over s\sqrt{2\pi}} e^{\displaystyle -{(x-m)^2\over 2s^2}}>>>,
367 @example
368                                  2
369                           (x - m)
370                         - --------
371                                2
372                             2 s
373                       %e
374       f(x, m, s) = -------------------
375                    sqrt(2) sqrt(%pi) s
376 @end example
377 >>>)
379 @opencatbox{Categories:}
380 @category{Package distrib}
381 @closecatbox
383 @end deffn
386 @anchor{cdf_normal}
387 @deffn {Function} cdf_normal (@var{x},@var{m},@var{s})
388 Returns the value at @var{x} of the distribution function of a m4_Normal_RV(m,s) random variable, with @math{s>0}. This function is defined in terms of Maxima's built-in error function @code{erf}.
390 The cdf can be written analytically:
391 m4_displaymath(
392 <<<F(x; m, s) = {1\over 2} + {1\over 2} {\rm erf}\left(x-m\over s\sqrt{2}\right)>>>,
394 @example
395                         x - m
396                   erf(---------)
397                       sqrt(2) s    1
398      F(x, m, s) = -------------- + -
399                         2          2
400 @end example
401 >>>)
403 @c ===beg===
404 @c load ("distrib")$
405 @c cdf_normal(x,m,s);
406 @c ===end===
407 @example
408 (%i1) load ("distrib")$
409 @group
410 (%i2) cdf_normal(x,m,s);
411                              x - m
412                        erf(---------)
413                            sqrt(2) s    1
414 (%o2)                  -------------- + -
415                              2          2
416 @end group
417 @end example
419 See also @mrefdot{erf}
421 @opencatbox{Categories:}
422 @category{Package distrib}
423 @closecatbox
425 @end deffn
428 @anchor{quantile_normal}
429 @deffn {Function} quantile_normal (@var{q},@var{m},@var{s})
430 Returns the @var{q}-quantile of a m4_Normal_RV(m,s) random variable, with @math{s>0}; in other words, this is the inverse of @mrefdot{cdf_normal} Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
432 @c ===beg===
433 @c load ("distrib")$
434 @c quantile_normal(95/100,0,1);
435 @c float(%);
436 @c ===end===
437 @example
438 (%i1) load ("distrib")$
439 @group
440 (%i2) quantile_normal(95/100,0,1);
441                                          9
442 (%o2)                sqrt(2) inverse_erf(--)
443                                          10
444 @end group
445 @group
446 (%i3) float(%);
447 (%o3)                   1.644853626951472
448 @end group
449 @end example
451 @opencatbox{Categories:}
452 @category{Package distrib}
453 @closecatbox
455 @end deffn
458 @anchor{mean_normal}
459 @deffn {Function} mean_normal (@var{m},@var{s})
460 Returns the mean of a m4_Normal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
462 The mean is
463 m4_displaymath(
464 <<<E[X] = m>>>,
466 @example
467                              E[X] = m
468 @end example
469 >>>)
471 @opencatbox{Categories:}
472 @category{Package distrib}
473 @closecatbox
475 @end deffn
478 @anchor{var_normal}
479 @deffn {Function} var_normal (@var{m},@var{s})
480 Returns the variance of a m4_Normal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
482 The variance is
483 m4_displaymath(
484 <<<V[X] = s^2>>>,
486 @example
487                                      2
488                              V[X] = s
489 @end example
490 >>>)
492 @opencatbox{Categories:}
493 @category{Package distrib}
494 @closecatbox
496 @end deffn
498 @anchor{std_normal}
499 @deffn {Function} std_normal (@var{m},@var{s})
500 Returns the standard deviation of a m4_Normal_RV(m,s) random variable, with @math{s>0}, namely @var{s}. To make use of this function, write first @code{load("distrib")}.
502 The standard deviation is
503 m4_displaymath(
504 <<<D[X] = s>>>,
506 @example
507                              D[X] = s
508 @end example
510 >>>)
511 @opencatbox{Categories:}
512 @category{Package distrib}
513 @closecatbox
515 @end deffn
518 @anchor{skewness_normal}
519 @deffn {Function} skewness_normal (@var{m},@var{s})
520 Returns the skewness coefficient of a m4_Normal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
522 The skewness coefficient is
523 m4_displaymath(
524 <<<SK[X] = 0>>>,
526 @example
527                              SK[X] = 0
528 @end example
529 >>>)
530 @opencatbox{Categories:}
531 @category{Package distrib}
532 @closecatbox
534 @end deffn
537 @anchor{kurtosis_normal}
538 @deffn {Function} kurtosis_normal (@var{m},@var{s})
539 Returns the kurtosis coefficient of a m4_Normal_RV(m,s) random variable, with @math{s>0}, which is always equal to 0. To make use of this function, write first @code{load("distrib")}.
541 The kurtosis coefficient is
542 m4_displaymath(
543 <<<KU[X] = 0>>>,
545 @example
546                              SK[X] = 0
547 @end example
549 >>>)
551 @opencatbox{Categories:}
552 @category{Package distrib}
553 @closecatbox
555 @end deffn
558 @anchor{random_normal}
559 @deffn {Function} random_normal (@var{m},@var{s}) @
560 @fname{random_normal} (@var{m},@var{s},@var{n})
562 Returns a m4_Normal_RV(m,s) random variate, with @math{s>0}. Calling @code{random_normal} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
564 This is an implementation of the Box-Mueller algorithm, as described in Knuth, D.E. (1981) @var{Seminumerical Algorithms. The Art of Computer Programming.} Addison-Wesley.
566 To make use of this function, write first @code{load("distrib")}.
568 @opencatbox{Categories:}
569 @category{Package distrib}
570 @category{Random numbers}
571 @closecatbox
573 @end deffn
575 @node Student's t Random Variable, Noncentral Student's t Random Variable, Normal Random Variable, Functions and Variables for continuous distributions
576 @subsection Student's t Random Variable
579 Student's t random variable is denoted by m4_Student_T_RV(n) where
580 @math{n} is the degrees of freedom with @math{n > 0}.  If @math{Z} is
581 a m4_Normal_RV(0,1) variable and @math{V} is an
582 independent m4_math(\chi^2, chi^2) random variable with @math{n} degress of
583 freedom, then
585 m4_displaymath(
586 <<<Z \over \sqrt{V/n}>>>,
587 <<<@math{Z/sqrt(V/n)}>>>)
589 has a Student's @math{t}-distribution with @math{n} degrees of freedom.
591 @anchor{pdf_student_t}
592 @deffn {Function} pdf_student_t (@var{x},@var{n})
593 Returns the value at @var{x} of the density function of a Student random variable m4_Student_T_RV(n), with @math{n>0} degrees of freedom. To make use of this function, write first @code{load("distrib")}.
595 The pdf is
596 m4_displaymath(
597 <<<f(x; n) = \left[\sqrt{n} B\left({1\over 2}, {n\over 2}\right)\right]^{-1}
598 \left(1+{x^2\over n}\right)^{\displaystyle -{n+1\over 2}}>>>,
600 @example
601                                      (- n) - 1
602                                2     ---------
603                       n + 1   x          2
604                 gamma(-----) (-- + 1)
605                         2     n
606       f(x, n) = ------------------------------
607                                   n
608                   sqrt(%pi) gamma(-) sqrt(n)
609                                   2
610 @end example
611 @math{(sqrt(n)*beta(1/2,n/2))^(-1) (1+x^2/n)^(-(n+1)/2)}>>>)
613 @opencatbox{Categories:}
614 @category{Package distrib}
615 @closecatbox
617 @end deffn
620 @anchor{cdf_student_t}
621 @deffn {Function} cdf_student_t (@var{x},@var{n})
622 Returns the value at @var{x} of the distribution function of a Student random variable m4_Student_T_RV(n), with @math{n>0} degrees of freedom.
624 The cdf is
625 m4_displaymath(
626 <<<F(x; n) =
627 \cases{
628 1-\displaystyle{1\over 2} I_t\left({n\over 2}, {1\over 2}\right) & $x \ge 0$ \cr
630 \displaystyle{1\over 2} I_t\left({n\over 2}, {1\over 2}\right) & $x < 0$
631 }>>>,
633 @example
634          [ 1-1/2*I_t(n/2, 1/2)  x >= 0
635 F(x,n) = [
636          [ 1/2*I_t(n/2, 1/2)    x < 0
637 @end example
638 >>>)
640 where m4_math(<<<t = n/(n+x^2)>>>, <<<t = n/(n+x^2)>>>) and m4_math(<<<I_t(a,b)>>>, <<<I_t(a,b)>>>) is the
641 @ref{beta_incomplete_regularized} function.
643 @c ===beg===
644 @c load ("distrib")$
645 @c cdf_student_t(1/2, 7/3);
646 @c float(%);
647 @c ===end===
648 @example
649 (%i1) load ("distrib")$
650 @group
651 (%i2) cdf_student_t(1/2, 7/3);
652                                             7  1  28
653                 beta_incomplete_regularized(-, -, --)
654                                             6  2  31
655 (%o2)       1 - -------------------------------------
656                                   2
657 @end group
658 @group
659 (%i3) float(%);
660 (%o3)                  0.6698450596140415
661 @end group
662 @end example
664 @opencatbox{Categories:}
665 @category{Package distrib}
666 @closecatbox
668 @end deffn
671 @anchor{quantile_student_t}
672 @deffn {Function} quantile_student_t (@var{q},@var{n})
673 Returns the @var{q}-quantile of a Student random variable m4_Student_T_RV(n), with @math{n>0}; in other words, this is the inverse of @code{cdf_student_t}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
675 @opencatbox{Categories:}
676 @category{Package distrib}
677 @closecatbox
679 @end deffn
682 @anchor{mean_student_t}
683 @deffn {Function} mean_student_t (@var{n})
684 Returns the mean of a Student random variable m4_Student_T_RV(n), with @math{n>0}. To make use of this function, write first @code{load("distrib")}.
686 The mean is
687 m4_displaymath(
688 <<<E[X] = 0>>>,
690 @example
691                              E[X] = 0
692 @end example
693 >>>)
694 @opencatbox{Categories:}
695 @category{Package distrib}
696 @closecatbox
698 @end deffn
701 @anchor{var_student_t}
702 @deffn {Function} var_student_t (@var{n})
703 Returns the variance of a Student random variable m4_Student_T_RV(n), with @math{n>2}.
705 The variance is
706 m4_displaymath(
707 <<<V[X] = {n\over n-2}>>>,
709 @example
710                                     n
711                            V[X] = -----
712                                   n - 2
713 @end example
715 >>>)
716 @c ===beg===
717 @c load ("distrib")$
718 @c var_student_t(n);
719 @c ===end===
720 @example
721 (%i1) load ("distrib")$
722 @group
723 (%i2) var_student_t(n);
724                                 n
725 (%o2)                         -----
726                               n - 2
727 @end group
728 @end example
730 @opencatbox{Categories:}
731 @category{Package distrib}
732 @closecatbox
734 @end deffn
737 @anchor{std_student_t}
738 @deffn {Function} std_student_t (@var{n})
739 Returns the standard deviation of a Student random variable m4_Student_T_RV(n), with @math{n>2}. To make use of this function, write first @code{load("distrib")}.
741 The standard deviation is
742 m4_displaymath(
743 <<<D[X] = \sqrt{\displaystyle{n\over n-2}}>>>,
745 @example
746                                      n
747                        D[X] = sqrt(-----)
748                                    n - 2
749 @end example
751 >>>)
753 @opencatbox{Categories:}
754 @category{Package distrib}
755 @closecatbox
757 @end deffn
760 @anchor{skewness_student_t}
761 @deffn {Function} skewness_student_t (@var{n})
762 Returns the skewness coefficient of a Student random variable m4_Student_T_RV(n), with @math{n>3}, which is always equal to 0. To make use of this function, write first @code{load("distrib")}.
764 The skewness coefficient is
765 m4_displaymath(
766 <<<SK[X] = 0>>>,
768 @example
769                              SK[X] = 0
770 @end example
771 >>>)
773 @opencatbox{Categories:}
774 @category{Package distrib}
775 @closecatbox
777 @end deffn
780 @anchor{kurtosis_student_t}
781 @deffn {Function} kurtosis_student_t (@var{n})
782 Returns the kurtosis coefficient of a Student random variable m4_Student_T_RV(n), with @math{n>4}. To make use of this function, write first @code{load("distrib")}.
784 The kurtosis coefficient is
785 m4_displaymath(
786 <<<KU[X] = {6\over n-4}>>>,
788 @example
789                                     6
790                           KU[X] = -----
791                                   n - 4
792 @end example
793 >>>)
795 @opencatbox{Categories:}
796 @category{Package distrib}
797 @closecatbox
799 @end deffn
802 @anchor{random_student_t}
803 @deffn {Function} random_student_t (@var{n}) @
804 @fname{random_student_t} (@var{n},@var{m})
806 Returns a Student random variate m4_Student_T_RV(n), with @math{n>0}. Calling @code{random_student_t} with a second argument @var{m}, a random sample of size @var{m} will be simulated.
808 The implemented algorithm is based on the fact that if @math{Z} is a
809 normal random variable m4_Normal_RV(0,1) and @math{S^2} is
810 a m4_math(\chi^2, chi squared) random variable with @math{n} degrees of
811 freedom, m4_Chi2_RV(n), then
813 m4_displaymath(
814 <<<X={{Z}\over{\sqrt{{S^2}\over{n}}}}>>>,
816 @example
817                            Z
818                  X = -------------
819                      /   2  \ 1/2
820                      |  S   |
821                      | ---  |
822                      \  n   /
823 @end example
824 >>>)
825 is a Student random variable with @math{n} degrees of freedom, m4_Student_T_RV(n).
827 To make use of this function, write first @code{load("distrib")}.
829 @opencatbox{Categories:}
830 @category{Package distrib}
831 @category{Random numbers}
832 @closecatbox
834 @end deffn
836 @node Noncentral Student's t Random Variable, Chi-squared Random Variable, Student's t Random Variable, Functions and Variables for continuous distributions
837 @subsection Noncentral Student's t Random Variable
839 Let @math{ncp} be the non-centrality parameter, @math{n} be the
840 degrees of freedom for the non-central Student's @math{t} random
841 variable.
843 Then let @math{X} be a m4_Normal_RV(n,ncp) and @math{S^2} be an independent m4_math(\chi^2,
844 chi squared) random variable with @math{n} degrees of freedom, the
845 random variable
846 m4_displaymath(
847 <<<U = {X \over \sqrt{S^2\over n}}>>>,
848 <<<@math{U = X/sqrt(S^2/n)}>>>)
850 has a non-central Student's @math{t} distribution with non-centrality
851 parameter @math{ncp}.
853 @anchor{pdf_noncentral_student_t}
854 @deffn {Function} pdf_noncentral_student_t (@var{x},@var{n},@var{ncp})
855 Returns the value at @var{x} of the density function of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>0} degrees of freedom and noncentrality parameter @math{ncp}. To make use of this function, write first @code{load("distrib")}.
857 The pdf is
858 m4_displaymath(
859 <<<f(x; n, \mu) = \left[\sqrt{n} B\left({1\over 2}, {n\over
860 2}\right)\right]^{-1}\left(1+{x^2\over n}\right)^{-{(n+1)/2}}
861 e^{-\mu^2/ 2}
862 \bigg[A_n(x; \mu) + B_n(x; \mu)\bigg]>>>,
864 @example
865                            2
866                          mu          (- n) - 1
867                        - ---         ---------
868                           2    2         2
869                      %e      (x  + 1)          (B(x, n, mu) + An(x, n, mu))
870 f(x;n,mu) =          -------------------------------------------------
871                                          1  n
872                                     beta(-, -) sqrt(n)
873                                          2  2
875 @end example
876 >>>)
877 where
878 m4_displaymath(
879 <<<\eqalign{
880 A_n(x;\mu) &= {}_1F_1\left({n+1\over 2}; {1\over 2}; {\mu^2 x^2\over
881 2\left(x^2+n\right)}\right) \cr
882 B_n(x;\mu) &= {\sqrt{2}\mu x \over \sqrt{x^2+n}} {\Gamma\left({n\over
883 2} + 1\right)\over \Gamma\left({n+1\over 2}\right)}\;
884 {}_1F_1\left({n\over 2} + 1; {3\over 2}; {\mu^2 x^2\over
885 2\left(x^2+n\right)}\right)
886 }>>>,
888 @example
889                                         2  2
890                        n + 1    1     mu  x
891  A(x, n, mu) = %f    ([-----], [-], ----------)
892                  1, 1    2      2       2
893                                     2 (x  + n)
895                                                    2  2
896                                   n        3     mu  x           n
897                sqrt(2) mu %f    ([- + 1], [-], ----------) gamma(- + 1) x
898                             1, 1  2        2       2             2
899                                                2 (x  + n)
900  B(x, n, mu) = ----------------------------------------------------------
901                                      n + 1        2
902                                gamma(-----) sqrt(x  + n)
903                                        2
904 @end example
905 >>>)
906 and m4_math(\mu, mu) is the non-centrality parameter @math{ncp}.
908 Sometimes an extra work is necessary to get the final result.
910 @c ===beg===
911 @c load ("distrib")$
912 @c expand(pdf_noncentral_student_t(3,5,0.1));
913 @c float(%);
914 @c ===end===
915 @example
916 (%i1) load ("distrib")$
917 @group
918 (%i2) expand(pdf_noncentral_student_t(3,5,0.1));
919 rat: replaced 0.01889822365046136 by 15934951/843198350 = 0.01889822365046136
921 rat: replaced -8.734356480209641 by -294697965/33740089 = -8.734356480209641
923 rat: replaced 4.136255165816327 by 51033443/12338079 = 4.136255165816332
925 rat: replaced 1.08061432164203 by 56754827/52520891 = 1.08061432164203
927 rat: replaced 0.0565127306411839 by 5608717/99246965 = 0.05651273064118384
929 rat: replaced -300.8069396896258 by -79782423/265228 = -300.8069396896256
931 rat: replaced 160.6269176184973 by 178374907/1110492 = 160.626917618497
932                            7/2                         7/2
933       0.04296414417400905 5      1.323650307289301e-6 5
934 (%o2) ------------------------ + -------------------------
935          3/2   5/2                       sqrt(%pi)
936         2    14    sqrt(%pi)
937                                                               7/2
938                                          1.94793720435093e-4 5
939                                        + ------------------------
940                                                    %pi
941 @end group
942 @group
943 (%i3) float(%);
944 (%o3)                  0.02080593159405671
945 @end group
946 @end example
948 @opencatbox{Categories:}
949 @category{Package distrib}
950 @closecatbox
952 @end deffn
955 @anchor{cdf_noncentral_student_t}
956 @deffn {Function} cdf_noncentral_student_t (@var{x},@var{n},@var{ncp})
957 Returns the value at @var{x} of the distribution function of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>0} degrees of freedom and noncentrality parameter @math{ncp}. This function has no closed form and it is numerically computed.
959 @c ===beg===
960 @c load ("distrib")$
961 @c cdf_noncentral_student_t(-2,5,-5);
962 @c ===end===
963 @example
964 (%i1) load ("distrib")$
965 @group
966 (%i2) cdf_noncentral_student_t(-2,5,-5);
967 (%o2)                   0.995203009331975
968 @end group
969 @end example
971 @opencatbox{Categories:}
972 @category{Package distrib}
973 @closecatbox
975 @end deffn
978 @anchor{quantile_noncentral_student_t}
979 @deffn {Function} quantile_noncentral_student_t (@var{q},@var{n},@var{ncp})
980 Returns the @var{q}-quantile of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>0} degrees of freedom and noncentrality parameter @math{ncp}; in other words, this is the inverse of @code{cdf_noncentral_student_t}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
982 @opencatbox{Categories:}
983 @category{Package distrib}
984 @closecatbox
986 @end deffn
989 @anchor{mean_noncentral_student_t}
990 @deffn {Function} mean_noncentral_student_t (@var{n},@var{ncp})
991 Returns the mean of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>1} degrees of freedom and noncentrality parameter @math{ncp}. To make use of this function, write first @code{load("distrib")}.
993 The mean is
994 m4_displaymath(
995 <<<E[X] = {\mu \sqrt{n}\; \Gamma\left(\displaystyle{n-1\over 2}\right) \over
996 \sqrt{2}\;\Gamma\left(\displaystyle{n\over 2}\right)}>>>,
998 @example
999                    n - 1
1000           mu gamma(-----) sqrt(n)
1001                      2
1002 E[X] =    -----------------------
1003                            n
1004              sqrt(2) gamma(-)
1005                            2
1006 @end example
1007 >>>)
1009 where m4_math(\mu, mu) is the noncentrality parameter @math{ncp}.
1011 @c ===beg===
1012 @c load ("distrib")$
1013 @c mean_noncentral_student_t(df,k);
1014 @c ===end===
1015 @example
1016 (%i1) load ("distrib")$
1017 @group
1018 (%i2) mean_noncentral_student_t(df,k);
1019                           df - 1
1020                     gamma(------) sqrt(df) k
1021                             2
1022 (%o2)               ------------------------
1023                                      df
1024                        sqrt(2) gamma(--)
1025                                      2
1026 @end group
1027 @end example
1029 @opencatbox{Categories:}
1030 @category{Package distrib}
1031 @closecatbox
1033 @end deffn
1036 @anchor{var_noncentral_student_t}
1037 @deffn {Function} var_noncentral_student_t (@var{n},@var{ncp})
1038 Returns the variance of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>2} degrees of freedom and noncentrality parameter @math{ncp}. To make use of this function, write first @code{load("distrib")}.
1040 The variance is
1041 m4_displaymath(
1042 <<<V[X] = {n(\mu^2+1)\over n-2} - {n\mu^2\; \Gamma\left(\displaystyle{n-1\over 2}\right)^2
1043 \over 2\Gamma\left(\displaystyle{n\over 2}\right)^2}>>>,
1045 @example
1046                              2 n - 1       2
1047                2        gamma (-----) n ncp
1048          n (ncp  + 1)            2
1049 V[X] =   ------------ - --------------------
1050             n - 2                  2 n
1051                             2 gamma (-)
1052                                      2
1053 @end example
1054 >>>)
1056 where m4_math(\mu, mu) is the noncentrality parameter @math{ncp}.
1058 @opencatbox{Categories:}
1059 @category{Package distrib}
1060 @closecatbox
1062 @end deffn
1065 @anchor{std_noncentral_student_t}
1066 @deffn {Function} std_noncentral_student_t (@var{n},@var{ncp})
1067 Returns the standard deviation of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>2} degrees of freedom and noncentrality parameter @math{ncp}. To make use of this function, write first @code{load("distrib")}.
1069 The standard deviation is
1070 m4_displaymath(
1071 <<<D[X] = \sqrt{{n(\mu^2+1)\over n-2} - {n\mu^2\; \Gamma\left(\displaystyle{n-1\over 2}\right)^2
1072 \over 2\Gamma\left(\displaystyle{n\over 2}\right)^2}}>>>,
1074 @example
1075                              2 n - 1       2
1076                     2        gamma (-----) n ncp
1077               n (ncp  + 1)            2
1078 D[X] =   sqrt(------------ - --------------------)
1079                  n - 2                  2 n
1080                                  2 gamma (-)
1081                                           2
1082 @end example
1083 >>>,
1084 <<<>>>)
1086 @opencatbox{Categories:}
1087 @category{Package distrib}
1088 @closecatbox
1090 @end deffn
1093 @anchor{skewness_noncentral_student_t}
1094 @deffn {Function} skewness_noncentral_student_t (@var{n},@var{ncp})
1095 Returns the skewness coefficient of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>3} degrees of freedom and noncentrality parameter @math{ncp}. To make use of this function, write first @code{load("distrib")}.
1097 @c The TeX form is obtained from
1098 @c tex(skewness_noncentral_student_t(n,mu)).  Likewise the info form
1099 @c is just cut-n-pasted from maxima's terminal output.
1100 If @math{U} is a non-central Student's @math{t} random variable with
1101 @math{n} degrees of freedom and a noncentrality parameter m4_math(\mu,
1102 mu), the skewness is
1103 m4_displaymath(
1104 <<<\eqalign{
1105 SK[U] &= 
1106 {\mu\sqrt{n}\,\Gamma\left({{n-1}\over{2}}\right)
1107 \over{\sqrt{2}\Gamma\left({{n
1108  }\over{2}}\right)\sigma^{3}}}\left({{n
1109  \left(2n+\mu^2-3\right)}\over{\left(n-3\right)\left(n-2\right)}}
1110  -2\sigma^2\right) \cr
1111  \sigma^2 &= {{n\left(\mu^2+1\right)}\over{n-2}}-{{n \mu^2\,
1112  \Gamma\left({{n-1}\over{2}}\right)^2}\over{2\Gamma\left({{n
1113  }\over{2}}\right)^2}}
1115 >>>,
1117 @example
1118 SK[U] = 
1119                                      2
1120           n - 1           n (2 n + mu  - 3)
1121 (mu gamma(-----) sqrt(n) (-----------------
1122             2              (n - 3) (n - 2)
1123                       2      2 n - 1
1124          2          mu  gamma (-----) n
1125       (mu  + 1) n                2
1126  - 2 (----------- - -------------------)))
1127          n - 2                 2 n
1128                         2 gamma (-)
1129                                  2
1130                                     2      2 n - 1
1131                        2          mu  gamma (-----) n
1132                 n   (mu  + 1) n                2      3/2
1133 /(sqrt(2) gamma(-) (----------- - -------------------)   )
1134                 2      n - 2                 2 n
1135                                       2 gamma (-)
1136                                                2
1137 @end example
1138 >>>)
1140 @opencatbox{Categories:}
1141 @category{Package distrib}
1142 @closecatbox
1144 @end deffn
1147 @anchor{kurtosis_noncentral_student_t}
1148 @deffn {Function} kurtosis_noncentral_student_t (@var{n},@var{ncp})
1149 Returns the kurtosis coefficient of a noncentral Student random variable m4_Noncentral_T_RV(n,ncp), with @math{n>4} degrees of freedom and noncentrality parameter @math{ncp}. To make use of this function, write first @code{load("distrib")}.
1151 If @math{U} is a non-central Student's @math{t} random variable with
1152 @math{n} degrees of freedom and a noncentrality parameter m4_math(\mu,
1153 mu), the kurtosis is
1155 @c The formula we see can be basically derived by computing
1156 @c (kurtosis_noncentral_student_t(n,mu)+3)*var_noncentral_student_t(n,mu)^2,
1157 @c which comes from the definition of kurtosis.  The rest is then
1158 @c obtained by replacing a constant by F.
1159 m4_displaymath(
1160 <<<\eqalign{
1161 KU[U] &=
1162 {\mu_4\over \sigma^4} - 3\cr
1163   \mu_4 &= {{\left(\mu^4+6\mu^2+3\right)n^2}\over{(n-4)(n-2)}}
1164  -\left({{n\left(3(3n-5)+\mu^2(n+1)\right)
1165  }\over{(n-3)(n-2)}}-3\sigma^2\right) F \cr
1166  \sigma^2 &= {{n\left(\mu^2+1\right)}\over{n-2}}-{{n \mu^2
1167  \Gamma\left({{n-1}\over{2}}\right)^2}\over{2\Gamma\left({{n
1168  }\over{2}}\right)^2}} \cr
1169  F &= {n\mu^2\Gamma\left({n-1\over 2}\right)^2 \over
1170  2\sigma^4\Gamma\left({n\over 2}\right)^2}
1171 }>>>,
1173 @example
1174 KU[U] = 
1175     4       2       2
1176  (mu  + 6 mu  + 3) n       2      2 n - 1
1177 (-------------------- - (mu  gamma (-----) n
1178    (n - 4) (n - 2)                    2
1179                                                      2      2 n - 1
1180                      2                  2          mu  gamma (-----) n
1181   n (3 (3 n - 5) + mu  (n + 1))      (mu  + 1) n                2
1182  (----------------------------- - 3 (----------- - -------------------)))
1183          (n - 3) (n - 2)                n - 2                 2 n
1184                                                        2 gamma (-)
1185                                                                 2
1186                                  2      2 n - 1
1187                     2          mu  gamma (-----) n
1188          2 n     (mu  + 1) n                2      2
1189 /(2 gamma (-)))/(----------- - -------------------)  - 3
1190            2        n - 2                 2 n
1191                                    2 gamma (-)
1192                                             2
1193 @end example
1194 >>>)
1196 @opencatbox{Categories:}
1197 @category{Package distrib}
1198 @closecatbox
1200 @end deffn
1203 @anchor{random_noncentral_student_t}
1204 @deffn {Function} random_noncentral_student_t (@var{n},@var{ncp}) @
1205 @fname{random_noncentral_student_t} (@var{n},@var{ncp},@var{m})
1207 Returns a noncentral Student random variate m4_Noncentral_T_RV(n,ncp), with @math{n>0}. Calling @code{random_noncentral_student_t} with a third argument @var{m}, a random sample of size @var{m} will be simulated.
1209 The implemented algorithm is based on the fact that if @var{X} is a
1210 normal random variable m4_Normal_RV(ncp,1) and @math{S^2} is
1211 a m4_math(\chi^2, chi square) random variable with @var{n} degrees of freedom, m4_Chi2_RV(n), then
1212 m4_displaymath(
1213 <<<U={{X}\over{\sqrt{{S^2}\over{n}}}}>>>,
1215 @example
1216                            X
1217                  U = -------------
1218                      /   2  \ 1/2
1219                      |  S   |
1220                      | ---  |
1221                      \  n   /
1222 @end example
1223 >>>)
1224 is a noncentral Student random variable with @math{n} degrees of freedom and noncentrality parameter @math{ncp}, m4_Noncentral_T_RV(n,ncp).
1226 To make use of this function, write first @code{load("distrib")}.
1228 @opencatbox{Categories:}
1229 @category{Package distrib}
1230 @category{Random numbers}
1231 @closecatbox
1233 @end deffn
1236 @node Chi-squared Random Variable, Noncentral Chi-squared Random Variable, Noncentral Student's t Random Variable, Functions and Variables for continuous distributions
1237 @subsection Chi-squared Random Variable
1239 Let m4_math(<<<X_1, X_2, \ldots, X_n>>>, <<<X_1, X_2, ...,
1240 X_k>>>) be independent and identically distributed m4_Normal_RV(0,1) variables.  Then
1241 m4_displaymath(
1242 <<<X^2 = \sum_{i=1}^n X_i^2>>>,
1243 <<<@math{X^2 = sum(X_i^2, i, 1, n)}>>>)
1245 is said to follow a chi-square distribution with @math{n} degrees of
1246 freedom.
1248 @anchor{pdf_chi2}
1249 @deffn {Function} pdf_chi2 (@var{x},@var{n})
1250 Returns the value at @var{x} of the density function of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1251 The m4_Chi2_RV(n) random variable is equivalent to the m4_Gamma_RV(n/2,2).
1253 The pdf is
1255 m4_displaymath(
1256 <<<f(x; n) =
1257 \cases{
1258  \displaystyle{x^{n/2-1} e^{-x/2} \over 2^{n/2}
1259  \Gamma\left(\displaystyle{n\over 2}\right)} & for $x
1260  > 0$ \cr
1262  0 & otherwise
1263 }>>>,
1265 @example
1266              [  n/2 - 1   - x/2
1267              [ x        %e      unit_step(x)
1268              [ -----------------------------     for x >= 0
1269              [               n   n/2
1270    f(x, n) = [         gamma(-) 2
1271              [               2
1272              [
1273              [ 0                                 otherwise
1274 @end example
1275 >>>)
1277 @c ===beg===
1278 @c load ("distrib")$
1279 @c pdf_chi2(x,n);
1280 @c ===end===
1281 @example
1282 (%i1) load ("distrib")$
1283 @group
1284 (%i2) pdf_chi2(x,n);
1285                    n/2 - 1   - x/2
1286                   x        %e      unit_step(x)
1287 (%o2)             -----------------------------
1288                                 n   n/2
1289                           gamma(-) 2
1290                                 2
1291 @end group
1292 @end example
1294 @opencatbox{Categories:}
1295 @category{Package distrib}
1296 @closecatbox
1298 @end deffn
1301 @anchor{cdf_chi2}
1302 @deffn {Function} cdf_chi2 (@var{x},@var{n})
1303 Returns the value at @math{x} of the distribution function of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1305 The cdf is
1306 m4_displaymath(
1307 <<<F(x; n) =
1308 \cases{
1309 1 - Q\left(\displaystyle{n\over 2}, {x\over 2}\right) & $x > 0$ \cr
1310 0 & otherwise
1311 }>>>,
1313 @example
1314           [        n  x
1315           [ (1 - Q(-, -))     for x >= 0
1316           [        2  2
1317 F(x, n) = [
1318           [ 0                 otherwise
1319 @end example
1320 >>>)
1321 where @math{Q(a,z)} is the @ref{gamma_incomplete_regularized} function.
1323 @c ===beg===
1324 @c load ("distrib")$
1325 @c cdf_chi2(3,4);
1326 @c float(%);
1327 @c ===end===
1328 @example
1329 (%i1) load ("distrib")$
1330 @group
1331 (%i2) cdf_chi2(3,4);
1332                                                  3
1333 (%o2)        1 - gamma_incomplete_regularized(2, -)
1334                                                  2
1335 @end group
1336 @group
1337 (%i3) float(%);
1338 (%o3)                  0.4421745996289252
1339 @end group
1340 @end example
1342 @opencatbox{Categories:}
1343 @category{Package distrib}
1344 @closecatbox
1346 @end deffn
1349 @anchor{quantile_chi2}
1350 @deffn {Function} quantile_chi2 (@var{q},@var{n})
1351 Returns the @var{q}-quantile of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}; in other words, this is the inverse of @code{cdf_chi2}. Argument @var{q} must be an element of @math{[0,1]}.
1353 This function has no closed form and it is numerically computed.
1355 @c ===beg===
1356 @c load ("distrib")$
1357 @c quantile_chi2(0.99,9);
1358 @c ===end===
1359 @example
1360 (%i1) load ("distrib")$
1361 @group
1362 (%i2) quantile_chi2(0.99,9);
1363 (%o2)                   21.66599433346194
1364 @end group
1365 @end example
1367 @opencatbox{Categories:}
1368 @category{Package distrib}
1369 @closecatbox
1371 @end deffn
1374 @anchor{mean_chi2}
1375 @deffn {Function} mean_chi2 (@var{n})
1376 Returns the mean of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1378 The m4_Chi2_RV(n) random variable is equivalent to the m4_Gamma_RV(n/2,2).
1380 The mean is
1381 m4_displaymath(
1382 <<<E[X] = n>>>,
1384 @example
1385                             E[X] = n
1386 @end example
1387 >>>)
1389 @c ===beg===
1390 @c load ("distrib")$
1391 @c mean_chi2(n);
1392 @c ===end===
1393 @example
1394 (%i1) load ("distrib")$
1395 @group
1396 (%i2) mean_chi2(n);
1397 (%o2)                           n
1398 @end group
1399 @end example
1401 @opencatbox{Categories:}
1402 @category{Package distrib}
1403 @closecatbox
1405 @end deffn
1408 @anchor{var_chi2}
1409 @deffn {Function} var_chi2 (@var{n})
1410 Returns the variance of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1412 The m4_Chi2_RV(n) random variable is equivalent to the m4_Gamma_RV(n/2,2).
1414 The variance is
1415 m4_displaymath(
1416 <<<V[X] = 2n>>>,
1418 @example
1419                            V[X] = 2 n
1420 @end example
1421 >>>)
1423 @c ===beg===
1424 @c load ("distrib")$
1425 @c var_chi2(n);
1426 @c ===end===
1427 @example
1428 (%i1) load ("distrib")$
1429 @group
1430 (%i2) var_chi2(n);
1431 (%o2)                          2 n
1432 @end group
1433 @end example
1435 @opencatbox{Categories:}
1436 @category{Package distrib}
1437 @closecatbox
1439 @end deffn
1442 @anchor{std_chi2}
1443 @deffn {Function} std_chi2 (@var{n})
1444 Returns the standard deviation of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1446 The m4_Chi2_RV(n) random variable is equivalent to the m4_Gamma_RV(n/2,2).
1448 The standard deviation is
1449 m4_displaymath(
1450 <<<D[X] = \sqrt{2n}>>>,
1452 @example
1453                      D[X] = sqrt(2) sqrt(n)
1454 @end example
1455 >>>)
1457 @c ===beg===
1458 @c load ("distrib")$
1459 @c std_chi2(n);
1460 @c ===end===
1461 @example
1462 (%i1) load ("distrib")$
1463 @group
1464 (%i2) std_chi2(n);
1465 (%o2)                    sqrt(2) sqrt(n)
1466 @end group
1467 @end example
1469 @opencatbox{Categories:}
1470 @category{Package distrib}
1471 @closecatbox
1473 @end deffn
1476 @anchor{skewness_chi2}
1477 @deffn {Function} skewness_chi2 (@var{n})
1478 Returns the skewness coefficient of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1480 The m4_Chi2_RV(n) random variable is equivalent to the m4_Gamma_RV(n/2,2).
1482 The skewness coefficient is
1483 m4_displaymath(
1484 <<<SK[X] = \sqrt{8\over n}>>>,
1486 @example
1487                                    3/2
1488                                   2
1489                          SK[X] = -------
1490                                  sqrt(n)
1491 @end example
1492 >>>)
1494 @c ===beg===
1495 @c load ("distrib")$
1496 @c skewness_chi2(n);
1497 @c ===end===
1498 @example
1499 (%i1) load ("distrib")$
1500 @group
1501 (%i2) skewness_chi2(n);
1502                                3/2
1503                               2
1504 (%o2)                        -------
1505                              sqrt(n)
1506 @end group
1507 @end example
1509 @opencatbox{Categories:}
1510 @category{Package distrib}
1511 @closecatbox
1513 @end deffn
1516 @anchor{kurtosis_chi2}
1517 @deffn {Function} kurtosis_chi2 (@var{n})
1518 Returns the kurtosis coefficient of a Chi-square random variable m4_Chi2_RV(n), with @math{n>0}.
1520 The m4_Chi2_RV(n) random variable is equivalent to the m4_Gamma_RV(n/2,2).
1522 The kurtosis coefficient is
1523 m4_displaymath(
1524 <<<KU[X] = {12\over n}>>>,
1526 @example
1527                                    12
1528                            KU[X] = --
1529                                    n
1530 @end example
1531 >>>)
1533 @c ===beg===
1534 @c load ("distrib")$
1535 @c kurtosis_chi2(n);
1536 @c ===end===
1537 @example
1538 (%i1) load ("distrib")$
1539 @group
1540 (%i2) kurtosis_chi2(n);
1541                                12
1542 (%o2)                          --
1543                                n
1544 @end group
1545 @end example
1547 @opencatbox{Categories:}
1548 @category{Package distrib}
1549 @closecatbox
1551 @end deffn
1554 @anchor{random_chi2}
1555 @deffn {Function} random_chi2 (@var{n}) @
1556 @fname{random_chi2} (@var{n},@var{m})
1558 Returns a Chi-square random variate m4_Chi2_RV(n), with @math{n>0}. Calling @code{random_chi2} with a second argument @var{m}, a random sample of size @var{m} will be simulated.
1560 The simulation is based on the Ahrens-Cheng algorithm. See @code{random_gamma} for details.
1562 To make use of this function, write first @code{load("distrib")}.
1564 @opencatbox{Categories:}
1565 @category{Package distrib}
1566 @category{Random numbers}
1567 @closecatbox
1569 @end deffn
1572 @node Noncentral Chi-squared Random Variable, F Random Variable, Chi-squared Random Variable, Functions and Variables for continuous distributions
1573 @subsection Noncentral Chi-squared Random Variable
1575 Let m4_math(<<<X_1, X_2, ..., X_n>>>, <<<X[1], X[2], ..., X[n]>>>) be @math{n} 
1576 independent normally distributed random variables with
1577 means m4_math(\mu_k, mu[k]) and unit variances.  Then the random variable
1579 m4_displaymath(
1580 <<<\sum_{k=1}^n X_k^2>>>,
1581 <<<@math{sum(X[k]^2, k, 1, n)}>>>)
1583 has a noncentral m4_math(\chi^2, chi-squared) distribution.  The
1584 number of degrees of freedom is @math{n}, and the noncentrality
1585 parameter is defined by
1587 m4_displaymath(
1588 <<<\sum_{k=1}^n \mu_k^2>>>,
1589 <<<@math{sum(mu[k]^2, k, 1, n)}>>>)
1591 @anchor{pdf_noncentral_chi2}
1592 @deffn {Function} pdf_noncentral_chi2 (@var{x},@var{n},@var{ncp})
1593 Returns the value at @math{x} of the density function of a 
1594 noncentral m4_math(\chi^2, Chi-square) random
1595 variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}. To 
1596 make use of this function, write first @code{load("distrib")}.
1598 For @math{x < 0}, the pdf is 0, and for m4_math(x \ge 0, x >= 0) the pdf is
1599 m4_displaymath(
1600 <<<f(x; n, \lambda) =
1601 {1\over 2}e^{-(x+\lambda)/2} \left(x\over
1602 \lambda\right)^{n/4-1/2}I_{{n\over 2} - 1}\left(\sqrt{n \lambda}\right)
1603 >>>,
1605 @example
1606  f(x, n, ncp) = 
1607                                                        (- x) - ncp
1608                                                        -----------
1609                   n                     x  n/4 - 1/2        2
1610          bessel_i(- - 1, sqrt(ncp x)) (---)          %e            unit_step(x)
1611                   2                    ncp
1612          ----------------------------------------------------------------------
1613                                            2
1614 @end example
1615 >>>)
1617 @opencatbox{Categories:}
1618 @category{Package distrib}
1619 @closecatbox
1621 @end deffn
1624 @anchor{cdf_noncentral_chi2}
1625 @deffn {Function} cdf_noncentral_chi2 (@var{x},@var{n},@var{ncp})
1626 Returns the value at @var{x} of the distribution function of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}. To make use of this function, write first @code{load("distrib")}.
1628 @opencatbox{Categories:}
1629 @category{Package distrib}
1630 @closecatbox
1632 @end deffn
1635 @anchor{quantile_noncentral_chi2}
1636 @deffn {Function} quantile_noncentral_chi2 (@var{q},@var{n},@var{ncp})
1637 Returns the @var{q}-quantile of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}; in other words, this is the inverse of @code{cdf_noncentral_chi2}. Argument @var{q} must be an element of @math{[0,1]}.
1639 This function has no closed form and it is numerically computed.
1641 @opencatbox{Categories:}
1642 @category{Package distrib}
1643 @closecatbox
1645 @end deffn
1648 @anchor{mean_noncentral_chi2}
1649 @deffn {Function} mean_noncentral_chi2 (@var{n},@var{ncp})
1650 Returns the mean of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}.
1652 The mean is
1653 m4_displaymath(
1654 <<<E[X] = n + \mu>>>,
1656 @example
1657                          E[X] = ncp + n
1658 @end example
1659 >>>)
1660 @ifnotinfo
1661 where m4_math(\mu) is the noncentrality parameter @var{ncp}.
1662 @end ifnotinfo
1665 @opencatbox{Categories:}
1666 @category{Package distrib}
1667 @closecatbox
1669 @end deffn
1672 @anchor{var_noncentral_chi2}
1673 @deffn {Function} var_noncentral_chi2 (@var{n},@var{ncp})
1674 Returns the variance of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}.
1676 The variance is
1677 m4_displaymath(
1678 <<<V[X] = 2(n+2\mu)>>>,
1680 @example
1681                       V[X] = 2 (2 ncp + n)
1682 @end example
1683 >>>)
1684 @ifnotinfo
1685 where m4_math(\mu) is the noncentrality parameter @var{ncp}.
1686 @end ifnotinfo
1688 @opencatbox{Categories:}
1689 @category{Package distrib}
1690 @closecatbox
1692 @end deffn
1695 @anchor{std_noncentral_chi2}
1696 @deffn {Function} std_noncentral_chi2 (@var{n},@var{ncp})
1697 Returns the standard deviation of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}.
1699 The standard deviation is
1700 m4_displaymath(
1701 <<<D[X] = \sqrt{2(n+2\mu)}>>>,
1703 @example
1704                  D[X] = sqrt(2) sqrt(2 ncp + n)
1705 @end example
1706 >>>)
1707 @ifnotinfo
1708 where m4_math(\mu) is the noncentrality parameter @var{ncp}.
1709 @end ifnotinfo
1710 @opencatbox{Categories:}
1711 @category{Package distrib}
1712 @closecatbox
1714 @end deffn
1717 @anchor{skewness_noncentral_chi2}
1718 @deffn {Function} skewness_noncentral_chi2 (@var{n},@var{ncp})
1719 Returns the skewness coefficient of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}.
1721 The skewness coefficient is
1722 m4_displaymath(
1723 <<<SK[X] = {2^{3/2}(n+3\mu) \over (n+2\mu)^{3/2}}>>>,
1725 @example
1726           3/2
1727          2    (n + 3 mu)
1728  SK[X] = ---------------
1729                     3/2
1730           (n + 2 mu)
1732 @end example
1733 >>>)
1734 @ifnotinfo
1735 where m4_math(\mu) is the noncentrality parameter @var{ncp}.
1736 @end ifnotinfo
1739 @opencatbox{Categories:}
1740 @category{Package distrib}
1741 @closecatbox
1743 @end deffn
1746 @anchor{kurtosis_noncentral_chi2}
1747 @deffn {Function} kurtosis_noncentral_chi2 (@var{n},@var{ncp})
1748 Returns the kurtosis coefficient of a noncentral Chi-square random variable m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}.
1750 The kurtosis coefficient is
1751 m4_displaymath(
1752 <<<KU[X] = {12(n+4\mu)\over (2+2\mu)^2}>>>,
1754 @example
1755            12 (n + 4 mu)
1756    KU[X] = -------------
1757                       2
1758             (n + 2 mu)
1759 @end example
1760 >>>)
1761 @ifnotinfo
1762 where m4_math(\mu) is the noncentrality parameter @var{ncp}.
1763 @end ifnotinfo
1765 @opencatbox{Categories:}
1766 @category{Package distrib}
1767 @closecatbox
1769 @end deffn
1772 @anchor{random_noncentral_chi2}
1773 @deffn {Function} random_noncentral_chi2 (@var{n},@var{ncp}) @
1774 @fname{random_noncentral_chi2} (@var{n},@var{ncp},@var{m})
1776 Returns a noncentral Chi-square random variate m4_noncentral_chi2(n,ncp), with @math{n>0} and noncentrality parameter @math{ncp>=0}. Calling @code{random_noncentral_chi2} with a third argument @var{m}, a random sample of size @var{m} will be simulated.
1778 To make use of this function, write first @code{load("distrib")}.
1780 @opencatbox{Categories:}
1781 @category{Package distrib}
1782 @category{Random numbers}
1783 @closecatbox
1785 @end deffn
1789 @node F Random Variable, Exponential Random Variable, Noncentral Chi-squared Random Variable, Functions and Variables for continuous distributions
1790 @subsection F Random Variable
1792 Let @math{S_1} and @math{S_2} be independent random variables with
1793 a m4_math(\chi^2, chi-squared) distribution with degrees of freedom
1794 @math{n} and @math{m}, respectively.  Then
1795 m4_displaymath(
1796 <<<F = {S_1/n \over S_2/m}>>>,
1797 <<<@math{F = (S_1/n)/(S_2/m)}>>>) has an @math{F} distribution with @math{n} and @math{m} degrees of
1798 freedom.
1800 @anchor{pdf_f}
1801 @deffn {Function} pdf_f (@var{x},@var{m},@var{n})
1802 Returns the value at @var{x} of the density function of a F random variable @math{F(m,n)}, with @math{m,n>0}. To make use of this function, write first @code{load("distrib")}.
1804 The pdf is
1805 m4_displaymath(
1806 <<<f(x; m, n) =
1807 \cases{
1808 B\left(\displaystyle{m\over 2}, \displaystyle{n\over 2}\right)^{-1}
1809 \left(\displaystyle{m\over n}\right)^{m/ 2}
1810 x^{m/2-1}
1811 \left(1 + \displaystyle{m\over n}x\right)^{-\left(n+m\right)/2} & $x >
1812 0$ \cr
1814 0 & otherwise
1815 }>>>,
1817 @example
1818  f(x, m, n) = 
1819                                                          (- n) - m
1820                                                          ---------
1821                     n n/2       n + m   n/2 - 1  n x         2
1822                    (-)    gamma(-----) x        (--- + 1)          unit_step(x)
1823                     m             2               m
1824                    ------------------------------------------------------------
1825                                               m        n
1826                                         gamma(-) gamma(-)
1827                                               2        2
1829 @end example>>>)
1831 @opencatbox{Categories:}
1832 @category{Package distrib}
1833 @closecatbox
1835 @end deffn
1838 @anchor{cdf_f}
1839 @deffn {Function} cdf_f (@var{x},@var{m},@var{n})
1840 Returns the value at @var{x} of the distribution function of a F random variable @math{F(m,n)}, with @math{m,n>0}.
1842 The cdf is
1843 m4_displaymath(
1844 <<<F(x; m, n) =
1845 \cases{
1846 1 - I_z\left(\displaystyle{m\over 2}, {n\over 2}\right) & $x > 0$ \cr
1847 0 & otherwise
1848 }>>>,
1850 @example
1851                                                n  m     n
1852  F(x, m, n) = (1 - beta_incomplete_regularized(-, -, -------))
1853                                                2  2  m x + n
1854                                                              unit_step(x)
1855 @end example
1856 >>>)
1858 @ifnotinfo
1859 where
1860 m4_displaymath(
1861 <<<z = {n\over mx+n}>>>,
1862 <<<>>>)
1864 and m4_math(I_z(a,b)) is the @ref{beta_incomplete_regularized}
1865 function.
1866 @end ifnotinfo
1867 @c ===beg===
1868 @c load ("distrib")$
1869 @c cdf_f(2,3,9/4);
1870 @c float(%);
1871 @c ===end===
1872 @example
1873 (%i1) load ("distrib")$
1874 @group
1875 (%i2) cdf_f(2,3,9/4);
1876                                             9  3  3
1877 (%o2)       1 - beta_incomplete_regularized(-, -, --)
1878                                             8  2  11
1879 @end group
1880 @group
1881 (%i3) float(%);
1882 (%o3)                  0.6675672817900802
1883 @end group
1884 @end example
1886 @opencatbox{Categories:}
1887 @category{Package distrib}
1888 @closecatbox
1890 @end deffn
1893 @anchor{quantile_f}
1894 @deffn {Function} quantile_f (@var{q},@var{m},@var{n})
1895 Returns the @var{q}-quantile of a F random variable @math{F(m,n)}, with @math{m,n>0}; in other words, this is the inverse of @code{cdf_f}. Argument @var{q} must be an element of @math{[0,1]}.
1897 @c ===beg===
1898 @c load ("distrib")$
1899 @c quantile_f(2/5,sqrt(3),5);
1900 @c ===end===
1901 @example
1902 (%i1) load ("distrib")$
1903 @group
1904 (%i2) quantile_f(2/5,sqrt(3),5);
1905 (%o2)                  0.5189478385736904
1906 @end group
1907 @end example
1909 @opencatbox{Categories:}
1910 @category{Package distrib}
1911 @closecatbox
1913 @end deffn
1916 @anchor{mean_f}
1917 @deffn {Function} mean_f (@var{m},@var{n})
1918 Returns the mean of a F random variable @math{F(m,n)}, with @math{m>0, n>2}. To make use of this function, write first @code{load("distrib")}.
1920 The mean is
1921 m4_displaymath(
1922 <<<E[X] = {n\over n-2}>>>,
1924 @example
1925                                    n
1926                           E[X] = -----
1927                                  n - 2
1928 @end example
1929 >>>)
1931 @opencatbox{Categories:}
1932 @category{Package distrib}
1933 @closecatbox
1935 @end deffn
1938 @anchor{var_f}
1939 @deffn {Function} var_f (@var{m},@var{n})
1940 Returns the variance of a F random variable @math{F(m,n)}, with @math{m>0, n>4}. To make use of this function, write first @code{load("distrib")}.
1942 The variance is
1943 m4_displaymath(
1944 <<<V[X] = {2n^2(n+m-2) \over m(n-4)(n-2)^2}>>>,
1946 @example
1947                2
1948             2 n  (n + m - 2)
1949     V[X] = ------------------
1950                             2
1951            m (n - 4) (n - 2)
1952 @end example
1953 >>>)
1954 @opencatbox{Categories:}
1955 @category{Package distrib}
1956 @closecatbox
1958 @end deffn
1961 @anchor{std_f}
1962 @deffn {Function} std_f (@var{m},@var{n})
1963 Returns the standard deviation of a F random variable @math{F(m,n)}, with @math{m>0, n>4}. To make use of this function, write first @code{load("distrib")}.
1965 The standard deviation is
1966 m4_displaymath(
1967 <<<D[X] = {\sqrt{2}\, n \over n-2} \sqrt{n+m-2\over m(n-4)}>>>,
1969 @example
1970                         n         n + m - 2
1971   D[X] = sqrt(2) sqrt(-----) sqrt(---------)
1972                       n - 2       m (n - 4)
1973 @end example
1974 >>>)
1975 @opencatbox{Categories:}
1976 @category{Package distrib}
1977 @closecatbox
1979 @end deffn
1982 @anchor{skewness_f}
1983 @deffn {Function} skewness_f (@var{m},@var{n})
1984 Returns the skewness coefficient of a F random variable @math{F(m,n)}, with @math{m>0, n>6}. To make use of this function, write first @code{load("distrib")}.
1986 The skewness coefficient is
1987 m4_displaymath(
1988 <<<SK[X] = {(n+2m-2)\sqrt{8(n-4)} \over (n-6)\sqrt{m(n+m-2)}}>>>,
1990 @example
1991           3/2
1992          2    sqrt(n - 4) (n + 2 m - 2)
1993  SK[X] = ------------------------------
1994           (n - 6) sqrt(m (n + m - 2))
1996 @end example
1997 >>>)
1998 @opencatbox{Categories:}
1999 @category{Package distrib}
2000 @closecatbox
2002 @end deffn
2005 @anchor{kurtosis_f}
2006 @deffn {Function} kurtosis_f (@var{m},@var{n})
2007 Returns the kurtosis coefficient of a F random variable @math{F(m,n)}, with @math{m>0, n>8}. To make use of this function, write first @code{load("distrib")}.
2009 The kurtosis coefficient is
2010 m4_displaymath(
2011 <<<KU[X] = 12{m(n+m-2)(5n-22) + (n-4)(n-2)^2 \over m(n-8)(n-6)(n+m-2)}>>>,
2013 @example
2014                                                         2
2015           12 (m (n + m - 2) (5 n - 22) + (n - 4) (n - 2) )
2016   KU[X] = ------------------------------------------------
2017                    m (n - 8) (n - 6) (n + m - 2)
2018 @end example
2019 >>>)
2021 @opencatbox{Categories:}
2022 @category{Package distrib}
2023 @closecatbox
2025 @end deffn
2028 @anchor{random_f}
2029 @deffn {Function} random_f (@var{m},@var{n}) @
2030 @fname{random_f} (@var{m},@var{n},@var{k})
2032 Returns a F random variate @math{F(m,n)}, with @math{m,n>0}. Calling @code{random_f} with a third argument @var{k}, a random sample of size @var{k} will be simulated.
2034 The simulation algorithm is based on the fact that if @var{X} is a @math{Chi^2(m)} random variable and @math{Y} is a m4_Chi2_RV(n) random variable, then
2035 m4_displaymath(
2036 <<<F={{n X}\over{m Y}}>>>,
2038 @example
2039                         n X
2040                     F = ---
2041                         m Y
2042 @end example
2043 >>>)
2044 is a F random variable with @var{m} and @var{n} degrees of freedom, @math{F(m,n)}.
2046 To make use of this function, write first @code{load("distrib")}.
2048 @opencatbox{Categories:}
2049 @category{Package distrib}
2050 @category{Random numbers}
2051 @closecatbox
2053 @end deffn
2056 @node Exponential Random Variable, Lognormal Random Variable, F Random Variable, Functions and Variables for continuous distributions
2057 @subsection Exponential Random Variable
2059 The @emph{exponential distribution} is the probablity distribution of
2060 the time between events in a process where the events occur
2061 continuously and independently at a constant average rate.
2063 @anchor{pdf_exp}
2064 @deffn {Function} pdf_exp (@var{x},@var{m})
2065 Returns the value at @var{x} of the density function of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2067 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2069 The pdf is
2070 m4_displaymath(
2071 <<<f(x; m) =
2072 \cases{
2073 me^{-mx} & for $x \ge 0$ \cr
2074 0 & otherwise
2075 }>>>,
2077 @example
2078           [ m*exp(-m*x) for x >= 0
2079 f(x, m) = [
2080           [ 0           otherwise
2081 @end example
2082 >>>)
2084 @c ===beg===
2085 @c load ("distrib")$
2086 @c pdf_exp(x,m);
2087 @c ===end===
2088 @example
2089 (%i1) load ("distrib")$
2090 @group
2091 (%i2) pdf_exp(x,m);
2092                          - m x
2093 (%o2)                m %e      unit_step(x)
2094 @end group
2095 @end example
2097 @opencatbox{Categories:}
2098 @category{Package distrib}
2099 @closecatbox
2101 @end deffn
2104 @anchor{cdf_exp}
2105 @deffn {Function} cdf_exp (@var{x},@var{m})
2106 Returns the value at @var{x} of the distribution function of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2108 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2110 The cdf is
2111 m4_displaymath(
2112 <<<F(x; m) =
2113 \cases{
2114 1 - e^{-mx} & $x \ge 0$ \cr
2115 0 & otherwise
2116 }>>>,
2118 @example
2119          [ 1 - exp(-m*x)  for x >= 0
2120 F(x,n) = [
2121          [ 0              otherwise
2122 @end example
2123 >>>)
2124 @c ===beg===
2125 @c load ("distrib")$
2126 @c cdf_exp(x,m);
2127 @c ===end===
2128 @example
2129 (%i1) load ("distrib")$
2130 @group
2131 (%i2) cdf_exp(x,m);
2132                           - m x
2133 (%o2)              (1 - %e     ) unit_step(x)
2134 @end group
2135 @end example
2137 @opencatbox{Categories:}
2138 @category{Package distrib}
2139 @closecatbox
2141 @end deffn
2144 @anchor{quantile_exp}
2145 @deffn {Function} quantile_exp (@var{q},@var{m})
2146 Returns the @var{q}-quantile of an m4_Exponential_RV(m) random variable, with @math{m>0}; in other words, this is the inverse of @code{cdf_exp}. Argument @var{q} must be an element of @math{[0,1]}.
2148 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2150 @c ===beg===
2151 @c load ("distrib")$
2152 @c quantile_exp(0.56,5);
2153 @c quantile_exp(0.56,m);
2154 @c ===end===
2155 @example
2156 (%i1) load ("distrib")$
2157 @group
2158 (%i2) quantile_exp(0.56,5);
2159 (%o2)                  0.1641961104139661
2160 @end group
2161 @group
2162 (%i3) quantile_exp(0.56,m);
2163                        0.8209805520698303
2164 (%o3)                  ------------------
2165                                m
2166 @end group
2167 @end example
2169 @opencatbox{Categories:}
2170 @category{Package distrib}
2171 @closecatbox
2173 @end deffn
2176 @anchor{mean_exp}
2177 @deffn {Function} mean_exp (@var{m})
2178 Returns the mean of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2180 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2182 The mean is
2183 m4_displaymath(
2184 <<<E[X] = {1\over m}>>>,
2186 @example
2187                                    1
2188                             E[X] = -
2189                                    m
2190 @end example
2191 >>>)
2193 @c ===beg===
2194 @c load ("distrib")$
2195 @c mean_exp(m);
2196 @c ===end===
2197 @example
2198 (%i1) load ("distrib")$
2199 @group
2200 (%i2) mean_exp(m);
2201                                 1
2202 (%o2)                           -
2203                                 m
2204 @end group
2205 @end example
2207 @opencatbox{Categories:}
2208 @category{Package distrib}
2209 @closecatbox
2211 @end deffn
2214 @anchor{var_exp}
2215 @deffn {Function} var_exp (@var{m})
2216 Returns the variance of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2218 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2220 The variance is
2221 m4_displaymath(
2222 <<<V[X] = {1\over m^2}>>>,
2224 @example
2225                                    1
2226                               VX = --
2227                                     2
2228                                    m
2229 @end example
2231 >>>)
2232 @c ===beg===
2233 @c load ("distrib")$
2234 @c var_exp(m);
2235 @c ===end===
2236 @example
2237 (%i1) load ("distrib")$
2238 @group
2239 (%i2) var_exp(m);
2240                                1
2241 (%o2)                          --
2242                                 2
2243                                m
2244 @end group
2245 @end example
2247 @opencatbox{Categories:}
2248 @category{Package distrib}
2249 @closecatbox
2251 @end deffn
2254 @anchor{std_exp}
2255 @deffn {Function} std_exp (@var{m})
2256 Returns the standard deviation of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2258 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2260 The standard deviation is
2261 m4_displaymath(
2262 <<<D[X] = {1\over m}>>>,
2264 @example
2265                                    1
2266                             D[X] = -
2267                                    m
2268 @end example
2269 >>>)
2271 @c ===beg===
2272 @c load ("distrib")$
2273 @c std_exp(m);
2274 @c ===end===
2275 @example
2276 (%i1) load ("distrib")$
2277 @group
2278 (%i2) std_exp(m);
2279                                 1
2280 (%o2)                           -
2281                                 m
2282 @end group
2283 @end example
2285 @opencatbox{Categories:}
2286 @category{Package distrib}
2287 @closecatbox
2289 @end deffn
2292 @anchor{skewness_exp}
2293 @deffn {Function} skewness_exp (@var{m})
2294 Returns the skewness coefficient of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2296 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2298 The skewness coefficient is
2299 m4_displaymath(
2300 <<<SK[X] = 2>>>,
2302 @example
2303                             SK[X] = 2
2304 @end example
2305 >>>)
2307 @c ===beg===
2308 @c load ("distrib")$
2309 @c skewness_exp(m);
2310 @c ===end===
2311 @example
2312 (%i1) load ("distrib")$
2313 @group
2314 (%i2) skewness_exp(m);
2315 (%o2)                           2
2316 @end group
2317 @end example
2319 @opencatbox{Categories:}
2320 @category{Package distrib}
2321 @closecatbox
2323 @end deffn
2326 @anchor{kurtosis_exp}
2327 @deffn {Function} kurtosis_exp (@var{m})
2328 Returns the kurtosis coefficient of an m4_Exponential_RV(m) random variable, with @math{m>0}.
2330 The m4_Exponential_RV(m) random variable is equivalent to the m4_Weibull_RV(1,1/m).
2332 The kurtosis coefficient is
2333 m4_displaymath(
2334 <<<KU[X] = 6>>>,
2336 @example
2337                             KU[X] = 6
2338 @end example
2339 >>>)
2341 @c ===beg===
2342 @c load ("distrib")$
2343 @c kurtosis_exp(m);
2344 @c ===end===
2345 @example
2346 (%i1) load ("distrib")$
2347 @group
2348 (%i2) kurtosis_exp(m);
2349 (%o2)                           6
2350 @end group
2351 @end example
2353 @opencatbox{Categories:}
2354 @category{Package distrib}
2355 @closecatbox
2357 @end deffn
2360 @anchor{random_exp}
2361 @deffn {Function} random_exp (@var{m}) @
2362 @fname{random_exp} (@var{m},@var{k})
2364 Returns an m4_Exponential_RV(m) random variate, with @math{m>0}. Calling @code{random_exp} with a second argument @var{k}, a random sample of size @var{k} will be simulated.
2366 The simulation algorithm is based on the general inverse method.
2368 To make use of this function, write first @code{load("distrib")}.
2370 @opencatbox{Categories:}
2371 @category{Package distrib}
2372 @category{Random numbers}
2373 @closecatbox
2375 @end deffn
2378 @node Lognormal Random Variable, Gamma Random Variable, Exponential Random Variable, Functions and Variables for continuous distributions
2379 @subsection Lognormal Random Variable
2381 The @emph{lognormal} distribution is distribution for a random
2382 variable whose logarithm is normally distributed.
2384 @anchor{pdf_lognormal}
2385 @deffn {Function} pdf_lognormal (@var{x},@var{m},@var{s})
2386 Returns the value at @var{x} of the density function of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
2388 The pdf is
2389 m4_displaymath(
2390 <<<f(x; m, s) =
2391 \cases{
2392 \displaystyle{1\over x s \sqrt{2\pi}}
2393 \exp\left(-\displaystyle{\left(\log x - m\right)^2\over 2s^2}\right) & for $x \ge
2394 0$ \cr
2396 0 & for $x < 0$
2397 }>>>,
2399 @example
2400                    [                   2
2401                    [       (log(x) - m)
2402                    [     - -------------
2403                    [              2
2404                    [           2 s
2405                    [   %e
2406       f(x, m, s) = [ ---------------------      for x >= 0
2407                    [ sqrt(2) sqrt(%pi) s x
2408                    [
2409                    [ 0                          for x < 0
2410 @end example
2411 >>>)
2412 @opencatbox{Categories:}
2413 @category{Package distrib}
2414 @closecatbox
2416 @end deffn
2419 @anchor{cdf_lognormal}
2420 @deffn {Function} cdf_lognormal (@var{x},@var{m},@var{s})
2421 Returns the value at @var{x} of the distribution function of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. This function is defined in terms of Maxima's built-in error function @code{erf}.
2423 The cdf is
2424 m4_displaymath(
2425 <<<F(x; m, s) =
2426 \cases{
2427 \displaystyle{1\over 2}\left[1+{\rm erf}\left({\log x - m\over s\sqrt{2}}\right)\right] &
2428 for $x > 0$ \cr
2430 0 & for $x \le 0$
2431 }>>>,
2433 @example
2434                                          log(x) - m
2435                                      erf(----------)
2436                                          sqrt(2) s     1
2437           F(x, m, s) = unit_step(x) (--------------- + -)
2438                                             2          2
2439 @end example
2440 >>>)
2442 @c ===beg===
2443 @c load ("distrib")$
2444 @c cdf_lognormal(x,m,s);
2445 @c ===end===
2446 @example
2447 (%i1) load ("distrib")$
2448 @group
2449 (%i2) cdf_lognormal(x,m,s);
2450                                  log(x) - m
2451                              erf(----------)
2452                                  sqrt(2) s     1
2453 (%o2)          unit_step(x) (--------------- + -)
2454                                     2          2
2455 @end group
2456 @end example
2458 See also @mrefdot{erf}
2460 @opencatbox{Categories:}
2461 @category{Package distrib}
2462 @closecatbox
2464 @end deffn
2467 @anchor{quantile_lognormal}
2468 @deffn {Function} quantile_lognormal (@var{q},@var{m},@var{s})
2469 Returns the @var{q}-quantile of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}; in other words, this is the inverse of @code{cdf_lognormal}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
2471 @c ===beg===
2472 @c load ("distrib")$
2473 @c quantile_lognormal(95/100,0,1);
2474 @c float(%);
2475 @c ===end===
2476 @example
2477 (%i1) load ("distrib")$
2478 @group
2479 (%i2) quantile_lognormal(95/100,0,1);
2480                      sqrt(2) inverse_erf(9/10)
2481 (%o2)              %e
2482 @end group
2483 @group
2484 (%i3) float(%);
2485 (%o3)                   5.180251602233015
2486 @end group
2487 @end example
2489 @opencatbox{Categories:}
2490 @category{Package distrib}
2491 @closecatbox
2493 @end deffn
2496 @anchor{mean_lognormal}
2497 @deffn {Function} mean_lognormal (@var{m},@var{s})
2498 Returns the mean of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
2500 The mean is
2501 m4_displaymath(
2502 <<<E[X] = \exp\left(m+{s^2\over 2}\right)>>>,
2504 @example
2505                                    2
2506                                   s
2507                                   -- + m
2508                                   2
2509                          E[X] = %e
2510 @end example
2512 >>>)
2514 @opencatbox{Categories:}
2515 @category{Package distrib}
2516 @closecatbox
2518 @end deffn
2521 @anchor{var_lognormal}
2522 @deffn {Function} var_lognormal (@var{m},@var{s})
2523 Returns the variance of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
2525 The variance is
2526 m4_displaymath(
2527 <<<V[X] = \left(\exp\left(s^2\right) - 1\right) \exp\left(2m+s^2\right)>>>,
2529 @example
2530                              2         2
2531                             s         s  + 2 m
2532                   V[X] = (%e   - 1) %e
2534 @end example
2535 >>>)
2537 @opencatbox{Categories:}
2538 @category{Package distrib}
2539 @closecatbox
2541 @end deffn
2543 @anchor{std_lognormal}
2544 @deffn {Function} std_lognormal (@var{m},@var{s})
2545 Returns the standard deviation of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
2547 The standard deviation is
2548 m4_displaymath(
2549 <<<D[X] = \sqrt{\left(\exp\left(s^2\right) - 1\right)}
2550 \exp\left(m+{s^2\over 2}\right)>>>,
2552 @example
2553                                          2
2554                                         s  + 2 m
2555                                2        --------
2556                               s            2
2557                 D[X] = sqrt(%e   - 1) %e
2559 @end example
2561 >>>)
2562 @opencatbox{Categories:}
2563 @category{Package distrib}
2564 @closecatbox
2566 @end deffn
2569 @anchor{skewness_lognormal}
2570 @deffn {Function} skewness_lognormal (@var{m},@var{s})
2571 Returns the skewness coefficient of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
2573 The skewness coefficient is
2574 m4_displaymath(
2575 <<<SK[X] = \left(\exp\left(s^2\right)+2\right)\sqrt{\exp\left(s^2\right)-1}>>>,
2577 @example
2578                                 2          2
2579                                s          s
2580                 SK[X] = sqrt(%e   - 1) (%e   + 2)
2581 @end example
2582 >>>)
2584 @opencatbox{Categories:}
2585 @category{Package distrib}
2586 @closecatbox
2588 @end deffn
2591 @anchor{kurtosis_lognormal}
2592 @deffn {Function} kurtosis_lognormal (@var{m},@var{s})
2593 Returns the kurtosis coefficient of a m4_Lognormal_RV(m,s) random variable, with @math{s>0}. To make use of this function, write first @code{load("distrib")}.
2595 The kurtosis coefficient is
2596 m4_displaymath(
2597 <<<KU[X] = \exp\left(4s^2\right)+2\exp\left(3s^2\right)+3\exp\left(2s^2\right)-3>>>,
2599 @example
2600                          2          2          2
2601                       4 s        3 s        2 s
2602             KU[X] = %e     + 2 %e     + 3 %e     - 3
2604 @end example
2606 >>>)
2608 @opencatbox{Categories:}
2609 @category{Package distrib}
2610 @closecatbox
2612 @end deffn
2615 @anchor{random_lognormal}
2616 @deffn {Function} random_lognormal (@var{m},@var{s}) @
2617 @fname{random_lognormal} (@var{m},@var{s},@var{n})
2619 Returns a m4_Lognormal_RV(m,s) random variate, with @math{s>0}. Calling @code{random_lognormal} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
2621 Log-normal variates are simulated by means of random normal variates. See @code{random_normal} for details.
2623 To make use of this function, write first @code{load("distrib")}.
2625 @opencatbox{Categories:}
2626 @category{Package distrib}
2627 @category{Random numbers}
2628 @closecatbox
2630 @end deffn
2633 @node Gamma Random Variable, Beta Random Variable, Lognormal Random Variable, Functions and Variables for continuous distributions
2634 @subsection Gamma Random Variable
2636 The @emph{gamma distribution} is a two-parameter family of probability
2637 distributions.  Maxima uses the parameterization using the shape and
2638 scale for the first and second parameters of the distribution.
2640 @anchor{pdf_gamma}
2641 @deffn {Function} pdf_gamma (@var{x},@var{a},@var{b})
2642 Returns the value at @var{x} of the density function of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2644 The shape parameter is @math{a}, and the scale parameter is @math{b}.
2646 The pdf is
2647 m4_displaymath(
2648 <<<f(x; a, b) = {x^{a-1}e^{-x/b}\over b^a \Gamma(a)}>>>,
2650 @example
2651                     a - 1   - x/b
2652                    x      %e      unit_step(x)
2653       f(x, a, b) = ---------------------------
2654                                      a
2655                            gamma(a) b
2656 @end example
2657 >>>)
2659 @opencatbox{Categories:}
2660 @category{Package distrib}
2661 @closecatbox
2663 @end deffn
2666 @anchor{cdf_gamma}
2667 @deffn {Function} cdf_gamma (@var{x},@var{a},@var{b})
2668 Returns the value at @var{x} of the distribution function of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. 
2670 The cdf is
2671 m4_displaymath(
2672 <<<F(x; a, b) =
2673 \cases{
2674 1-Q(a,{x\over b}) & for $x \ge 0$ \cr
2676 0 & for $x < 0$
2677 }>>>,
2679 @example
2680              [ 1 - Q(a,x/b) for x>= 0
2681 F(x, a, b) = [
2682              [ 0            for x < 0
2683 @end example
2684 >>>)
2685 where @math{Q(a,z)} is the @ref{gamma_incomplete_regularized} function.
2686 @c ===beg===
2687 @c load ("distrib")$
2688 @c cdf_gamma(3,5,21);
2689 @c float(%);
2690 @c ===end===
2691 @example
2692 (%i1) load ("distrib")$
2693 @group
2694 (%i2) cdf_gamma(3,5,21);
2695                                                  1
2696 (%o2)        1 - gamma_incomplete_regularized(5, -)
2697                                                  7
2698 @end group
2699 @group
2700 (%i3) float(%);
2701 (%o3)                 4.402663157376807e-7
2702 @end group
2703 @end example
2705 @opencatbox{Categories:}
2706 @category{Package distrib}
2707 @closecatbox
2709 @end deffn
2712 @anchor{quantile_gamma}
2713 @deffn {Function} quantile_gamma (@var{q},@var{a},@var{b})
2714 Returns the @var{q}-quantile of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}; in other words, this is the inverse of @code{cdf_gamma}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
2716 @opencatbox{Categories:}
2717 @category{Package distrib}
2718 @closecatbox
2720 @end deffn
2723 @anchor{mean_gamma}
2724 @deffn {Function} mean_gamma (@var{a},@var{b})
2725 Returns the mean of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2727 The mean is
2728 m4_displaymath(
2729 <<<E[X] = ab>>>,
2731 @example
2732                            E[X] = a b
2733 @end example
2734 >>>)
2736 @opencatbox{Categories:}
2737 @category{Package distrib}
2738 @closecatbox
2740 @end deffn
2743 @anchor{var_gamma}
2744 @deffn {Function} var_gamma (@var{a},@var{b})
2745 Returns the variance of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2747 The variance is
2748 m4_displaymath(
2749 <<<V[X] = ab^2>>>,
2751 @example
2752                                      2
2753                            V[X] = a b
2754 @end example
2756 >>>)
2757 @opencatbox{Categories:}
2758 @category{Package distrib}
2759 @closecatbox
2761 @end deffn
2763 @anchor{std_gamma}
2764 @deffn {Function} std_gamma (@var{a},@var{b})
2765 Returns the standard deviation of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2767 The standard deviation is
2768 m4_displaymath(
2769 <<<D[X] = b\sqrt{a}>>>,
2771 @example
2772                        D[X] = sqrt(a) b
2773 @end example
2774 >>>)
2776 @opencatbox{Categories:}
2777 @category{Package distrib}
2778 @closecatbox
2780 @end deffn
2783 @anchor{skewness_gamma}
2784 @deffn {Function} skewness_gamma (@var{a},@var{b})
2785 Returns the skewness coefficient of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2787 The skewness coefficient is
2788 m4_displaymath(
2789 <<<SK[X] = {2\over \sqrt{a}}>>>,
2791 @example
2792                                      2
2793                           SK[X] = -------
2794                                   sqrt(a)
2795 @end example
2796 >>>)
2798 @opencatbox{Categories:}
2799 @category{Package distrib}
2800 @closecatbox
2802 @end deffn
2805 @anchor{kurtosis_gamma}
2806 @deffn {Function} kurtosis_gamma (@var{a},@var{b})
2807 Returns the kurtosis coefficient of a m4_Gamma_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2809 The kurtosis coefficient is
2810 m4_displaymath(
2811 <<<KU[X] = {6\over a}>>>,
2813 @example
2814                                      6
2815                              KU[X] = -
2816                                      a
2818 @end example
2819 >>>)
2821 @opencatbox{Categories:}
2822 @category{Package distrib}
2823 @closecatbox
2825 @end deffn
2828 @anchor{random_gamma}
2829 @deffn {Function} random_gamma (@var{a},@var{b}) @
2830 @fname{random_gamma} (@var{a},@var{b},@var{n})
2832 Returns a m4_Gamma_RV(a,b) random variate, with @math{a,b>0}. Calling @code{random_gamma} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
2834 The implemented algorithm is a combination of two procedures, depending on the value of parameter @var{a}:
2836 For @math{a>=1}, Cheng, R.C.H. and Feast, G.M. (1979). @var{Some simple gamma variate generators}. Appl. Stat., 28, 3, 290-295.
2838 For @math{0<a<1}, Ahrens, J.H. and Dieter, U. (1974). @var{Computer methods for sampling from gamma, , poisson and binomial cdf_tributions}. Computing, 12, 223-246.
2840 To make use of this function, write first @code{load("distrib")}.
2842 @opencatbox{Categories:}
2843 @category{Package distrib}
2844 @category{Random numbers}
2845 @closecatbox
2847 @end deffn
2850 @node Beta Random Variable, Continuous Uniform Random Variable, Gamma Random Variable, Functions and Variables for continuous distributions
2851 @subsection Beta Random Variable
2853 The @emph{beta} distribution is a family of distributions defined over
2854 @math{[0,1]} parameterized by two positive shape parameters @math{a},
2855 and @math{b}.
2857 @anchor{pdf_beta}
2858 @deffn {Function} pdf_beta (@var{x},@var{a},@var{b})
2859 Returns the value at @var{x} of the density function of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2861 The pdf is
2862 m4_displaymath(
2863 <<<f(x; a, b) =
2864 \cases{
2865 \displaystyle{x^{a-1}(1-x)^{b-1} \over B(a,b)} & for $0 \le x \le 1$
2868 0 & otherwise
2869 }>>>,
2871 @example
2872               [        b - 1  a - 1
2873               [ (1 - x)      x
2874  f(x, a, b) = [ -------------------   for 0 <= x <= 1
2875               [     beta(a, b)
2876               [
2877               [ 0                     otherwise
2878 @end example
2879 >>>)
2881 @opencatbox{Categories:}
2882 @category{Package distrib}
2883 @closecatbox
2885 @end deffn
2889 @anchor{cdf_beta}
2890 @deffn {Function} cdf_beta (@var{x},@var{a},@var{b})
2891 Returns the value at @var{x} of the distribution function of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}.
2893 The cdf is
2894 m4_displaymath(
2895 <<<F(x; a, b) =
2896 \cases{
2897 0 & $x < 0$ \cr
2898 I_x(a,b) & $0 \le x \le 1$ \cr
2899 1 & $x > 1$
2900 }>>>,
2902 @example
2903              [ 0                                     for x < 0
2904              [
2905 F(x, a, b) = [ beta_incomplete_regularized(a, b, x)  for 0 <= x <= 1
2906              [
2907              [ 1                                     for x > 1
2908 @end example
2909 >>>)
2910 @c ===beg===
2911 @c load ("distrib")$
2912 @c cdf_beta(1/3,15,2);
2913 @c float(%);
2914 @c ===end===
2915 @example
2916 (%i1) load ("distrib")$
2917 @group
2918 (%i2) cdf_beta(1/3,15,2);
2919                                11
2920 (%o2)                       --------
2921                             14348907
2922 @end group
2923 @group
2924 (%i3) float(%);
2925 (%o3)                 7.666089131388195e-7
2926 @end group
2927 @end example
2929 @opencatbox{Categories:}
2930 @category{Package distrib}
2931 @closecatbox
2933 @end deffn
2936 @anchor{quantile_beta}
2937 @deffn {Function} quantile_beta (@var{q},@var{a},@var{b})
2938 Returns the @var{q}-quantile of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}; in other words, this is the inverse of @code{cdf_beta}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
2940 @opencatbox{Categories:}
2941 @category{Package distrib}
2942 @closecatbox
2944 @end deffn
2947 @anchor{mean_beta}
2948 @deffn {Function} mean_beta (@var{a},@var{b})
2949 Returns the mean of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2951 The mean is
2952 m4_displaymath(
2953 <<<E[X] = {a\over a+b}>>>,
2955 @example
2956                                     a
2957                            E[X] = -----
2958                                   b + a
2959 @end example
2960 >>>)
2962 @opencatbox{Categories:}
2963 @category{Package distrib}
2964 @closecatbox
2966 @end deffn
2969 @anchor{var_beta}
2970 @deffn {Function} var_beta (@var{a},@var{b})
2971 Returns the variance of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2973 The variance is
2974 m4_displaymath(
2975 <<<V[X] = {ab \over (a+b)^2(a+b+1)}>>>,
2977 @example
2978                    a b
2979     V[X] = --------------------
2980                   2
2981            (b + a)  (b + a + 1)
2982 @end example
2983 >>>)
2985 @opencatbox{Categories:}
2986 @category{Package distrib}
2987 @closecatbox
2989 @end deffn
2991 @anchor{std_beta}
2992 @deffn {Function} std_beta (@var{a},@var{b})
2993 Returns the standard deviation of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
2995 The standard deviation is
2996 m4_displaymath(
2997 <<<D[X] = {1\over a+b}\sqrt{ab\over a+b+1}>>>,
2999 @example
3000                    a b
3001            sqrt(---------)
3002                 b + a + 1
3003     D[X] = ---------------
3004              abs(b + a)
3005 @end example
3006 >>>)
3008 @opencatbox{Categories:}
3009 @category{Package distrib}
3010 @closecatbox
3012 @end deffn
3015 @anchor{skewness_beta}
3016 @deffn {Function} skewness_beta (@var{a},@var{b})
3017 Returns the skewness coefficient of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3019 The skewness coefficient is
3020 m4_displaymath(
3021 <<<SK[X] = {2(b-a)\sqrt{a+b+1} \over (a+b+2)\sqrt{ab}}>>>,
3023 @example
3024            2 (b - a) sqrt(b + a + 1)
3025    SK[X] = -------------------------
3026              sqrt(a b) (b + a + 2)
3027 @end example
3028 >>>)
3029 @opencatbox{Categories:}
3030 @category{Package distrib}
3031 @closecatbox
3033 @end deffn
3036 @anchor{kurtosis_beta}
3037 @deffn {Function} kurtosis_beta (@var{a},@var{b})
3038 Returns the kurtosis coefficient of a m4_Beta_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3040 The kurtosis coefficient is
3041 m4_displaymath(
3042 <<<KU[X] = {3(a+b+1)\left(2(a+b)^2+ab(a+b-6)\right) \over
3043 ab(a+b+2)(a+b+3)} - 3>>>,
3045 @example
3046                                   2
3047           3 (b + a + 1) (2 (b + a)  + a b (b + a - 6))
3048   KU[X] = -------------------------------------------- - 3
3049                   a b (b + a + 2) (b + a + 3)
3050 @end example
3051 >>>)
3053 @opencatbox{Categories:}
3054 @category{Package distrib}
3055 @closecatbox
3057 @end deffn
3060 @anchor{random_beta}
3061 @deffn {Function} random_beta (@var{a},@var{b}) @
3062 @fname{random_beta} (@var{a},@var{b},@var{n})
3064 Returns a m4_Beta_RV(a,b) random variate, with @math{a,b>0}. Calling @code{random_beta} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
3066 The implemented algorithm is defined in Cheng, R.C.H.  (1978). @var{Generating Beta Variates with Nonintegral Shape Parameters}. Communications of the ACM, 21:317-322
3068 To make use of this function, write first @code{load("distrib")}.
3070 @opencatbox{Categories:}
3071 @category{Package distrib}
3072 @category{Random numbers}
3073 @closecatbox
3075 @end deffn
3077 @node Continuous Uniform Random Variable, Logistic Random Variable, Beta Random Variable, Functions and Variables for continuous distributions
3078 @subsection Continuous Uniform Random Variable
3080 The @emph{continuous uniform} distribution is constant over the
3081 interval @math{[a,b]} and is zero elsewhere.
3083 @anchor{pdf_continuous_uniform}
3084 @deffn {Function} pdf_continuous_uniform (@var{x},@var{a},@var{b})
3085 Returns the value at @var{x} of the density function of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3087 The pdf
3088 m4_displaymath(
3089 <<<f(x; a, b) =
3090 \cases{
3091 \displaystyle{1\over b-a} & for $0 \le x \le 1$ \cr
3093 0 & otherwise
3094 }>>>,
3096 @example
3097              [ 1/(b-a) for 0 <= x <= 1
3098 f(x, a, b) = [
3099              [ 0       otherwise
3100 @end example
3101 >>>)
3102 and is 0 otherwise.
3104 @opencatbox{Categories:}
3105 @category{Package distrib}
3106 @closecatbox
3108 @end deffn
3111 @anchor{cdf_continuous_uniform}
3112 @deffn {Function} cdf_continuous_uniform (@var{x},@var{a},@var{b})
3113 Returns the value at @var{x} of the distribution function of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3115 The cdf is
3116 m4_displaymath(
3117 <<<F(x; a, b) =
3118 \cases{
3119 0 & for $x < a$ \cr
3121 \displaystyle{x-a\over b-a} & for $a \le x \le b$ \cr
3123 1 & for $x > b$
3124 }>>>,
3126 @example
3127            [ 0              for x < a
3128 F(x,a,b) = [ (x-a)/(b-a)    for a <= x <= b
3129            [ 1              for x > b
3130 @end example
3131 >>>)
3132 @opencatbox{Categories:}
3133 @category{Package distrib}
3134 @closecatbox
3136 @end deffn
3139 @anchor{quantile_continuous_uniform}
3140 @deffn {Function} quantile_continuous_uniform (@var{q},@var{a},@var{b})
3141 Returns the @var{q}-quantile of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}; in other words, this is the inverse of @code{cdf_continuous_uniform}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
3143 @opencatbox{Categories:}
3144 @category{Package distrib}
3145 @closecatbox
3147 @end deffn
3150 @anchor{mean_continuous_uniform}
3151 @deffn {Function} mean_continuous_uniform (@var{a},@var{b})
3152 Returns the mean of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3154 The mean is
3155 m4_displaymath(
3156 <<<E[X] = {a+b\over 2}>>>,
3158 @example
3159                                   b + a
3160                            E[X] = -----
3161                                     2
3163 @end example
3164 >>>)
3165 @opencatbox{Categories:}
3166 @category{Package distrib}
3167 @closecatbox
3169 @end deffn
3172 @anchor{var_continuous_uniform}
3173 @deffn {Function} var_continuous_uniform (@var{a},@var{b})
3174 Returns the variance of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3176 The variance is
3177 m4_displaymath(
3178 <<<V[X] = {(b-a)^2\over 12}>>>,
3180 @example
3181                                         2
3182                                  (b - a)
3183                           V[X] = --------
3184                                     12
3185 @end example
3186 >>>)
3188 @opencatbox{Categories:}
3189 @category{Package distrib}
3190 @closecatbox
3192 @end deffn
3194 @anchor{std_continuous_uniform}
3195 @deffn {Function} std_continuous_uniform (@var{a},@var{b})
3196 Returns the standard deviation of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3198 The standard deviation is
3199 m4_displaymath(
3200 <<<D[X] = {b-a \over 2\sqrt{3}}>>>,
3202 @example
3203                                 abs(b - a)
3204                          D[X] = ----------
3205                                 2 sqrt(3)
3207 @end example
3208 >>>)
3210 @opencatbox{Categories:}
3211 @category{Package distrib}
3212 @closecatbox
3214 @end deffn
3217 @anchor{skewness_continuous_uniform}
3218 @deffn {Function} skewness_continuous_uniform (@var{a},@var{b})
3219 Returns the skewness coefficient of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3221 The skewness coefficient is
3222 m4_displaymath(
3223 <<<SK[X] = 0>>>,
3225 @example
3226                             SK[X] = 0
3227 @end example
3228 >>>)
3230 @opencatbox{Categories:}
3231 @category{Package distrib}
3232 @closecatbox
3234 @end deffn
3237 @anchor{kurtosis_continuous_uniform}
3238 @deffn {Function} kurtosis_continuous_uniform (@var{a},@var{b})
3239 Returns the kurtosis coefficient of a m4_Continuous_Uniform_RV(a,b) random variable, with @math{a<b}. To make use of this function, write first @code{load("distrib")}.
3241 The kurtosis coefficient is
3242 m4_displaymath(
3243 <<<KU[X] = -{6\over5}>>>,
3245                                      6
3246                            KU[X] = - -
3247                                      5
3248 >>>)
3250 @opencatbox{Categories:}
3251 @category{Package distrib}
3252 @closecatbox
3254 @end deffn
3257 @anchor{random_continuous_uniform}
3258 @deffn {Function} random_continuous_uniform (@var{a},@var{b}) @
3259 @fname{random_continuous_uniform} (@var{a},@var{b},@var{n})
3261 Returns a m4_Continuous_Uniform_RV(a,b) random variate, with @math{a<b}. Calling @code{random_continuous_uniform} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
3263 This is a direct application of the @code{random} built-in Maxima function.
3265 See also @mrefdot{random} To make use of this function, write first @code{load("distrib")}.
3267 @opencatbox{Categories:}
3268 @category{Package distrib}
3269 @category{Random numbers}
3270 @closecatbox
3272 @end deffn
3275 @node Logistic Random Variable, Pareto Random Variable, Continuous Uniform Random Variable, Functions and Variables for continuous distributions
3276 @subsection Logistic Random Variable
3278 The @emph{logistic} distribution is a continuous distribution where
3279 it's cumulative distribution function is the logistic function.
3281 @anchor{pdf_logistic}
3282 @deffn {Function} pdf_logistic (@var{x},@var{a},@var{b})
3283 Returns the value at @var{x} of the density function of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3285 @math{a} is the location parameter and @math{b} is the scale
3286 parameter.
3288 The pdf is
3289 m4_displaymath(
3290 <<<f(x; a, b) = {e^{-(x-a)/b} \over b\left(1 + e^{-(x-a)/b}\right)^2}>>>,
3292 @example
3293                                       a - x
3294                                       -----
3295                                         b
3296                                     %e
3297                    f(x, a, b) = ----------------
3298                                      a - x
3299                                      -----
3300                                        b       2
3301                                 b (%e      + 1)
3302 @end example
3303 >>>)
3304 @opencatbox{Categories:}
3305 @category{Package distrib}
3306 @closecatbox
3308 @end deffn
3311 @anchor{cdf_logistic}
3312 @deffn {Function} cdf_logistic (@var{x},@var{a},@var{b})
3313 Returns the value at @var{x} of the distribution function of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3315 The cdf is
3316 m4_displaymath(
3317 <<<F(x; a, b) = {1\over 1+e^{-(x-a)/b}}>>>,
3319 @example
3320                                        1
3321                      F(x, a, b) = -----------
3322                                     a - x
3323                                     -----
3324                                       b
3325                                   %e      + 1
3326 @end example
3327 >>>)
3329 @opencatbox{Categories:}
3330 @category{Package distrib}
3331 @closecatbox
3333 @end deffn
3336 @anchor{quantile_logistic}
3337 @deffn {Function} quantile_logistic (@var{q},@var{a},@var{b})
3338 Returns the @var{q}-quantile of a m4_Logistic_RV(a,b) random variable , with @math{b>0}; in other words, this is the inverse of @code{cdf_logistic}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
3340 @opencatbox{Categories:}
3341 @category{Package distrib}
3342 @closecatbox
3344 @end deffn
3347 @anchor{mean_logistic}
3348 @deffn {Function} mean_logistic (@var{a},@var{b})
3349 Returns the mean of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3351 The mean is
3352 m4_displaymath(
3353 <<<E[X] = a>>>,
3355 @example
3356                             E[X] = a
3357 @end example
3358 >>>)
3360 @opencatbox{Categories:}
3361 @category{Package distrib}
3362 @closecatbox
3364 @end deffn
3367 @anchor{var_logistic}
3368 @deffn {Function} var_logistic (@var{a},@var{b})
3369 Returns the variance of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3371 The variance is
3372 m4_displaymath(
3373 <<<V[X] = {\pi^2 b^2 \over 3}>>>,
3375 @example
3376                                    2  2
3377                                 %pi  b
3378                          V[X] = -------
3379                                    3
3381 @end example
3382 >>>)
3384 @opencatbox{Categories:}
3385 @category{Package distrib}
3386 @closecatbox
3388 @end deffn
3391 @anchor{std_logistic}
3392 @deffn {Function} std_logistic (@var{a},@var{b})
3393 Returns the standard deviation of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3395 The standard deviation is
3396 m4_displaymath(
3397 <<<D[X] = {\pi b\over \sqrt{3}}>>>,
3399 @example
3400                                %pi abs(b)
3401                         D[X] = ----------
3402                                 sqrt(3)
3403 @end example
3404 >>>)
3406 @opencatbox{Categories:}
3407 @category{Package distrib}
3408 @closecatbox
3410 @end deffn
3413 @anchor{skewness_logistic}
3414 @deffn {Function} skewness_logistic (@var{a},@var{b})
3415 Returns the skewness coefficient of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3417 The skewness coefficient is
3418 m4_displaymath(
3419 <<<SK[X] = 0>>>,
3421 @example
3422                             SK[X] = 0
3423 @end example
3424 >>>)
3426 @opencatbox{Categories:}
3427 @category{Package distrib}
3428 @closecatbox
3430 @end deffn
3433 @anchor{kurtosis_logistic}
3434 @deffn {Function} kurtosis_logistic (@var{a},@var{b})
3435 Returns the kurtosis coefficient of a m4_Logistic_RV(a,b) random variable , with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
3437 The kurtosis coefficient is
3438 m4_displaymath(
3439 <<<KU[X] = {6\over 5}>>>,
3441 @example
3442                                     6
3443                             KU[X] = -
3444                                     5
3445 @end example
3446 >>>)
3448 @opencatbox{Categories:}
3449 @category{Package distrib}
3450 @closecatbox
3452 @end deffn
3455 @anchor{random_logistic}
3456 @deffn {Function} random_logistic (@var{a},@var{b}) @
3457 @fname{random_logistic} (@var{a},@var{b},@var{n})
3459 Returns a m4_Logistic_RV(a,b) random variate, with @math{b>0}. Calling @code{random_logistic} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
3461 The implemented algorithm is based on the general inverse method.
3463 To make use of this function, write first @code{load("distrib")}.
3465 @opencatbox{Categories:}
3466 @category{Package distrib}
3467 @category{Random numbers}
3468 @closecatbox
3470 @end deffn
3473 @node Pareto Random Variable, Weibull Random Variable, Logistic Random Variable, Functions and Variables for continuous distributions
3474 @subsection Pareto Random Variable
3476 @anchor{pdf_pareto}
3477 @deffn {Function} pdf_pareto (@var{x},@var{a},@var{b})
3478 Returns the value at @var{x} of the density function of a m4_Pareto_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3480 The pdf is
3481 m4_displaymath(
3482 <<<f(x; a, b) = 
3483 \cases{
3484 \displaystyle{a b^a \over x^{a+1}} & for $x \ge b$ \cr
3486 0 & for $x < b$
3487 }>>>,
3489 @example
3490              [ a*b^a/x^(a+1)   for x >= b
3491 f(x, a, b) = [
3492              [ 0               for x < b
3493 @end example
3494 >>>)
3496 @opencatbox{Categories:}
3497 @category{Package distrib}
3498 @closecatbox
3500 @end deffn
3503 @anchor{cdf_pareto}
3504 @deffn {Function} cdf_pareto (@var{x},@var{a},@var{b})
3505 Returns the value at @var{x} of the distribution function of a m4_Pareto_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3507 The cdf is
3508 m4_displaymath(
3509 <<<F(x; a, b) =
3510 \cases{
3511 1-\left(\displaystyle{b\over x}\right)^a & for $x \ge b$\cr
3512 0 & for $x < b$
3513 }>>>,
3515 @example
3516              [ 1 - (b/x)^a     for x >= 0
3517 F(x, a, b) = [
3518              [ 0               for x < 0
3519 @end example
3520 >>>)
3521 @opencatbox{Categories:}
3522 @category{Package distrib}
3523 @closecatbox
3525 @end deffn
3528 @anchor{quantile_pareto}
3529 @deffn {Function} quantile_pareto (@var{q},@var{a},@var{b})
3530 Returns the @var{q}-quantile of a m4_Pareto_RV(a,b) random variable, with @math{a,b>0}; in other words, this is the inverse of @code{cdf_pareto}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
3532 @opencatbox{Categories:}
3533 @category{Package distrib}
3534 @closecatbox
3536 @end deffn
3539 @anchor{mean_pareto}
3540 @deffn {Function} mean_pareto (@var{a},@var{b})
3541 Returns the mean of a m4_Pareto_RV(a,b) random variable, with @math{a>1,b>0}. To make use of this function, write first @code{load("distrib")}.
3543 The mean is
3544 m4_displaymath(
3545 <<<E[X] = {ab\over a-1}>>>,
3546 <<<@math{E[X] = a*b/(a-1)}>>>)
3548 @opencatbox{Categories:}
3549 @category{Package distrib}
3550 @closecatbox
3552 @end deffn
3555 @anchor{var_pareto}
3556 @deffn {Function} var_pareto (@var{a},@var{b})
3557 Returns the variance of a m4_Pareto_RV(a,b) random variable, with @math{a>2,b>0}. To make use of this function, write first @code{load("distrib")}.
3559 The variance is
3560 m4_displaymath(
3561 <<<V[X] = {ab^2\over (a-2)(a-1)^2}>>>,
3563 @example
3564                               2
3565                            a b
3566               V[X] = ----------------
3567                                     2
3568                      (a - 2) (a - 1)
3569 @end example
3570 >>>)
3572 @opencatbox{Categories:}
3573 @category{Package distrib}
3574 @closecatbox
3576 @end deffn
3578 @anchor{std_pareto}
3579 @deffn {Function} std_pareto (@var{a},@var{b})
3580 Returns the standard deviation of a m4_Pareto_RV(a,b) random variable, with @math{a>2,b>0}. To make use of this function, write first @code{load("distrib")}.
3582 The standard deviation is
3583 m4_displaymath(
3584 <<<D[X] = {b\over a-1} \sqrt{a\over a-2}>>>,
3586 @example
3587                               a
3588                        sqrt(-----) b
3589                             a - 2
3590                 D[X] = -------------
3591                            a - 1
3592 @end example
3593 >>>)
3595 @opencatbox{Categories:}
3596 @category{Package distrib}
3597 @closecatbox
3599 @end deffn
3603 @anchor{skewness_pareto}
3604 @deffn {Function} skewness_pareto (@var{a},@var{b})
3605 Returns the skewness coefficient of a m4_Pareto_RV(a,b) random variable, with @math{a>3,b>0}. To make use of this function, write first @code{load("distrib")}.
3607 The skewness coefficient is
3608 m4_displaymath(
3609 <<<SK[X] = {2(a+1)\over a-3} \sqrt{a-2\over a}>>>,
3611 @example
3612                      2 sqrt(a - 2) (a + 1)
3613              SK[X] = ---------------------
3614                         (a - 3) sqrt(a)
3615 @end example
3616 >>>)
3618 @opencatbox{Categories:}
3619 @category{Package distrib}
3620 @closecatbox
3622 @end deffn
3625 @anchor{kurtosis_pareto}
3626 @deffn {Function} kurtosis_pareto (@var{a},@var{b})
3627 Returns the kurtosis coefficient of a m4_Pareto_RV(a,b) random variable, with @math{a>4,b>0}. To make use of this function, write first @code{load("distrib")}.
3629 The kurtosis coefficient is
3630 m4_displaymath(
3631 <<<KU[X] = {6\left(a^3+a^2-6*a-2\right) \over a(a-3)(a-4)} - 3>>>,
3633 @example
3634                         3    2
3635                     6 (a  + a  - 6 a - 2)
3636             KU[X] = --------------------- - 3
3637                           2
3638                       a (a  - 7 a + 12)
3639 @end example
3640 >>>)
3642 @opencatbox{Categories:}
3643 @category{Package distrib}
3644 @closecatbox
3646 @end deffn
3649 @anchor{random_pareto}
3650 @deffn {Function} random_pareto (@var{a},@var{b}) @
3651 @fname{random_pareto} (@var{a},@var{b},@var{n})
3653 Returns a m4_Pareto_RV(a,b) random variate, with @math{a>0,b>0}. Calling @code{random_pareto} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
3655 The implemented algorithm is based on the general inverse method.
3657 To make use of this function, write first @code{load("distrib")}.
3659 @opencatbox{Categories:}
3660 @category{Package distrib}
3661 @category{Random numbers}
3662 @closecatbox
3664 @end deffn
3667 @node Weibull Random Variable, Rayleigh Random Variable, Pareto Random Variable, Functions and Variables for continuous distributions
3668 @subsection Weibull Random Variable
3670 @anchor{pdf_weibull}
3671 @deffn {Function} pdf_weibull (@var{x},@var{a},@var{b})
3672 Returns the value at @var{x} of the density function of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3674 The pdf is
3675 m4_displaymath(
3676 <<<f(x; a, b) =
3677 \cases{
3678 \displaystyle{1\over b} \left({x\over b}\right)^{a-1} e^{-(x/b)^a} &
3679 for $x \ge 0$ \cr
3681 0 & for $x < 0$
3682 }>>>,
3684 @example
3685              [                       a
3686              [      x a - 1   - (x/b)
3687              [   a (-)      %e         unit_step(x)
3688              [      b
3689              [   ----------------------------------   for x >= 0
3690              [                   b
3691 f(x, a, b) = [
3692              [ 0                                      for x < 0
3693 @end example
3694 >>>)
3695 @opencatbox{Categories:}
3696 @category{Package distrib}
3697 @closecatbox
3699 @end deffn
3702 @anchor{cdf_weibull}
3703 @deffn {Function} cdf_weibull (@var{x},@var{a},@var{b})
3704 Returns the value at @var{x} of the distribution function of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3706 The cdf is
3707 m4_displaymath(
3708 <<<F(x; a, b) =
3709 \cases{
3710 1 - e^{-(x/b)^a} & for $x \ge 0$ \cr
3711 0 & for $x < 0$
3712 }>>>,
3714 @example
3715              [ 1 - exp(-(x/b)^a)      for x >= 0
3716 F(x, a, b) = [
3717              [ 0                      for x < 0
3718 @end example
3719 >>>)
3720 @opencatbox{Categories:}
3721 @category{Package distrib}
3722 @closecatbox
3724 @end deffn
3727 @anchor{quantile_weibull}
3728 @deffn {Function} quantile_weibull (@var{q},@var{a},@var{b})
3729 Returns the @var{q}-quantile of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}; in other words, this is the inverse of @code{cdf_weibull}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
3731 @opencatbox{Categories:}
3732 @category{Package distrib}
3733 @closecatbox
3735 @end deffn
3738 @anchor{mean_weibull}
3739 @deffn {Function} mean_weibull (@var{a},@var{b})
3740 Returns the mean of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3742 The mean is
3743 m4_displaymath(
3744 <<<E[X] = b\Gamma\left(1+{1\over a}\right)>>>,
3746 @example
3747                                    1
3748                       E[X] = gamma(- + 1) b
3749                                    a
3750 @end example
3751 >>>)
3753 @opencatbox{Categories:}
3754 @category{Package distrib}
3755 @closecatbox
3757 @end deffn
3760 @anchor{var_weibull}
3761 @deffn {Function} var_weibull (@var{a},@var{b})
3762 Returns the variance of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3764 The variance is
3765 m4_displaymath(
3766 <<<V[X] = b^2\left[\Gamma\left(1+{2\over a}\right) -
3767 \Gamma\left(1+{1\over a}\right)^2\right]>>>,
3769 @example
3770                          2             2 1        2
3771            V[X] = (gamma(- + 1) - gamma (- + 1)) b
3772                          a               a
3773 @end example
3774 >>>)
3776 @opencatbox{Categories:}
3777 @category{Package distrib}
3778 @closecatbox
3780 @end deffn
3782 @anchor{std_weibull}
3783 @deffn {Function} std_weibull (@var{a},@var{b})
3784 Returns the standard deviation of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3786 The variance is
3787 m4_displaymath(
3788 <<<D[X] = b\sqrt{\Gamma\left(1+{2\over a}\right) -
3789 \Gamma\left(1+{1\over a}\right)^2}>>>,
3791 @example
3792                              2             2 1
3793            D[X] = sqrt(gamma(- + 1) - gamma (- + 1)) b
3794                              a               a
3795 @end example
3796 >>>)
3798 @opencatbox{Categories:}
3799 @category{Package distrib}
3800 @closecatbox
3802 @end deffn
3806 @anchor{skewness_weibull}
3807 @deffn {Function} skewness_weibull (@var{a},@var{b})
3808 Returns the skewness coefficient of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3810 The skewness coefficient is
3811 m4_displaymath(
3812 <<<SK[X] = {\displaystyle\Gamma\left(1+{3\over a}\right)
3813 -3\Gamma\left(1+{1\over a}\right)\Gamma\left(1+{2\over
3814 a}\right)+2\Gamma\left(1+{1\over a}\right)^3
3815  \over
3816  \displaystyle\left[\Gamma\left(1+{2\over a}\right)-\Gamma\left(1+{1\over
3817  a}\right)^2\right]^{3/2}
3819 >>>,
3821 @example
3822               3                1            2               3 1
3823         gamma(- + 1) - 3 gamma(- + 1) gamma(- + 1) + 2 gamma (- + 1)
3824               a                a            a                 a
3825 SK[X] = ------------------------------------------------------------
3826                             2             2 1      3/2
3827                      (gamma(- + 1) - gamma (- + 1))
3828                             a               a
3829 @end example
3830 >>>)
3832 @opencatbox{Categories:}
3833 @category{Package distrib}
3834 @closecatbox
3836 @end deffn
3839 @anchor{kurtosis_weibull}
3840 @deffn {Function} kurtosis_weibull (@var{a},@var{b})
3841 Returns the kurtosis coefficient of a m4_Weibull_RV(a,b) random variable, with @math{a,b>0}. To make use of this function, write first @code{load("distrib")}.
3843 The kurtosis coefficient is
3844 m4_displaymath(
3845 <<<KU[X] = {
3846 \Gamma_4
3847  - 4\Gamma_1 \Gamma_3
3848  + 6\Gamma_1^2 \Gamma_2
3849  - 3 \Gamma_1^4
3850 \over
3851  \left[\Gamma_2 - \Gamma_1^2\right]^2
3852 } - 3>>>,
3854 @example
3855                 4                1            3
3856  KU[X] = (gamma(- + 1) - 4 gamma(- + 1) gamma(- + 1)
3857                 a                a            a
3858           2 1            2               4 1
3859  + 6 gamma (- + 1) gamma(- + 1) - 3 gamma (- + 1))
3860             a            a                 a
3861         2             2 1      2
3862 /(gamma(- + 1) - gamma (- + 1))  - 3
3863         a               a
3864 @end example
3865 >>>)
3866 @ifnotinfo
3867 where m4_math(\Gamma_k = \Gamma\left(1+k/a\right)).
3868 @end ifnotinfo
3870 @opencatbox{Categories:}
3871 @category{Package distrib}
3872 @closecatbox
3874 @end deffn
3877 @anchor{random_weibull}
3878 @deffn {Function} random_weibull (@var{a},@var{b}) @
3879 @fname{random_weibull} (@var{a},@var{b},@var{n})
3881 Returns a m4_Weibull_RV(a,b) random variate, with @math{a,b>0}. Calling @code{random_weibull} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
3883 The implemented algorithm is based on the general inverse method.
3885 To make use of this function, write first @code{load("distrib")}.
3887 @opencatbox{Categories:}
3888 @category{Package distrib}
3889 @category{Random numbers}
3890 @closecatbox
3892 @end deffn
3896 @node Rayleigh Random Variable, Laplace Random Variable, Weibull Random Variable, Functions and Variables for continuous distributions
3897 @subsection Rayleigh Random Variable
3899 The @emph{Rayleigh} distribution coincides with the m4_math(\chi^2,
3900 chi-squared) distribution with two degrees of freedom.
3902 @anchor{pdf_rayleigh}
3903 @deffn {Function} pdf_rayleigh (@var{x},@var{b})
3904 Returns the value at @var{x} of the density function of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
3906 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
3908 The pdf is
3909 m4_displaymath(
3910 <<<f(x; b) =
3911 \cases{
3912 2b^2 x e^{-b^2 x^2} & for $x \ge 0$ \cr
3913 0 & for $x < 0$
3914 }>>>,
3916 @example
3917           [ 2*b^2*x*exp(-b^2*x^2)    for x>= 0
3918 f(x, b) = [
3919           [ 0                        otherwise
3920 @end example
3921 >>>)
3922 @c ===beg===
3923 @c load ("distrib")$
3924 @c pdf_rayleigh(x,b);
3925 @c ===end===
3926 @example
3927 (%i1) load ("distrib")$
3928 @group
3929 (%i2) pdf_rayleigh(x,b);
3930                               2  2
3931                      2     - b  x
3932 (%o2)             2 b  x %e        unit_step(x)
3933 @end group
3934 @end example
3936 @opencatbox{Categories:}
3937 @category{Package distrib}
3938 @closecatbox
3940 @end deffn
3943 @anchor{cdf_rayleigh}
3944 @deffn {Function} cdf_rayleigh (@var{x},@var{b})
3945 Returns the value at @var{x} of the distribution function of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
3947 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
3949 The cdf is
3950 m4_displaymath(
3951 <<<F(x; b) =
3952 \cases{
3953 1 - e^{-b^2 x^2} & for $x \ge 0$\cr
3954 0 & for $x < 0$
3955 }>>>,
3957 @example
3958           [ 1 - exp(-b^2*x^2)    for x >= 0
3959 F(x, b) = [
3960           [ 0                    for x < 0
3961 @end example
3962 >>>)
3963 @c ===beg===
3964 @c load ("distrib")$
3965 @c cdf_rayleigh(x,b);
3966 @c ===end===
3967 @example
3968 (%i1) load ("distrib")$
3969 @group
3970 (%i2) cdf_rayleigh(x,b);
3971                             2  2
3972                          - b  x
3973 (%o2)             (1 - %e       ) unit_step(x)
3974 @end group
3975 @end example
3977 @opencatbox{Categories:}
3978 @category{Package distrib}
3979 @closecatbox
3981 @end deffn
3984 @anchor{quantile_rayleigh}
3985 @deffn {Function} quantile_rayleigh (@var{q},@var{b})
3986 Returns the @var{q}-quantile of a m4_Rayleigh_RV(b) random variable, with @math{b>0}; in other words, this is the inverse of @code{cdf_rayleigh}. Argument @var{q} must be an element of @math{[0,1]}.
3988 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
3990 @c ===beg===
3991 @c load ("distrib")$
3992 @c quantile_rayleigh(0.99,b);
3993 @c ===end===
3994 @example
3995 (%i1) load ("distrib")$
3996 @group
3997 (%i2) quantile_rayleigh(0.99,b);
3998                         2.145966026289347
3999 (%o2)                   -----------------
4000                                 b
4001 @end group
4002 @end example
4004 @opencatbox{Categories:}
4005 @category{Package distrib}
4006 @closecatbox
4008 @end deffn
4011 @anchor{mean_rayleigh}
4012 @deffn {Function} mean_rayleigh (@var{b})
4013 Returns the mean of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
4015 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
4017 The mean is
4018 m4_displaymath(
4019 <<<E[X] = {\sqrt{\pi}\over 2b}>>>,
4021 @example
4022                                sqrt(%pi)
4023                         E[X] = ---------
4024                                   2 b
4025 @end example
4026 >>>)
4028 @c ===beg===
4029 @c load ("distrib")$
4030 @c mean_rayleigh(b);
4031 @c ===end===
4032 @example
4033 (%i1) load ("distrib")$
4034 @group
4035 (%i2) mean_rayleigh(b);
4036                             sqrt(%pi)
4037 (%o2)                       ---------
4038                                2 b
4039 @end group
4040 @end example
4042 @opencatbox{Categories:}
4043 @category{Package distrib}
4044 @closecatbox
4046 @end deffn
4049 @anchor{var_rayleigh}
4050 @deffn {Function} var_rayleigh (@var{b})
4051 Returns the variance of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
4053 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
4055 The variance is
4056 m4_displaymath(
4057 <<<V[X] = {1\over b^2}\left(1-{\pi \over 4}\right)>>>,
4059 @example
4060                                     %pi
4061                                 1 - ---
4062                                      4
4063                          V[X] = -------
4064                                    2
4065                                   b
4066 @end example
4067 >>>)
4069 @c ===beg===
4070 @c load ("distrib")$
4071 @c var_rayleigh(b);
4072 @c ===end===
4073 @example
4074 (%i1) load ("distrib")$
4075 @group
4076 (%i2) var_rayleigh(b);
4077                                  %pi
4078                              1 - ---
4079                                   4
4080 (%o2)                        -------
4081                                 2
4082                                b
4083 @end group
4084 @end example
4086 @opencatbox{Categories:}
4087 @category{Package distrib}
4088 @closecatbox
4090 @end deffn
4093 @anchor{std_rayleigh}
4094 @deffn {Function} std_rayleigh (@var{b})
4095 Returns the standard deviation of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
4097 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
4099 The standard deviation is
4100 m4_displaymath(
4101 <<<D[X] = {1\over b}\sqrt{\displaystyle 1 - {\pi\over 4}}>>>,
4103 @example
4104                                      %pi
4105                             sqrt(1 - ---)
4106                                       4
4107                      D[X] = -------------
4108                                   b
4109 @end example
4110 >>>)
4112 @c ===beg===
4113 @c load ("distrib")$
4114 @c std_rayleigh(b);
4115 @c ===end===
4116 @example
4117 (%i1) load ("distrib")$
4118 @group
4119 (%i2) std_rayleigh(b);
4120                                    %pi
4121                           sqrt(1 - ---)
4122                                     4
4123 (%o2)                     -------------
4124                                 b
4125 @end group
4126 @end example
4128 @opencatbox{Categories:}
4129 @category{Package distrib}
4130 @closecatbox
4132 @end deffn
4135 @anchor{skewness_rayleigh}
4136 @deffn {Function} skewness_rayleigh (@var{b})
4137 Returns the skewness coefficient of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
4139 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
4141 The skewness coefficient is
4142 m4_displaymath(
4143 <<<SK[X] = {2\sqrt{\pi}(\pi - 3)\over (4-\pi)^{3/2}}>>>,
4145 @example
4146                             3/2
4147                          %pi      3 sqrt(%pi)
4148                          ------ - -----------
4149                            4           4
4150                  SK[X] = --------------------
4151                                   %pi 3/2
4152                              (1 - ---)
4153                                    4
4154 @end example
4155 >>>)
4157 @c ===beg===
4158 @c load ("distrib")$
4159 @c skewness_rayleigh(b);
4160 @c ===end===
4161 @example
4162 (%i1) load ("distrib")$
4163 @group
4164 (%i2) skewness_rayleigh(b);
4165                          3/2
4166                       %pi      3 sqrt(%pi)
4167                       ------ - -----------
4168                         4           4
4169 (%o2)                 --------------------
4170                                %pi 3/2
4171                           (1 - ---)
4172                                 4
4173 @end group
4174 @end example
4176 @opencatbox{Categories:}
4177 @category{Package distrib}
4178 @closecatbox
4180 @end deffn
4183 @anchor{kurtosis_rayleigh}
4184 @deffn {Function} kurtosis_rayleigh (@var{b})
4185 Returns the kurtosis coefficient of a m4_Rayleigh_RV(b) random variable, with @math{b>0}.
4187 The m4_Rayleigh_RV(b) random variable is equivalent to the m4_Weibull_RV(2,1/b).
4189 The kurtosis coefficient is
4190 m4_displaymath(
4191 <<<KU[X] = {32-3\pi\over (4-\pi)^2} - 3>>>,
4193 @example
4194                                      2
4195                                 3 %pi
4196                             2 - ------
4197                                   16
4198                     KU[X] = ---------- - 3
4199                                  %pi 2
4200                             (1 - ---)
4201                                   4
4202 @end example
4203 >>>)
4205 @c ===beg===
4206 @c load ("distrib")$
4207 @c kurtosis_rayleigh(b);
4208 @c ===end===
4209 @example
4210 (%i1) load ("distrib")$
4211 @group
4212 (%i2) kurtosis_rayleigh(b);
4213                                   2
4214                              3 %pi
4215                          2 - ------
4216                                16
4217 (%o2)                    ---------- - 3
4218                               %pi 2
4219                          (1 - ---)
4220                                4
4221 @end group
4222 @end example
4224 @opencatbox{Categories:}
4225 @category{Package distrib}
4226 @closecatbox
4228 @end deffn
4231 @anchor{random_rayleigh}
4232 @deffn {Function} random_rayleigh (@var{b}) @
4233 @fname{random_rayleigh} (@var{b},@var{n})
4235 Returns a m4_Rayleigh_RV(b) random variate, with @math{b>0}. Calling @code{random_rayleigh} with a second argument @var{n}, a random sample of size @var{n} will be simulated.
4237 The implemented algorithm is based on the general inverse method.
4239 To make use of this function, write first @code{load("distrib")}.
4241 @opencatbox{Categories:}
4242 @category{Package distrib}
4243 @category{Random numbers}
4244 @closecatbox
4246 @end deffn
4250 @node Laplace Random Variable, Cauchy Random Variable, Rayleigh Random Variable, Functions and Variables for continuous distributions
4251 @subsection Laplace Random Variable
4253 The @emph{Laplace} distribution is a continuous probability
4254 distribution that is sometimes called the double exponential
4255 distribution because it can be thought of as two exponential
4256 distributions spliced back to back.
4258 @anchor{pdf_laplace}
4259 @deffn {Function} pdf_laplace (@var{x},@var{a},@var{b})
4260 Returns the value at @var{x} of the density function of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4262 Here, @math{a} is the location parameter (or mean), and @math{b} is
4263 the scale parameter, related to the variance.
4265 The pdf is
4266 m4_displaymath(
4267 <<<f(x; a, b) = {1\over 2b}\exp\left(-{|x-a|\over b}\right)>>>,
4269 @example
4270                            abs(x - a)
4271                          - ----------
4272                                b
4273                        %e
4274           f(x, a, b) = --------------
4275                             2 b
4276 @end example
4277 @math{1/(2*b)*exp(-abs(x-a)/b)}>>>)
4279 @opencatbox{Categories:}
4280 @category{Package distrib}
4281 @closecatbox
4283 @end deffn
4286 @anchor{cdf_laplace}
4287 @deffn {Function} cdf_laplace (@var{x},@var{a},@var{b})
4288 Returns the value at @var{x} of the distribution function of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4290 The cdf is
4291 m4_displaymath(
4292 <<<F(x; a, b) =
4293 \cases{
4294 \displaystyle{1\over 2} \exp\left({x-a\over b}\right) & for $x < a$\cr
4296 1-\displaystyle{1\over 2} \exp\left({x-a\over b}\right) & for $x \ge a$
4297 }>>>,
4299 @example
4300              [ 1/2*exp((x-a)/b)     for x < a
4301 F(x, a, b) = [
4302              [ 1-1/2*exp((x-a)/b)   for x >= a
4303 @end example
4304 >>>)
4305 @opencatbox{Categories:}
4306 @category{Package distrib}
4307 @closecatbox
4309 @end deffn
4312 @anchor{quantile_laplace}
4313 @deffn {Function} quantile_laplace (@var{q},@var{a},@var{b})
4314 Returns the @var{q}-quantile of a m4_Laplace_RV(a,b) random variable, with @math{b>0}; in other words, this is the inverse of @code{cdf_laplace}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
4316 @opencatbox{Categories:}
4317 @category{Package distrib}
4318 @closecatbox
4320 @end deffn
4323 @anchor{mean_laplace}
4324 @deffn {Function} mean_laplace (@var{a},@var{b})
4325 Returns the mean of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4327 The mean is
4328 m4_displaymath(
4329 <<<E[X] = a>>>,
4331 @example
4332                             E[X] = a
4333 @end example
4334 >>>)
4336 @opencatbox{Categories:}
4337 @category{Package distrib}
4338 @closecatbox
4340 @end deffn
4343 @anchor{var_laplace}
4344 @deffn {Function} var_laplace (@var{a},@var{b})
4345 Returns the variance of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4347 The variance is
4348 m4_displaymath(
4349 <<<V[X] = 2b^2>>>,
4351 @example
4352                                      2
4353                            V[X] = 2 b
4354 @end example
4355 >>>)
4357 @opencatbox{Categories:}
4358 @category{Package distrib}
4359 @closecatbox
4361 @end deffn
4364 @anchor{std_laplace}
4365 @deffn {Function} std_laplace (@var{a},@var{b})
4366 Returns the standard deviation of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4368 The standard deviation is
4369 m4_displaymath(
4370 <<<D[X] = \sqrt{2} b>>>,
4372 @example
4373                         D[X] = sqrt(2) b
4374 @end example
4375 >>>)
4377 @opencatbox{Categories:}
4378 @category{Package distrib}
4379 @closecatbox
4381 @end deffn
4384 @anchor{skewness_laplace}
4385 @deffn {Function} skewness_laplace (@var{a},@var{b})
4386 Returns the skewness coefficient of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4388 The skewness coefficient is
4389 m4_displaymath(
4390 <<<SK[X] = 0>>>,
4392 @example
4393                             SK[X] = 0
4394 @end example
4395 >>>)
4397 @opencatbox{Categories:}
4398 @category{Package distrib}
4399 @closecatbox
4401 @end deffn
4404 @anchor{kurtosis_laplace}
4405 @deffn {Function} kurtosis_laplace (@var{a},@var{b})
4406 Returns the kurtosis coefficient of a m4_Laplace_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4408 The kurtosis coefficient is
4409 m4_displaymath(
4410 <<<KU[X] = 3>>>,
4412 @example
4413                             KU[X] = 3
4414 @end example
4415 >>>)
4417 @opencatbox{Categories:}
4418 @category{Package distrib}
4419 @closecatbox
4421 @end deffn
4424 @anchor{random_laplace}
4425 @deffn {Function} random_laplace (@var{a},@var{b}) @
4426 @fname{random_laplace} (@var{a},@var{b},@var{n})
4428 Returns a m4_Laplace_RV(a,b) random variate, with @math{b>0}. Calling @code{random_laplace} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
4430 The implemented algorithm is based on the general inverse method.
4432 To make use of this function, write first @code{load("distrib")}.
4434 @opencatbox{Categories:}
4435 @category{Package distrib}
4436 @category{Random numbers}
4437 @closecatbox
4439 @end deffn
4443 @node Cauchy Random Variable, Gumbel Random Variable, Laplace Random Variable, Functions and Variables for continuous distributions
4444 @subsection Cauchy Random Variable
4446 The @emph{Cauchy} distribution (also known as the Lorentz
4447 distribution) is the distribution of of the ratio of two independent
4448 normally distributed random variables with mean zero.
4450 Note that the mean, variance, standard deviation, skewness
4451 coefficient, and kurtosis coefficient are all undefined for the Cauchy
4452 distribution.  The integrals do not converge in this case.
4454 @anchor{pdf_cauchy}
4455 @deffn {Function} pdf_cauchy (@var{x},@var{a},@var{b})
4456 Returns the value at @var{x} of the density function of a m4_Cauchy_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4458 The pdf is
4459 m4_displaymath(
4460 <<<f(x; a, b) = {b\over \pi\left((x-a)^2+b^2\right)}>>>,
4462 @example
4463                             b
4464       f(x, a, b) = -------------------
4465                                2    2
4466                    %pi ((x - a)  + b )
4467 @end example
4468 >>>)
4469 @opencatbox{Categories:}
4470 @category{Package distrib}
4471 @closecatbox
4473 @end deffn
4476 @anchor{cdf_cauchy}
4477 @deffn {Function} cdf_cauchy (@var{x},@var{a},@var{b})
4478 Returns the value at @var{x} of the distribution function of a m4_Cauchy_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4480 The cdf is
4481 m4_displaymath(
4482 <<<F(x; a, b) = {1\over 2} + {1\over \pi} \tan^{-1} {x-a\over b}>>>,
4484 @example
4485                                      x - a
4486                                 atan(-----)
4487                                        b      1
4488                    F(x, a, b) = ----------- + -
4489                                     %pi       2
4490 @end example
4491 >>>)
4492 @opencatbox{Categories:}
4493 @category{Package distrib}
4494 @closecatbox
4496 @end deffn
4499 @anchor{quantile_cauchy}
4500 @deffn {Function} quantile_cauchy (@var{q},@var{a},@var{b})
4501 Returns the @var{q}-quantile of a m4_Cauchy_RV(a,b) random variable, with @math{b>0}; in other words, this is the inverse of @code{cdf_cauchy}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
4503 @opencatbox{Categories:}
4504 @category{Package distrib}
4505 @closecatbox
4507 @end deffn
4510 @anchor{random_cauchy}
4511 @deffn {Function} random_cauchy (@var{a},@var{b}) @
4512 @fname{random_cauchy} (@var{a},@var{b},@var{n})
4514 Returns a m4_Cauchy_RV(a,b) random variate, with @math{b>0}. Calling @code{random_cauchy} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
4516 The implemented algorithm is based on the general inverse method.
4518 To make use of this function, write first @code{load("distrib")}.
4520 @opencatbox{Categories:}
4521 @category{Package distrib}
4522 @category{Random numbers}
4523 @closecatbox
4525 @end deffn
4529 @node Gumbel Random Variable,  , Cauchy Random Variable, Functions and Variables for continuous distributions
4530 @subsection Gumbel Random Variable
4532 @anchor{pdf_gumbel}
4533 @deffn {Function} pdf_gumbel (@var{x},@var{a},@var{b})
4534 Returns the value at @var{x} of the density function of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4536 The pdf is
4537 m4_displaymath(
4538 <<<f(x; a, b) = {1\over b} \exp\left[{a-x\over b} - \exp\left({a-x\over b}\right)\right]>>>,
4540 @example
4541                              a - x
4542                              -----
4543                    a - x       b
4544                    ----- - %e
4545                      b
4546                  %e
4547     f(x, a, b) = -----------------
4548                          b
4549 @end example
4550 >>>)
4552 @opencatbox{Categories:}
4553 @category{Package distrib}
4554 @closecatbox
4556 @end deffn
4559 @anchor{cdf_gumbel}
4560 @deffn {Function} cdf_gumbel (@var{x},@var{a},@var{b})
4561 Returns the value at @var{x} of the distribution function of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4563 The cdf is
4564 m4_displaymath(
4565 <<<F(x; a, b) = \exp\left[-\exp\left({a-x\over b}\right)\right]>>>,
4567 @example
4568                        a - x
4569                        -----
4570                          b
4571                    - %e
4572     F(x, a, b) = %e
4573 @end example
4574 >>>)
4575 @opencatbox{Categories:}
4576 @category{Package distrib}
4577 @closecatbox
4579 @end deffn
4582 @anchor{quantile_gumbel}
4583 @deffn {Function} quantile_gumbel (@var{q},@var{a},@var{b})
4584 Returns the @var{q}-quantile of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}; in other words, this is the inverse of @code{cdf_gumbel}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
4586 @opencatbox{Categories:}
4587 @category{Package distrib}
4588 @closecatbox
4590 @end deffn
4593 @anchor{mean_gumbel}
4594 @deffn {Function} mean_gumbel (@var{a},@var{b})
4595 Returns the mean of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}.
4597 The mean is
4598 m4_displaymath(
4599 <<<E[X] = a+b\gamma>>>,
4601 @example
4602                        E[X] = %gamma b + a
4603 @end example
4604 >>>)
4606 @c ===beg===
4607 @c load ("distrib")$
4608 @c mean_gumbel(a,b);
4609 @c ===end===
4610 @example
4611 (%i1) load ("distrib")$
4612 @group
4613 (%i2) mean_gumbel(a,b);
4614 (%o2)                     %gamma b + a
4615 @end group
4616 @end example
4617 where symbol @code{%gamma} stands for the Euler-Mascheroni constant. See also @mrefdot{%gamma}
4619 @opencatbox{Categories:}
4620 @category{Package distrib}
4621 @closecatbox
4623 @end deffn
4626 @anchor{var_gumbel}
4627 @deffn {Function} var_gumbel (@var{a},@var{b})
4628 Returns the variance of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4630 The variance is
4631 m4_displaymath(
4632 <<<V[X] = {\pi^2\over 6} b^2>>>,
4634 @example
4635                                    2  2
4636                                 %pi  b
4637                          V[X] = -------
4638                                    6
4639 @end example
4640 >>>)
4642 @opencatbox{Categories:}
4643 @category{Package distrib}
4644 @closecatbox
4646 @end deffn
4649 @anchor{std_gumbel}
4650 @deffn {Function} std_gumbel (@var{a},@var{b})
4651 Returns the standard deviation of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4653 The standard deviation is
4654 m4_displaymath(
4655 <<<D[X] = {\pi \over \sqrt{6}} b>>>,
4657 @example
4658                                  %pi b
4659                          D[X] = -------
4660                                 sqrt(6)
4661 @end example
4662 >>>)
4664 @opencatbox{Categories:}
4665 @category{Package distrib}
4666 @closecatbox
4668 @end deffn
4671 @anchor{skewness_gumbel}
4672 @deffn {Function} skewness_gumbel (@var{a},@var{b})
4673 Returns the skewness coefficient of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}.
4675 The skewness coefficient is
4676 m4_displaymath(
4677 <<<SK[X] = {12\sqrt{6}\over \pi^3} \zeta(3)>>>,
4679 @example
4680                                 3/2
4681                              2 6    zeta(3)
4682                      SK[X] = --------------
4683                                      3
4684                                   %pi
4685 @end example
4686 >>>)
4688 @c ===beg===
4689 @c load ("distrib")$
4690 @c skewness_gumbel(a,b);
4691 @c ===end===
4692 @example
4693 (%i1) load ("distrib")$
4694 @group
4695 (%i2) skewness_gumbel(a,b);
4696                             3/2
4697                          2 6    zeta(3)
4698 (%o2)                    --------------
4699                                  3
4700                               %pi
4701 @end group
4702 @end example
4703 where @code{zeta} stands for the Riemann's zeta function.
4705 @opencatbox{Categories:}
4706 @category{Package distrib}
4707 @closecatbox
4709 @end deffn
4712 @anchor{kurtosis_gumbel}
4713 @deffn {Function} kurtosis_gumbel (@var{a},@var{b})
4714 Returns the kurtosis coefficient of a m4_Gumbel_RV(a,b) random variable, with @math{b>0}. To make use of this function, write first @code{load("distrib")}.
4716 The kurtosis coefficient is
4717 m4_displaymath(
4718 <<<KU[X] = {12\over 5}>>>,
4720 @example
4721                                    12
4722                            KU[X] = --
4723                                    5
4724 @end example
4725 >>>)
4727 @opencatbox{Categories:}
4728 @category{Package distrib}
4729 @category{Package distrib}
4730 @closecatbox
4732 @end deffn
4735 @anchor{random_gumbel}
4736 @deffn {Function} random_gumbel (@var{a},@var{b}) @
4737 @fname{random_gumbel} (@var{a},@var{b},@var{n})
4739 Returns a m4_Gumbel_RV(a,b) random variate, with @math{b>0}. Calling @code{random_gumbel} with a third argument @var{n}, a random sample of size @var{n} will be simulated.
4741 The implemented algorithm is based on the general inverse method.
4743 To make use of this function, write first @code{load("distrib")}.
4745 @opencatbox{Categories:}
4746 @category{Package distrib}
4747 @category{Random numbers}
4748 @closecatbox
4750 @end deffn
4753 @node Functions and Variables for discrete distributions,  , Functions and Variables for continuous distributions
4754 @section Functions and Variables for discrete distributions
4756 Maxima knows the following kinds of discrete distributions
4759 @menu
4760 * General Finite Discrete Random Variable::
4761 * Binomial Random Variable::
4762 * Poisson Random Variable::
4763 * Bernoulli Random Variable::
4764 * Geometric Random Variable::
4765 * Discrete Uniform Random Variable::
4766 * Hypergeometric Random Variable::
4767 * Negative Binomial Random Variable::
4768 @end menu
4770 @node General Finite Discrete Random Variable, Binomial Random Variable, Functions and Variables for discrete distributions, Functions and Variables for discrete distributions
4771 @subsection General Finite Discrete Random Variable
4773 @anchor{pdf_general_finite_discrete}
4774 @deffn {Function} pdf_general_finite_discrete (@var{x},@var{v})
4775 Returns the value at @var{x} of the probability function of a general finite discrete random variable, with vector probabilities @math{v}, such that @code{Pr(X=i) = v_i}. Vector @math{v} can be a list of nonnegative expressions, whose components will be normalized to get a vector of probabilities. To make use of this function, write first @code{load("distrib")}.
4777 @c ===beg===
4778 @c load ("distrib")$
4779 @c pdf_general_finite_discrete(2, [1/7, 4/7, 2/7]);
4780 @c pdf_general_finite_discrete(2, [1, 4, 2]);
4781 @c ===end===
4782 @example
4783 (%i1) load ("distrib")$
4784 @group
4785 (%i2) pdf_general_finite_discrete(2, [1/7, 4/7, 2/7]);
4786                                 4
4787 (%o2)                           -
4788                                 7
4789 @end group
4790 @group
4791 (%i3) pdf_general_finite_discrete(2, [1, 4, 2]);
4792                                 4
4793 (%o3)                           -
4794                                 7
4795 @end group
4796 @end example
4798 @opencatbox{Categories:}
4799 @category{Package distrib}
4800 @closecatbox
4802 @end deffn
4805 @anchor{cdf_general_finite_discrete}
4806 @deffn {Function} cdf_general_finite_discrete (@var{x},@var{v})
4807 Returns the value at @var{x} of the distribution function of a general finite discrete random variable, with vector probabilities @math{v}.
4809 See @code{pdf_general_finite_discrete} for more details.
4811 @c ===beg===
4812 @c load ("distrib")$
4813 @c cdf_general_finite_discrete(2, [1/7, 4/7, 2/7]);
4814 @c cdf_general_finite_discrete(2, [1, 4, 2]);
4815 @c cdf_general_finite_discrete(2+1/2, [1, 4, 2]);
4816 @c ===end===
4817 @example
4818 (%i1) load ("distrib")$
4819 @group
4820 (%i2) cdf_general_finite_discrete(2, [1/7, 4/7, 2/7]);
4821                                 5
4822 (%o2)                           -
4823                                 7
4824 @end group
4825 @group
4826 (%i3) cdf_general_finite_discrete(2, [1, 4, 2]);
4827                                 5
4828 (%o3)                           -
4829                                 7
4830 @end group
4831 @group
4832 (%i4) cdf_general_finite_discrete(2+1/2, [1, 4, 2]);
4833                                 5
4834 (%o4)                           -
4835                                 7
4836 @end group
4837 @end example
4839 @opencatbox{Categories:}
4840 @category{Package distrib}
4841 @closecatbox
4843 @end deffn
4846 @anchor{quantile_general_finite_discrete}
4847 @deffn {Function} quantile_general_finite_discrete (@var{q},@var{v})
4848 Returns the @var{q}-quantile of a general finite discrete random variable, with vector probabilities @math{v}.
4850 See @code{pdf_general_finite_discrete} for more details.
4852 @opencatbox{Categories:}
4853 @category{Package distrib}
4854 @closecatbox
4856 @end deffn
4859 @anchor{mean_general_finite_discrete}
4860 @deffn {Function} mean_general_finite_discrete (@var{v})
4861 Returns the mean of a general finite discrete random variable, with vector probabilities @math{v}.
4863 See @code{pdf_general_finite_discrete} for more details.
4865 @opencatbox{Categories:}
4866 @category{Package distrib}
4867 @closecatbox
4869 @end deffn
4872 @anchor{var_general_finite_discrete}
4873 @deffn {Function} var_general_finite_discrete (@var{v})
4874 Returns the variance of a general finite discrete random variable, with vector probabilities @math{v}.
4876 See @code{pdf_general_finite_discrete} for more details.
4878 @opencatbox{Categories:}
4879 @category{Package distrib}
4880 @closecatbox
4882 @end deffn
4885 @anchor{std_general_finite_discrete}
4886 @deffn {Function} std_general_finite_discrete (@var{v})
4887 Returns the standard deviation of a general finite discrete random variable, with vector probabilities @math{v}.
4889 See @code{pdf_general_finite_discrete} for more details.
4891 @opencatbox{Categories:}
4892 @category{Package distrib}
4893 @closecatbox
4895 @end deffn
4898 @anchor{skewness_general_finite_discrete}
4899 @deffn {Function} skewness_general_finite_discrete (@var{v})
4900 Returns the skewness coefficient of a general finite discrete random variable, with vector probabilities @math{v}.
4902 See @code{pdf_general_finite_discrete} for more details.
4904 @opencatbox{Categories:}
4905 @category{Package distrib}
4906 @closecatbox
4908 @end deffn
4911 @anchor{kurtosis_general_finite_discrete}
4912 @deffn {Function} kurtosis_general_finite_discrete (@var{v})
4913 Returns the kurtosis coefficient of a general finite discrete random variable, with vector probabilities @math{v}.
4915 See @code{pdf_general_finite_discrete} for more details.
4917 @opencatbox{Categories:}
4918 @category{Package distrib}
4919 @closecatbox
4921 @end deffn
4924 @anchor{random_general_finite_discrete}
4925 @deffn {Function} random_general_finite_discrete (@var{v}) @
4926 @fname{random_general_finite_discrete} (@var{v},@var{m})
4928 Returns a general finite discrete random variate, with vector probabilities @math{v}. Calling @code{random_general_finite_discrete} with a second argument @var{m}, a random sample of size @var{m} will be simulated.
4930 See @code{pdf_general_finite_discrete} for more details.
4932 @c ===beg===
4933 @c load ("distrib")$
4934 @c random_general_finite_discrete([1,3,1,5]);
4935 @c random_general_finite_discrete([1,3,1,5], 10);
4936 @c ===end===
4937 @example
4938 (%i1) load ("distrib")$
4939 @group
4940 (%i2) random_general_finite_discrete([1,3,1,5]);
4941 (%o2)                           4
4942 @end group
4943 @group
4944 (%i3) random_general_finite_discrete([1,3,1,5], 10);
4945 (%o3)            [3, 4, 3, 4, 4, 4, 4, 2, 4, 4]
4946 @end group
4947 @end example
4949 @opencatbox{Categories:}
4950 @category{Package distrib}
4951 @category{Random numbers}
4952 @closecatbox
4954 @end deffn
4956 @node Binomial Random Variable, Poisson Random Variable, General Finite Discrete Random Variable, Functions and Variables for discrete distributions
4957 @subsection Binomial Random Variable
4959 The @emph{binomial distribution} with parameters @math{n} and @math{p}
4960 is a discrete probability distribution.  It consists of @math{n}
4961 independent experiments where each experiment consists of a
4962 Boolean-valued outcome where a success occurs with a probablity
4963 @math{p}.
4965 For example, a biased coin that comes up heads with probablity
4966 @math{p} is tossed @math{n} times.  Then the probability of exactly
4967 @math{k} heads in @math{n} tosses is given by the binomial
4968 distribution.
4970 @anchor{pdf_binomial}
4971 @deffn {Function} pdf_binomial (@var{x},@var{n},@var{p})
4972 Returns the value at @var{x} of the probability function of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer. To make use of this function, write first @code{load("distrib")}.
4974 The pdf is
4975 m4_displaymath(
4976 <<<f(x; n, p) = {n\choose x} (1-p)^{n-x}p^x>>>,
4978 @example
4979                                                n - x  x
4980             f(x, n, p) = binomial(n, x) (1 - p)      p
4981 @end example
4982 >>>)
4984 @opencatbox{Categories:}
4985 @category{Package distrib}
4986 @closecatbox
4988 @end deffn
4991 @anchor{cdf_binomial}
4992 @deffn {Function} cdf_binomial (@var{x},@var{n},@var{p})
4993 Returns the value at @var{x} of the distribution function of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer.
4995 The cdf is
4996 m4_displaymath(
4997 <<<F(x; n, p) = I_{1-p}(n-\lfloor x \rfloor, \lfloor x \rfloor + 1)>>>,
4999 @example
5000 F(x, n, p) = beta_incomplete_regularized(n - floor(x), floor(x) + 1, 
5001                                                                   1 - p)
5002 @end example
5003 >>>)
5004 @ifnotinfo
5005 where m4_math(I_z(a,b)) is the @ref{beta_incomplete_regularized}
5006 function.
5007 @end ifnotinfo
5010 @c ===beg===
5011 @c load ("distrib")$
5012 @c cdf_binomial(5,7,1/6);
5013 @c float(%);
5014 @c ===end===
5015 @example
5016 (%i1) load ("distrib")$
5017 @group
5018 (%i2) cdf_binomial(5,7,1/6);
5019                               7775
5020 (%o2)                         ----
5021                               7776
5022 @end group
5023 @group
5024 (%i3) float(%);
5025 (%o3)                  0.9998713991769548
5026 @end group
5027 @end example
5029 @opencatbox{Categories:}
5030 @category{Package distrib}
5031 @closecatbox
5033 @end deffn
5036 @anchor{quantile_binomial}
5037 @deffn {Function} quantile_binomial (@var{q},@var{n},@var{p})
5038 Returns the @var{q}-quantile of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer; in other words, this is the inverse of @code{cdf_binomial}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
5040 @opencatbox{Categories:}
5041 @category{Package distrib}
5042 @closecatbox
5044 @end deffn
5047 @anchor{mean_binomial}
5048 @deffn {Function} mean_binomial (@var{n},@var{p})
5049 Returns the mean of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer. To make use of this function, write first @code{load("distrib")}.
5051 The mean is
5052 m4_displaymath(
5053 <<<E[X] = np>>>,
5055 @example
5056                             E[X] = n p
5057 @end example
5059 >>>)
5061 @opencatbox{Categories:}
5062 @category{Package distrib}
5063 @closecatbox
5065 @end deffn
5068 @anchor{var_binomial}
5069 @deffn {Function} var_binomial (@var{n},@var{p})
5070 Returns the variance of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer. To make use of this function, write first @code{load("distrib")}.
5072 The variance is
5073 m4_displaymath(
5074 <<<V[X] = np(1-p)>>>,
5076 @example
5077                        V[X] = n (1 - p) p
5078 @end example
5079 >>>)
5081 @opencatbox{Categories:}
5082 @category{Package distrib}
5083 @closecatbox
5085 @end deffn
5088 @anchor{std_binomial}
5089 @deffn {Function} std_binomial (@var{n},@var{p})
5090 Returns the standard deviation of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer. To make use of this function, write first @code{load("distrib")}.
5092 The standard deviation is
5093 m4_displaymath(
5094 <<<D[X] = \sqrt{np(1-p)}>>>,
5096 @example
5097                     D[X] = sqrt(n (1 - p) p)
5098 @end example
5099 >>>)
5101 @opencatbox{Categories:}
5102 @category{Package distrib}
5103 @closecatbox
5105 @end deffn
5108 @anchor{skewness_binomial}
5109 @deffn {Function} skewness_binomial (@var{n},@var{p})
5110 Returns the skewness coefficient of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer. To make use of this function, write first @code{load("distrib")}.
5112 The skewness coefficient is
5113 m4_displaymath(
5114 <<<SK[X] = {1-2p\over \sqrt{np(1-p)}}>>>,
5116 @example
5117                                  1 - 2 p
5118                     SK[X] = -----------------
5119                             sqrt(n (1 - p) p)
5120 @end example
5122 >>>)
5124 @opencatbox{Categories:}
5125 @category{Package distrib}
5126 @closecatbox
5128 @end deffn
5131 @anchor{kurtosis_binomial}
5132 @deffn {Function} kurtosis_binomial (@var{n},@var{p})
5133 Returns the kurtosis coefficient of a m4_Binomial_RV(n,p) random variable, with @math{0 \leq p \leq 1} and @math{n} a positive integer. To make use of this function, write first @code{load("distrib")}.
5135 The kurtosis coefficient is
5136 m4_displaymath(
5137 <<<KU[X] = {1-6p(1-p)\over np(1-p)}>>>,
5139 @example
5140                              1 - 6 (1 - p) p
5141                      KU[X] = ---------------
5142                                n (1 - p) p
5143 @end example
5145 >>>)
5147 @opencatbox{Categories:}
5148 @category{Package distrib}
5149 @closecatbox
5151 @end deffn
5154 @anchor{random_binomial}
5155 @deffn {Function} random_binomial (@var{n},@var{p}) @
5156 @fname{random_binomial} (@var{n},@var{p},@var{m})
5158 Returns a m4_Binomial_RV(n,p) random variate, with @math{0 \leq p \leq 1} and @math{n} a positive integer. Calling @code{random_binomial} with a third argument @var{m}, a random sample of size @var{m} will be simulated.
5160 The implemented algorithm is based on the one described in Kachitvichyanukul, V. and Schmeiser, B.W. (1988) @var{Binomial Random Variate Generation}. Communications of the ACM, 31, Feb., 216.
5162 To make use of this function, write first @code{load("distrib")}.
5164 @opencatbox{Categories:}
5165 @category{Package distrib}
5166 @category{Random numbers}
5167 @closecatbox
5169 @end deffn
5171 @node Poisson Random Variable, Bernoulli Random Variable, Binomial Random Variable, Functions and Variables for discrete distributions
5172 @subsection Poisson Random Variable
5174 The @emph{Poisson distribution} is a discrete probability
5175 distribution. It is the probability that a given number of events
5176 occur in a fixed interval when the events occur independently of the
5177 time of the last event, and the events occur with a known constant
5178 rate.
5180 @anchor{pdf_poisson}
5181 @deffn {Function} pdf_poisson (@var{x},@var{m})
5182 Returns the value at @var{x} of the probability function of a m4_Poisson_RV(m) random variable, with @math{m>0}. To make use of this function, write first @code{load("distrib")}.
5184 The pdf is
5185 m4_displaymath(
5186 <<<f(x; m) = {m^x e^{-m}\over x!}>>>,
5188 @example
5189                                    x   - m
5190                                   m  %e
5191                         f(x, m) = --------
5192                                      x!
5193 @end example
5195 >>>)
5197 @opencatbox{Categories:}
5198 @category{Package distrib}
5199 @closecatbox
5201 @end deffn
5204 @anchor{cdf_poisson}
5205 @deffn {Function} cdf_poisson (@var{x},@var{m})
5206 Returns the value at @var{x} of the distribution function of a m4_Poisson_RV(m) random variable, with @math{m>0}.
5208 The cdf is
5209 m4_displaymath(
5210 <<<F(x; m) = Q(\lfloor x \rfloor + 1, m)>>>,
5212 @example
5213       F(x, m) = gamma_incomplete_regularized(floor(x) + 1, m)
5214 @end example
5215 >>>)
5216 @ifnotinfo
5217 where @math{Q(x,m)} is the @ref{gamma_incomplete_regularized}
5218 function.
5219 @end ifnotinfo
5221 @c ===beg===
5222 @c load ("distrib")$
5223 @c cdf_poisson(3,5);
5224 @c float(%);
5225 @c ===end===
5226 @example
5227 (%i1) load ("distrib")$
5228 @group
5229 (%i2) cdf_poisson(3,5);
5230 (%o2)          gamma_incomplete_regularized(4, 5)
5231 @end group
5232 @group
5233 (%i3) float(%);
5234 (%o3)                  0.2650259152973619
5235 @end group
5236 @end example
5238 @opencatbox{Categories:}
5239 @category{Package distrib}
5240 @closecatbox
5242 @end deffn
5245 @anchor{quantile_poisson}
5246 @deffn {Function} quantile_poisson (@var{q},@var{m})
5247 Returns the @var{q}-quantile of a m4_Poisson_RV(m) random variable, with @math{m>0}; in other words, this is the inverse of @code{cdf_poisson}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
5249 @opencatbox{Categories:}
5250 @category{Package distrib}
5251 @closecatbox
5253 @end deffn
5256 @anchor{mean_poisson}
5257 @deffn {Function} mean_poisson (@var{m})
5258 Returns the mean of a m4_Poisson_RV(m) random variable, with  @math{m>0}. To make use of this function, write first @code{load("distrib")}.
5260 The mean is
5261 m4_displaymath(
5262 <<<E[X] = m>>>,
5264 @example
5265                             E[X] = m
5266 @end example
5267 >>>)
5269 @opencatbox{Categories:}
5270 @category{Package distrib}
5271 @closecatbox
5273 @end deffn
5276 @anchor{var_poisson}
5277 @deffn {Function} var_poisson (@var{m})
5278 Returns the variance of a m4_Poisson_RV(m) random variable, with  @math{m>0}. To make use of this function, write first @code{load("distrib")}.
5280 The variance is
5281 m4_displaymath(
5282 <<<V[X] = m>>>,
5284 @example
5285                             V[X] = m
5286 @end example
5287 >>>)
5289 @opencatbox{Categories:}
5290 @category{Package distrib}
5291 @closecatbox
5293 @end deffn
5296 @anchor{std_poisson}
5297 @deffn {Function} std_poisson (@var{m})
5298 Returns the standard deviation of a m4_Poisson_RV(m) random variable, with @math{m>0}. To make use of this function, write first @code{load("distrib")}.
5300 The standard deviation is
5301 m4_displaymath(
5302 <<<V[X] = \sqrt{m}>>>,
5304 @example
5305                          D[X] = sqrt(m)
5306 @end example
5307 >>>)
5309 @opencatbox{Categories:}
5310 @category{Package distrib}
5311 @closecatbox
5313 @end deffn
5316 @anchor{skewness_poisson}
5317 @deffn {Function} skewness_poisson (@var{m})
5318 Returns the skewness coefficient of a m4_Poisson_RV(m) random variable, with @math{m>0}. To make use of this function, write first @code{load("distrib")}.
5320 The skewness is
5321 m4_displaymath(
5322 <<<SK[X] = {1\over \sqrt{m}}>>>,
5324 @example
5325                                     1
5326                          SK[X] = -------
5327                                  sqrt(m)
5328 @end example
5330 >>>)
5332 @opencatbox{Categories:}
5333 @category{Package distrib}
5334 @closecatbox
5336 @end deffn
5339 @anchor{kurtosis_poisson}
5340 @deffn {Function} kurtosis_poisson (@var{m})
5341 Returns the kurtosis coefficient of a Poisson random variable  @math{Poi(m)}, with @math{m>0}. To make use of this function, write first @code{load("distrib")}.
5343 The kurtosis coefficient is
5344 m4_displaymath(
5345 <<<KU[X] = {1\over m}>>>,
5347 @example
5348                                     1
5349                             KU[X] = -
5350                                     m
5351 @end example
5352 >>>)
5354 @opencatbox{Categories:}
5355 @category{Package distrib}
5356 @closecatbox
5358 @end deffn
5361 @anchor{random_poisson}
5362 @deffn {Function} random_poisson (@var{m}) @
5363 @fname{random_poisson} (@var{m},@var{n})
5365 Returns a m4_Poisson_RV(m) random variate, with @math{m>0}. Calling @code{random_poisson} with a second argument @var{n}, a random sample of size @var{n} will be simulated.
5367 The implemented algorithm is the one described in Ahrens, J.H. and Dieter, U. (1982) @var{Computer Generation of Poisson Deviates From Modified Normal Distributions}. ACM Trans. Math. Software, 8, 2, June,163-179.
5369 To make use of this function, write first @code{load("distrib")}.
5371 @opencatbox{Categories:}
5372 @category{Package distrib}
5373 @category{Random numbers}
5374 @closecatbox
5376 @end deffn
5378 @node Bernoulli Random Variable, Geometric Random Variable, Poisson Random Variable, Functions and Variables for discrete distributions
5379 @subsection Bernoulli Random Variable
5381 The @emph{Bernoulli distribution} is a discrete probability
5382 distribution which takes on two values, 0 and 1.  The value 1 occurs
5383 with probability @math{p}, and 0 occurs with probabilty @math{1-p}.
5385 It is equivalent to the m4_Binomial_RV(1,p) distribution (@pxref{Binomial Random Variable})
5387 @anchor{pdf_bernoulli}
5388 @deffn {Function} pdf_bernoulli (@var{x},@var{p})
5389 Returns the value at @var{x} of the probability function of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}.
5391 The m4_Bernoulli_RV(p) random variable is equivalent to the m4_Binomial_RV(1,p).
5393 The mean is
5394 m4_displaymath(
5395 <<<f(x; p) = p^x (1-p)^{1-x}>>>,
5397 @example
5398                                        1 - x  x
5399                       f(x, p) = (1 - p)      p
5400 @end example
5402 >>>)
5404 @c ===beg===
5405 @c load ("distrib")$
5406 @c pdf_bernoulli(1,p);
5407 @c ===end===
5408 @example
5409 (%i1) load ("distrib")$
5410 @group
5411 (%i2) pdf_bernoulli(1,p);
5412 (%o2)                           p
5413 @end group
5414 @end example
5416 @opencatbox{Categories:}
5417 @category{Package distrib}
5418 @closecatbox
5420 @end deffn
5423 @anchor{cdf_bernoulli}
5424 @deffn {Function} cdf_bernoulli (@var{x},@var{p})
5425 Returns the value at @var{x} of the distribution function of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}. To make use of this function, write first @code{load("distrib")}.
5427 The cdf is
5428 m4_displaymath(
5429 <<<F(x; p) = I_{1-p}(1-\lfloor x \rfloor, \lfloor x \rfloor + 1)>>>,
5431 @example
5432  F(x, n, p) = beta_incomplete_regularized(n - floor(x), floor(x) + 1, 
5433                                                                     1 - p)
5434 @end example
5436 >>>)
5438 @opencatbox{Categories:}
5439 @category{Package distrib}
5440 @closecatbox
5442 @end deffn
5445 @anchor{quantile_bernoulli}
5446 @deffn {Function} quantile_bernoulli (@var{q},@var{p})
5447 Returns the @var{q}-quantile of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}; in other words, this is the inverse of @code{cdf_bernoulli}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
5449 @opencatbox{Categories:}
5450 @category{Package distrib}
5451 @closecatbox
5453 @end deffn
5456 @anchor{mean_bernoulli}
5457 @deffn {Function} mean_bernoulli (@var{p})
5458 Returns the mean of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}.
5460 The m4_Bernoulli_RV(p) random variable is equivalent to the m4_Binomial_RV(1,p).
5462 The mean is
5463 m4_displaymath(
5464 <<<E[X] = p>>>,
5466 @example
5467                             E[X] = p
5468 @end example
5469 >>>)
5471 @c ===beg===
5472 @c load ("distrib")$
5473 @c mean_bernoulli(p);
5474 @c ===end===
5475 @example
5476 (%i1) load ("distrib")$
5477 @group
5478 (%i2) mean_bernoulli(p);
5479 (%o2)                           p
5480 @end group
5481 @end example
5483 @opencatbox{Categories:}
5484 @category{Package distrib}
5485 @closecatbox
5487 @end deffn
5490 @anchor{var_bernoulli}
5491 @deffn {Function} var_bernoulli (@var{p})
5492 Returns the variance of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}.
5494 The m4_Bernoulli_RV(p) random variable is equivalent to the m4_Binomial_RV(1,p).
5496 The variance is
5497 m4_displaymath(
5498 <<<V[X] = p(1-p)>>>,
5500 @example
5501                         V[X] = (1 - p) p
5502 @end example
5503 >>>)
5505 @c ===beg===
5506 @c load ("distrib")$
5507 @c var_bernoulli(p);
5508 @c ===end===
5509 @example
5510 (%i1) load ("distrib")$
5511 @group
5512 (%i2) var_bernoulli(p);
5513 (%o2)                       (1 - p) p
5514 @end group
5515 @end example
5517 @opencatbox{Categories:}
5518 @category{Package distrib}
5519 @closecatbox
5521 @end deffn
5524 @anchor{std_bernoulli}
5525 @deffn {Function} std_bernoulli (@var{p})
5526 Returns the standard deviation of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}.
5528 The m4_Bernoulli_RV(p) random variable is equivalent to the m4_Binomial_RV(1,p).
5530 The standard deviation is
5531 m4_displaymath(
5532 <<<D[X] = \sqrt{p(1-p)}>>>,
5534 @example
5535                      D[X] = sqrt((1 - p) p)
5536 @end example
5538 >>>)
5540 @c ===beg===
5541 @c load ("distrib")$
5542 @c std_bernoulli(p);
5543 @c ===end===
5544 @example
5545 (%i1) load ("distrib")$
5546 @group
5547 (%i2) std_bernoulli(p);
5548 (%o2)                    sqrt((1 - p) p)
5549 @end group
5550 @end example
5552 @opencatbox{Categories:}
5553 @category{Package distrib}
5554 @closecatbox
5556 @end deffn
5559 @anchor{skewness_bernoulli}
5560 @deffn {Function} skewness_bernoulli (@var{p})
5561 Returns the skewness coefficient of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}.
5563 The m4_Bernoulli_RV(p) random variable is equivalent to the m4_Binomial_RV(1,p).
5565 The skewness coefficient is
5566 m4_displaymath(
5567 <<<SK[X] = {1-2p \over \sqrt{p(1-p)}}>>>,
5569 @example
5570                                  1 - 2 p
5571                      SK[X] = ---------------
5572                              sqrt((1 - p) p)
5573 @end example
5575 >>>)
5577 @c ===beg===
5578 @c load ("distrib")$
5579 @c skewness_bernoulli(p);
5580 @c ===end===
5581 @example
5582 (%i1) load ("distrib")$
5583 @group
5584 (%i2) skewness_bernoulli(p);
5585                              1 - 2 p
5586 (%o2)                    ---------------
5587                          sqrt((1 - p) p)
5588 @end group
5589 @end example
5591 @opencatbox{Categories:}
5592 @category{Package distrib}
5593 @closecatbox
5595 @end deffn
5598 @anchor{kurtosis_bernoulli}
5599 @deffn {Function} kurtosis_bernoulli (@var{p})
5600 Returns the kurtosis coefficient of a m4_Bernoulli_RV(p) random variable, with @math{0 \leq p \leq 1}.
5602 The m4_Bernoulli_RV(p) random variable is equivalent to the m4_Binomial_RV(1,p).
5604 The kurtosis coefficient is
5605 m4_displaymath(
5606 <<<KU[X] = {1-6p(1-p) \over p(1-p)}>>>,
5608 @example
5609                              1 - 6 (1 - p) p
5610                      KU[X] = ---------------
5611                                 (1 - p) p
5612 @end example
5614 >>>)
5616 @c ===beg===
5617 @c load ("distrib")$
5618 @c kurtosis_bernoulli(p);
5619 @c ===end===
5620 @example
5621 (%i1) load ("distrib")$
5622 @group
5623 (%i2) kurtosis_bernoulli(p);
5624                          1 - 6 (1 - p) p
5625 (%o2)                    ---------------
5626                             (1 - p) p
5627 @end group
5628 @end example
5630 @opencatbox{Categories:}
5631 @category{Package distrib}
5632 @closecatbox
5634 @end deffn
5637 @anchor{random_bernoulli}
5638 @deffn {Function} random_bernoulli (@var{p}) @
5639 @fname{random_bernoulli} (@var{p},@var{n})
5641 Returns a m4_Bernoulli_RV(p) random variate, with @math{0 \leq p \leq 1}. Calling @code{random_bernoulli} with a second argument @var{n}, a random sample of size @var{n} will be simulated.
5643 This is a direct application of the @code{random} built-in Maxima function.
5645 See also @mrefdot{random} To make use of this function, write first @code{load("distrib")}.
5647 @opencatbox{Categories:}
5648 @category{Package distrib}
5649 @category{Random numbers}
5650 @closecatbox
5652 @end deffn
5654 @node Geometric Random Variable, Discrete Uniform Random Variable, Bernoulli Random Variable, Functions and Variables for discrete distributions
5655 @subsection Geometric Random Variable
5657 The @emph{Geometric distibution} is a discrete probability
5658 distribution.  It is the distribution of the number 
5659 Bernoulli trials that fail before the first success.
5661 Consider flipping a biased coin where heads occurs with probablity
5662 @math{p}.   Then the probability of @math{k-1} tails in a row followed
5663 by heads is given by the m4_Geometric_RV(p) distribution.
5665 @anchor{pdf_geometric}
5666 @deffn {Function} pdf_geometric (@var{x},@var{p})
5667 Returns the value at @var{x} of the probability function of a m4_Geometric_RV(p) random variable, with
5668 @math{0 < p \leq 1}
5670 The pdf is
5671 m4_displaymath(
5672 <<<f(x; p) = p(1-p)^x>>>,
5674 @example
5675                                         x
5676                        f(x, p) = (1 - p)  p
5677 @end example
5679 >>>)
5681 This is interpreted as the probability of @math{x} failures before the first success.
5683 @code{load("distrib")} loads this function.
5685 @opencatbox{Categories:}
5686 @category{Package distrib}
5687 @closecatbox
5689 @end deffn
5692 @anchor{cdf_geometric}
5693 @deffn {Function} cdf_geometric (@var{x},@var{p})
5694 Returns the value at @var{x} of the distribution function of a m4_Geometric_RV(p) random variable, with
5695 @math{0 < p \leq  1}
5697 The cdf is
5698 m4_displaymath(
5699 <<<1-(1-p)^{1 + \lfloor x \rfloor}>>>,
5701 @example
5702                                       floor(x) + 1
5703                  F(x, p) = 1 - (1 - p)
5704 @end example
5706 >>>)
5708 @code{load("distrib")} loads this function.
5710 @opencatbox{Categories:}
5711 @category{Package distrib}
5712 @closecatbox
5714 @end deffn
5717 @anchor{quantile_geometric}
5718 @deffn {Function} quantile_geometric (@var{q},@var{p})
5719 Returns the @var{q}-quantile of a m4_Geometric_RV(p) random variable, with
5720 @ifnottex
5721 @math{0 < p <= 1};
5722 @end ifnottex
5723 @tex
5724 @math{0 < p \leq 1};
5725 @end tex
5726 in other words, this is the inverse of @code{cdf_geometric}.
5727 Argument @var{q} must be an element of @math{[0,1]}.
5729 The probability from which the quantile is derived is defined as @math{p (1 - p)^x}.
5730 This is interpreted as the probability of @math{x} failures before the first success.
5732 @code{load("distrib")} loads this function.
5734 @opencatbox{Categories:}
5735 @category{Package distrib}
5736 @closecatbox
5738 @end deffn
5741 @anchor{mean_geometric}
5742 @deffn {Function} mean_geometric (@var{p})
5743 Returns the mean of a m4_Geometric_RV(p) random variable, with
5744 @math{0 < p \leq 1}.
5746 The mean is
5747 m4_displaymath(
5748 <<<E[X] = {1\over p} - 1>>>,
5750 @example
5751                                  1
5752                           E[X] = - - 1
5753                                  p
5754 @end example
5756 >>>)
5758 The probability from which the mean is derived is defined as @math{p (1 - p)^x}.
5759 This is interpreted as the probability of @math{x} failures before the first success.
5761 @code{load("distrib")} loads this function.
5763 @opencatbox{Categories:}
5764 @category{Package distrib}
5765 @closecatbox
5767 @end deffn
5770 @anchor{var_geometric}
5771 @deffn {Function} var_geometric (@var{p})
5772 Returns the variance of a m4_Geometric_RV(p) random variable, with
5773 @math{0 < p \leq 1}.
5775 The variance is
5776 m4_displaymath(
5777 <<<V[X] = {1-p\over p^2}>>>,
5779 @example
5780                                  1 - p
5781                           V[X] = -----
5782                                    2
5783                                   p
5784 @end example
5786 >>>)
5788 @code{load("distrib")} loads this function.
5790 @opencatbox{Categories:}
5791 @category{Package distrib}
5792 @closecatbox
5794 @end deffn
5797 @anchor{std_geometric}
5798 @deffn {Function} std_geometric (@var{p})
5799 Returns the standard deviation of a m4_Geometric_RV(p) random variable, with
5800 @math{0 < p \leq 1}.
5802 m4_displaymath(
5803 <<<D[X] = {\sqrt{1-p} \over p}>>>,
5805 @example
5806                               sqrt(1 - p)
5807                        D[X] = -----------
5808                                    p
5809 @end example
5811 >>>)
5813 @code{load("distrib")} loads this function.
5815 @opencatbox{Categories:}
5816 @category{Package distrib}
5817 @closecatbox
5819 @end deffn
5822 @anchor{skewness_geometric}
5823 @deffn {Function} skewness_geometric (@var{p})
5824 Returns the skewness coefficient of a m4_Geometric_RV(p) random variable, with
5825 @math{0 < p \leq 1}.
5827 The skewness coefficient is
5828 m4_displaymath(
5829 <<<SK[X] = {2-p \over \sqrt{1-p}}>>>,
5831 @example
5832                                   2 - p
5833                        SK[X] = -----------
5834                                sqrt(1 - p)
5835 @end example
5837 >>>)
5839 @code{load("distrib")} loads this function.
5841 @opencatbox{Categories:}
5842 @category{Package distrib}
5843 @closecatbox
5845 @end deffn
5848 @anchor{kurtosis_geometric}
5849 @deffn {Function} kurtosis_geometric (@var{p})
5850 Returns the kurtosis coefficient of a geometric random variable  m4_Geometric_RV(p), with
5851 @math{0 < p \leq 1}.
5853 The kurtosis coefficient is
5854 m4_displaymath(
5855 <<<KU[X] = {p^2-6p+6 \over 1-p}>>>,
5857 @example
5858                                2
5859                               p  - 6 p + 6
5860                       KU[X] = ------------
5861                                  1 - p
5862 @end example
5864 >>>)
5866 @code{load("distrib")} loads this function.
5868 @opencatbox{Categories:}
5869 @category{Package distrib}
5870 @closecatbox
5872 @end deffn
5875 @anchor{random_geometric}
5876 @deffn {Function} random_geometric (@var{p}) @
5877 @fname{random_geometric} (@var{p},@var{n})
5879 @code{random_geometric(@var{p})} returns one random sample from a m4_Geometric_RV(p) distribution, with
5880 @ifnottex
5881 @math{0 < p <= 1}.
5882 @end ifnottex
5883 @tex
5884 @math{0 < p \leq 1}.
5885 @end tex
5887 @code{random_geometric(@var{p}, @var{n})} returns a list of @var{n} random samples.
5889 The algorithm is based on simulation of Bernoulli trials.
5891 The probability from which the random sample is derived is defined as @math{p (1 - p)^x}.
5892 This is interpreted as the probability of @math{x} failures before the first success.
5894 @code{load("distrib")} loads this function.
5897 @opencatbox{Categories:}
5898 @category{Package distrib}
5899 @category{Random numbers}
5900 @closecatbox
5902 @end deffn
5904 @node Discrete Uniform Random Variable, Hypergeometric Random Variable, Geometric Random Variable, Functions and Variables for discrete distributions
5905 @subsection Discrete Uniform Random Variable
5907 The @emph{Discrete uniform distribution} is a discrete probablity
5908 distribution where a finite number of values are equally likely to
5909 occur.  The values are @math{1,2,3,...,n}.
5911 For example throwing a fair die of 6 sides numbered 1 through 6
5912 follows a m4_DiscreteUniform_RV(1/6) distribution.
5914 @anchor{pdf_discrete_uniform}
5915 @deffn {Function} pdf_discrete_uniform (@var{x},@var{n})
5916 Returns the value at @var{x} of the probability function of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
5918 The pdf is
5919 m4_displaymath(
5920 <<<f(x,n) = {1\over n}>>>,
5922 @example
5923                                        1
5924                              f(x, n) = -
5925                                        n
5926 @end example
5928 >>>)
5930 @opencatbox{Categories:}
5931 @category{Package distrib}
5932 @closecatbox
5934 @end deffn
5937 @anchor{cdf_discrete_uniform}
5938 @deffn {Function} cdf_discrete_uniform (@var{x},@var{n})
5939 Returns the value at @var{x} of the distribution function of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
5941 The cdf is
5942 m4_displaymath(
5943 <<<F(x; n) = {\lfloor x \rfloor \over n}>>>,
5945 @example
5946                                   floor(x)
5947                         F(x, n) = --------
5948                                      n
5949 @end example
5951 >>>)
5953 @opencatbox{Categories:}
5954 @category{Package distrib}
5955 @closecatbox
5957 @end deffn
5960 @anchor{quantile_discrete_uniform}
5961 @deffn {Function} quantile_discrete_uniform (@var{q},@var{n})
5962 Returns the @var{q}-quantile of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer; in other words, this is the inverse of @code{cdf_discrete_uniform}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
5964 @opencatbox{Categories:}
5965 @category{Package distrib}
5966 @closecatbox
5968 @end deffn
5971 @anchor{mean_discrete_uniform}
5972 @deffn {Function} mean_discrete_uniform (@var{n})
5973 Returns the mean of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
5975 The mean is
5976 m4_displaymath(
5977 <<<E[X] = {n+1\over 2}>>>,
5979 @example
5980                                  n + 1
5981                           E[X] = -----
5982                                    2
5983 @end example
5985 >>>)
5987 @opencatbox{Categories:}
5988 @category{Package distrib}
5989 @closecatbox
5991 @end deffn
5994 @anchor{var_discrete_uniform}
5995 @deffn {Function} var_discrete_uniform (@var{n})
5996 Returns the variance of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
5998 The variance is
5999 m4_displaymath(
6000 <<<V[X] = {n^2-1 \over 12}>>>,
6002 @example
6003                                   2
6004                                  n  - 1
6005                           V[X] = ------
6006                                    12
6007 @end example
6009 >>>)
6011 @opencatbox{Categories:}
6012 @category{Package distrib}
6013 @closecatbox
6015 @end deffn
6018 @anchor{std_discrete_uniform}
6019 @deffn {Function} std_discrete_uniform (@var{n})
6020 Returns the standard deviation of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
6022 The standard deviation is
6023 m4_displaymath(
6024 <<<D[X] = {\sqrt{n^2-1} \over 2\sqrt{3}}>>>,
6026 @example
6027                                     2
6028                               sqrt(n  - 1)
6029                        D[X] = ------------
6030                                2 sqrt(3)
6031 @end example
6033 >>>)
6035 @opencatbox{Categories:}
6036 @category{Package distrib}
6037 @closecatbox
6039 @end deffn
6042 @anchor{skewness_discrete_uniform}
6043 @deffn {Function} skewness_discrete_uniform (@var{n})
6044 Returns the skewness coefficient of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
6046 The skewness coefficient is
6047 m4_displaymath(
6048 <<<SK[X] = 0>>>,
6050 @example
6051                             SK[X] = 0
6052 @end example
6053 >>>)
6055 @opencatbox{Categories:}
6056 @category{Package distrib}
6057 @closecatbox
6059 @end deffn
6062 @anchor{kurtosis_discrete_uniform}
6063 @deffn {Function} kurtosis_discrete_uniform (@var{n})
6064 Returns the kurtosis coefficient of a m4_DiscreteUniform_RV(n) random variable, with @math{n} a strictly positive integer. To make use of this function, write first @code{load("distrib")}.
6066 The kurtosis coefficient is
6067 m4_displaymath(
6068 <<<KU[X] = - {6(n^2+1)\over 5 (n^2-1)}>>>,
6070 @example
6071                                     2
6072                                 6 (n  + 1)
6073                    KU[X] = - -----------------
6074                              5 (n - 1) (n + 1)
6076 @end example
6077 >>>)
6079 @opencatbox{Categories:}
6080 @category{Package distrib}
6081 @closecatbox
6083 @end deffn
6086 @anchor{random_discrete_uniform}
6087 @deffn {Function} random_discrete_uniform (@var{n}) @
6088 @fname{random_discrete_uniform} (@var{n},@var{m})
6090 Returns a m4_DiscreteUniform_RV(n) random variate, with @math{n} a strictly positive integer. Calling @code{random_discrete_uniform} with a second argument @var{m}, a random sample of size @var{m} will be simulated.
6092 This is a direct application of the @code{random} built-in Maxima function.
6094 See also @mrefdot{random} To make use of this function, write first @code{load("distrib")}.
6096 @opencatbox{Categories:}
6097 @category{Package distrib}
6098 @category{Random numbers}
6099 @closecatbox
6101 @end deffn
6103 @node Hypergeometric Random Variable, Negative Binomial Random Variable, Discrete Uniform Random Variable, Functions and Variables for discrete distributions
6104 @subsection Hypergeometric Random Variable
6106 The @emph{hypergeometric distribution} is a discrete probability
6107 distribution.
6109 Let @math{n_1} be the number of objects of a class
6110 @math{A} and @math{n_2} be the number of objects of class @math{B}.
6111 We take out @math{n} objects, @emph{without} replacment.  Then the
6112 hypergeometric distribution is the probability that exactly @math{k}
6113 objects are from class @math{A}.  Of course @math{n \leq n_1 + n_2}.
6115 @anchor{pdf_hypergeometric}
6116 @deffn {Function} pdf_hypergeometric (@var{x},@var{n_1},@var{n_2},@var{n})
6117 Returns the value at @var{x} of the probability function of a m4_Hypergeometric_RV(n1,n2,n)
6118 random variable, with @math{n_1}, @math{n_2} and @math{n} non negative
6119 integers and @math{n\leq n_1+n_2}.
6120 Being @math{n_1} the number of objects of class A, @math{n_2} the number of objects of class B, and
6121 @math{n} the size of the sample without replacement, this function returns the probability of
6122 event "exactly @var{x} objects are of class A". 
6124 To make use of this function, write first @code{load("distrib")}.
6126 The pdf is
6127 m4_displaymath(
6128 <<<f(x; n_1, n_2, n) = {\displaystyle{n_1\choose x} {n_2 \choose n-x}
6129 \over \displaystyle{n_2+n_1 \choose n}}>>>,
6131 @example
6132                            binomial(n_1, x) binomial(n_2, n - x)
6133        f(x, n_1, n_2, n) = -----------------------------------
6134                                   binomial(n_2 + n_1, n)
6135 @end example
6137 >>>)
6139 @opencatbox{Categories:}
6140 @category{Package distrib}
6141 @closecatbox
6143 @end deffn
6146 @anchor{cdf_hypergeometric}
6147 @deffn {Function} cdf_hypergeometric (@var{x},@var{n_1},@var{n_2},@var{n})
6148 Returns the value at @var{x} of the distribution function of a m4_Hypergeometric_RV(n1,n2,n) 
6149 random variable, with @math{n_1}, @math{n_2} and @math{n} non negative
6150 integers and @math{n\leq n_1+n_2}. 
6151 See @code{pdf_hypergeometric} for a more complete description.
6153 To make use of this function, write first @code{load("distrib")}.
6155 The cdf is
6156 m4_displaymath(
6157 <<<F(x; n_1, n_2, n) = {n_2+n_1\choose n}^{-1}
6158 \sum_{k=0}^{\lfloor x \rfloor} {n_1 \choose k} {n_2 \choose n - k}>>>,
6160 @example
6161                       floor(x)
6162                       ====
6163                       \
6164                        >       binomial(n_1, k) binomial(n_2, n - k)
6165                       /
6166                       ====
6167                       k = 0
6168   F(x, n_1, n_2, n) = --------------------------------------------
6169                                   binomial(n_2 + n_1, n)
6170 @end example
6172 >>>)
6174 @opencatbox{Categories:}
6175 @category{Package distrib}
6176 @closecatbox
6178 @end deffn
6181 @anchor{quantile_hypergeometric}
6182 @deffn {Function} quantile_hypergeometric (@var{q},@var{n1},@var{n2},@var{n})
6183 Returns the @var{q}-quantile of a m4_Hypergeometric_RV(n1,n2,n) random
6184 variable, with @var{n1}, @var{n2} and @var{n} non negative integers
6185 and @math{n\leq n1+n2}; in other words, this is the inverse of @code{cdf_hypergeometric}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
6187 @opencatbox{Categories:}
6188 @category{Package distrib}
6189 @closecatbox
6191 @end deffn
6194 @anchor{mean_hypergeometric}
6195 @deffn {Function} mean_hypergeometric (@var{n_1},@var{n_2},@var{n})
6196 Returns the mean of a discrete uniform random variable m4_Hypergeometric_RV(n_1,n_2,n), with @math{n_1}, @math{n_2} and @math{n} non negative integers and @math{n\leq n_1+n_2}. To make use of this function, write first @code{load("distrib")}.
6198 The mean is
6199 m4_displaymath(
6200 <<<E[X] = {n n_1\over n_2+n_1}>>>,
6202 @example
6203                                  n n_1
6204                          E[X] = -------
6205                                 n_2 + n_1
6207 @end example
6209 >>>)
6211 @opencatbox{Categories:}
6212 @category{Package distrib}
6213 @closecatbox
6215 @end deffn
6218 @anchor{var_hypergeometric}
6219 @deffn {Function} var_hypergeometric (@var{n1},@var{n2},@var{n})
6220 Returns the variance of a hypergeometric  random variable m4_Hypergeometric_RV(n_1,n_2,n), with @math{n1}, @math{n2} and @math{n} non negative integers and @math{n<=n1+n2}. To make use of this function, write first @code{load("distrib")}.
6222 The variance is
6223 m4_displaymath(
6224 <<<V[X] = {n n_1 n_2 (n_1 + n_2 - n)
6225  \over
6226  (n_1 + n_2 - 1) (n_1 + n_2)^2}>>>,
6228 @example
6229                         n n_1 n_2 (n_2 + n_1 - n)
6230                 V[X] = ----------------------------
6231                                                   2
6232                        (n_2 + n_1 - 1) (n_2 + n_1)
6233 @end example
6235 >>>)
6237 @opencatbox{Categories:}
6238 @category{Package distrib}
6239 @closecatbox
6241 @end deffn
6244 @anchor{std_hypergeometric}
6245 @deffn {Function} std_hypergeometric (@var{n_1},@var{n_2},@var{n})
6246 Returns the standard deviation of a m4_Hypergeometric_RV(n_1,n_2,n) random variable, with @math{n_1}, @math{n_2} and @math{n} non negative integers and @math{n\leq n_1+n_2}. To make use of this function, write first @code{load("distrib")}.
6248 The standard deviation is
6249 m4_displaymath(
6250 <<<D[X] = {1\over n_1+n_2}\sqrt{n n_1 n_2 (n_1 + n_2 - n) \over n_1+n_2-1}>>>,
6252 @example
6253                           n n_1 n_2 (n_2 + n_1 - n)
6254                      sqrt(-------------------------)
6255                                 n_2 + n_1 - 1
6256               D[X] = -------------------------------
6257                                 n_2 + n_1
6258 @end example
6260 >>>)
6262 @opencatbox{Categories:}
6263 @category{Package distrib}
6264 @closecatbox
6266 @end deffn
6269 @anchor{skewness_hypergeometric}
6270 @deffn {Function} skewness_hypergeometric (@var{n_1},@var{n_2},@var{n})
6271 Returns the skewness coefficient of a m4_Hypergeometric_RV(n1,n2,n) random variable, with @math{n_1}, @math{n_2} and @math{n} non negative integers and @math{n\leq n1+n2}. To make use of this function, write first @code{load("distrib")}.
6273 The skewness coefficient is
6274 m4_displaymath(
6275 <<<SK[X] = {(n_2-n_2)(n_1+n_2-2n)\over n_1+n_2-2}
6276 \sqrt{n_1+n_2-1 \over n n_1 n_2 (n_1+n_2-n)}>>>,
6278 @example
6279                                                  n_2 + n_1 - 1
6280         (n_2 - n_1) (n_2 + n_1 - 2 n) sqrt(-------------------------)
6281                                            n n_1 n_2 (n_2 + n_1 - n)
6282 SK[X] = -------------------------------------------------------------
6283                                 n_2 + n_1 - 2
6285 @end example
6287 >>>)
6289 @opencatbox{Categories:}
6290 @category{Package distrib}
6291 @closecatbox
6293 @end deffn
6296 @anchor{kurtosis_hypergeometric}
6297 @deffn {Function} kurtosis_hypergeometric (@var{n_1},@var{n_2},@var{n})
6298 Returns the kurtosis coefficient of a m4_Hypergeometric_RV(n_1,n_2,n) random variable, with @math{n_1}, @math{n_2} and @math{n} non negative integers and @math{n\leq n1+n2}. To make use of this function, write first @code{load("distrib")}.
6300 The kurtosis coefficient is
6301 m4_displaymath(
6303 \eqalign{
6304 KU[X] = &
6305  \left[{C(1)C(0)^2
6306    \over
6307   n n_1 n_2 C(3)C(2)C(n)}\right. \cr
6308   & \times 
6309   \left.\left(
6310     {3n_1n_2\left((n-2)C(0)^2+6nC(n)-n^2C(0)\right)
6311     \over
6312     C(0)^2
6313     }
6314     -6nC(n) + C(0)C(-1)
6315   \right)\right] \cr
6316   &-3
6317 }>>>,
6319 @example
6320                                     2
6321 KU[X] = ((n_2 + n_1 - 1) (n_2 + n_1)
6322                                 2                          2
6323   3 n_1 n_2 ((n - 2) (n_2 + n_1)  + 6 n (n_2 + n_1 - n) - n  (n_2 + n_1))
6324  (-----------------------------------------------------------------------
6325                                           2
6326                                (n_2 + n_1)
6327  - 6 n (n_2 + n_1 - n) + (n_2 + n_1) (n_2 + n_1 + 1)))
6328 /(n n_1 n_2 (n_2 + n_1 - 3) (n_2 + n_1 - 2) (n_2 + n_1 - n)) - 3
6329 @end example
6330 >>>)
6331 @ifnotinfo
6332 where m4_math(C(k) = n_1+n_2-k).
6333 @end ifnotinfo
6335 @opencatbox{Categories:}
6336 @category{Package distrib}
6337 @closecatbox
6339 @end deffn
6342 @anchor{random_hypergeometric}
6343 @deffn {Function} random_hypergeometric (@var{n1},@var{n2},@var{n}) @
6344 @fname{random_hypergeometric} (@var{n1},@var{n2},@var{n},@var{m})
6346 Returns a m4_Hypergeometric_RV(n1,n2,n) random variate, with @var{n1}, @var{n2} and @var{n} non negative integers and @math{n<=n1+n2}. Calling @code{random_hypergeometric} with a fourth argument @var{m}, a random sample of size @var{m} will be simulated.
6348 Algorithm described in Kachitvichyanukul, V., Schmeiser, B.W. (1985) @var{Computer generation of hypergeometric random variates.} Journal of Statistical Computation and Simulation 22, 127-145.
6350 To make use of this function, write first @code{load("distrib")}.
6352 @opencatbox{Categories:}
6353 @category{Package distrib}
6354 @category{Random numbers}
6355 @closecatbox
6357 @end deffn
6359 @node Negative Binomial Random Variable,  , Hypergeometric Random Variable, Functions and Variables for discrete distributions
6360 @subsection Negative Binomial Random Variable
6362 The @emph{negative binomial distribution} is a discrete probability
6363 distribution.  Suppose we have a sequence of Bernoulli trials where
6364 each trial has two outcomes called ``success'' and ``failure'' where
6365 ``success'' occurs with probablity @math{p} and ``failure'' with
6366 probability @math{1-p}.  We observe the sequence until a predefined
6367 number @math{r} of sucesses have occurred.  Then the number of
6368 failures seen will have a m4_NegativeBinomial_RV(r, p) distribution.
6370 @anchor{pdf_negative_binomial}
6371 @deffn {Function} pdf_negative_binomial (@var{x},@var{n},@var{p})
6372 Returns the value at @var{x} of the probability function of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number. To make use of this function, write first @code{load("distrib")}.
6374 The pdf is
6375 m4_displaymath(
6376 <<<f(x; n, p) = {x+n-1 \choose n-1} (1-p)^xp^n>>>,
6378 @example
6379                                    x  n
6380                             (1 - p)  p  gamma(x + n)
6381                f(x, n, p) = ------------------------
6382                                   gamma(n) x!
6383 @end example
6385 >>>)
6387 @opencatbox{Categories:}
6388 @category{Package distrib}
6389 @closecatbox
6391 @end deffn
6394 @anchor{cdf_negative_binomial}
6395 @deffn {Function} cdf_negative_binomial (@var{x},@var{n},@var{p})
6396 Returns the value at @var{x} of the distribution function of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number.
6398 The cdf is
6399 m4_displaymath(
6400 <<<F(x; n, p) = I_p(n,\lfloor x \rfloor + 1)>>>,
6402 @example
6403    F(x, n, p) = beta_incomplete_regularized(n, floor(x) + 1, p)
6404 @end example
6405 >>>)
6406 @ifnotinfo
6407 where m4_math(I_p(a,b)) is the @ref{beta_incomplete_regularized} function.
6408 @end ifnotinfo
6410 @c ===beg===
6411 @c load ("distrib")$
6412 @c cdf_negative_binomial(3,4,1/8);
6413 @c ===end===
6414 @example
6415 (%i1) load ("distrib")$
6416 @group
6417 (%i2) cdf_negative_binomial(3,4,1/8);
6418                               3271
6419 (%o2)                        ------
6420                              524288
6421 @end group
6422 @end example
6424 @opencatbox{Categories:}
6425 @category{Package distrib}
6426 @closecatbox
6428 @end deffn
6431 @anchor{quantile_negative_binomial}
6432 @deffn {Function} quantile_negative_binomial (@var{q},@var{n},@var{p})
6433 Returns the @var{q}-quantile of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number; in other words, this is the inverse of @code{cdf_negative_binomial}. Argument @var{q} must be an element of @math{[0,1]}. To make use of this function, write first @code{load("distrib")}.
6435 @opencatbox{Categories:}
6436 @category{Package distrib}
6437 @closecatbox
6439 @end deffn
6442 @anchor{mean_negative_binomial}
6443 @deffn {Function} mean_negative_binomial (@var{n},@var{p})
6444 Returns the mean of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number. To make use of this function, write first @code{load("distrib")}.
6446 The mean is
6447 m4_displaymath(
6448 <<<E[X] = {n(1-p)\over p}>>>,
6450 @example
6451                                n (1 - p)
6452                         E[X] = ---------
6453                                    p
6454 @end example
6455 >>>)
6457 @opencatbox{Categories:}
6458 @category{Package distrib}
6459 @closecatbox
6461 @end deffn
6464 @anchor{var_negative_binomial}
6465 @deffn {Function} var_negative_binomial (@var{n},@var{p})
6466 Returns the variance of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number. To make use of this function, write first @code{load("distrib")}.
6468 The variance is
6469 m4_displaymath(
6470 <<<V[X] = {n(1-p)\over p^2}>>>,
6472 @example
6473                                n (1 - p)
6474                         V[X] = ---------
6475                                    2
6476                                   p
6477 @end example
6478 >>>)
6480 @opencatbox{Categories:}
6481 @category{Package distrib}
6482 @closecatbox
6484 @end deffn
6487 @anchor{std_negative_binomial}
6488 @deffn {Function} std_negative_binomial (@var{n},@var{p})
6489 Returns the standard deviation of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number. To make use of this function, write first @code{load("distrib")}.
6491 The standard deviation is
6492 m4_displaymath(
6493 <<<D[X] = {\sqrt{n(1-p)}\over p}>>>,
6495 @example
6496                             sqrt(n (1 - p))
6497                      D[X] = ---------------
6498                                    p
6499 @end example
6500 >>>)
6502 @opencatbox{Categories:}
6503 @category{Package distrib}
6504 @closecatbox
6506 @end deffn
6509 @anchor{skewness_negative_binomial}
6510 @deffn {Function} skewness_negative_binomial (@var{n},@var{p})
6511 Returns the skewness coefficient of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number. To make use of this function, write first @code{load("distrib")}.
6513 The skewness coefficient is
6514 m4_displaymath(
6515 <<<SK[X] = {2-p \over \sqrt{n(1-p)}}>>>,
6517 @example
6518                                   2 - p
6519                      SK[X] = ---------------
6520                              sqrt(n (1 - p))
6521 @end example
6522 >>>)
6524 @opencatbox{Categories:}
6525 @category{Package distrib}
6526 @closecatbox
6528 @end deffn
6531 @anchor{kurtosis_negative_binomial}
6532 @deffn {Function} kurtosis_negative_binomial (@var{n},@var{p})
6533 Returns the kurtosis coefficient of a m4_NegativeBinomial_RV(n,p) random variable, with @math{0 < p \leq 1} and @math{n} a positive number. To make use of this function, write first @code{load("distrib")}.
6535 The kurtosis coefficient is
6536 m4_displaymath(
6537 <<<KU[X] = {p^2-6p+6 \over n(1-p)}>>>,
6539 @example
6540                                2
6541                               p  - 6 p + 6
6542                       KU[X] = ------------
6543                                n (1 - p)
6544 @end example
6546 >>>)
6548 @opencatbox{Categories:}
6549 @category{Package distrib}
6550 @closecatbox
6552 @end deffn
6555 @anchor{random_negative_binomial}
6556 @deffn {Function} random_negative_binomial (@var{n},@var{p}) @
6557 @fname{random_negative_binomial} (@var{n},@var{p},@var{m})
6559 Returns a m4_NegativeBinomial_RV(n,p) random variate, with @math{0 < p \leq 1} and @math{n} a positive number. Calling @code{random_negative_binomial} with a third argument @var{m}, a random sample of size @var{m} will be simulated.
6561 Algorithm described in Devroye, L. (1986) @var{Non-Uniform Random Variate Generation}. Springer Verlag, p. 480.
6563 To make use of this function, write first @code{load("distrib")}.
6565 @opencatbox{Categories:}
6566 @category{Package distrib}
6567 @category{Random numbers}
6568 @closecatbox
6570 @end deffn
6571 @c Undefine all the m4 macros we defined in this file.
6572 m4_undefine(<<<m4_Normal_RV>>>)