Rename specvar integer-info to *integer-info*
[maxima.git] / doc / info / stats.texi
blob09db4fc54c418b4ddda13f1217d8681547074656
1 @menu
2 * Introduction to stats::
3 * Functions and Variables for inference_result::
4 * Functions and Variables for stats::
5 * Functions and Variables for special distributions::
6 @end menu
8 @node Introduction to stats, Functions and Variables for inference_result, , Package stats
9 @section Introduction to stats
11 Package @code{stats} contains a set of classical statistical inference and
12 hypothesis testing procedures.
14 All these functions return an @code{inference_result} Maxima object which contains
15 the necessary results for population inferences and decision making.
17 Global variable @code{stats_numer} controls whether results are given in 
18 floating point or symbolic and rational format; its default value is @code{true}
19 and results are returned in floating point format.
21 Package @code{descriptive} contains some utilities to manipulate data structures
22 (lists and matrices); for example, to extract subsamples. It also contains some
23 examples on how to use package @code{numericalio} to read data from plain text
24 files. See @code{descriptive} and @code{numericalio} for more details.
26 Package @code{stats} loads packages @code{descriptive}, @code{distrib} and
27 @code{inference_result}.
29 For comments, bugs or suggestions, please contact the author at
31 @var{'mario AT edu DOT xunta DOT es'}.
33 @opencatbox{Categories:}
34 @category{Statistical inference}
35 @category{Share packages}
36 @category{Package stats}
37 @closecatbox
39 @node Functions and Variables for inference_result, Functions and Variables for stats, Introduction to stats, Package stats
40 @section Functions and Variables for inference_result
42 @anchor{inference_result}
43 @deffn {Function} inference_result (@var{title}, @var{values}, @var{numbers})
45 Constructs an @code{inference_result} object of the type returned by the
46 stats functions. Argument @var{title} is a
47 string with the name of the procedure; @var{values} is a list with
48 elements of the form @code{symbol = value} and @var{numbers} is a list
49 with positive integer numbers ranging from one to @code{length(@var{values})},
50 indicating which values will be shown by default.
52 Example:
54 This is a simple example showing results concerning a rectangle. The title of
55 this object is the string @code{"Rectangle"}, it stores five results, named
56 @code{'base}, @code{'height}, @code{'diagonal}, @code{'area},
57 and @code{'perimeter}, but only the first, second, fifth, and fourth
58 will be displayed. The @code{'diagonal} is stored in this object, but it is
59 not displayed; to access its value, make use of function @code{take_inference}.
61 @c ===beg===
62 @c load ("inference_result")$
63 @c b: 3$
64 @c h: 2$
65 @c inference_result("Rectangle",
66 @c                  ['base=b,
67 @c                   'height=h,
68 @c                   'diagonal=sqrt(b^2+h^2),
69 @c                   'area=b*h,
70 @c                   'perimeter=2*(b+h)],
71 @c                  [1,2,5,4] );
72 @c take_inference('diagonal,%);
73 @c ===end===
74 @example
75 (%i1) load("inference_result")$
76 (%i2) b: 3$ h: 2$
77 (%i3) inference_result("Rectangle",
78                         ['base=b,
79                          'height=h,
80                          'diagonal=sqrt(b^2+h^2),
81                          'area=b*h,
82                          'perimeter=2*(b+h)],
83                         [1,2,5,4] );
84                         |   Rectangle
85                         |
86                         |    base = 3
87                         |
88 (%o3)                   |   height = 2
89                         |
90                         | perimeter = 10
91                         |
92                         |    area = 6
93 (%i4) take_inference('diagonal,%);
94 (%o4)                        sqrt(13)
95 @end example
97 See also @mrefdot{take_inference}
99 @opencatbox{Categories:}
100 @category{Package stats}
101 @closecatbox
103 @end deffn
105 @anchor{inferencep}
106 @deffn {Function} inferencep (@var{obj})
108 Returns @code{true} or @code{false}, depending on whether @var{obj} is an
109 @code{inference_result} object or not.
111 @opencatbox{Categories:}
112 @category{Package stats}
113 @closecatbox
115 @end deffn
117 @anchor{items_inference}
118 @deffn {Function} items_inference (@var{obj})
120 Returns a list with the names of the items stored in @var{obj}, which must
121 be an @code{inference_result} object.
123 Example:
125 The @code{inference_result} object stores two values, named @code{'pi} and @code{'e},
126 but only the second is displayed. The @code{items_inference} function returns the names
127 of all items, no matter they are displayed or not.
129 @c ===beg===
130 @c load ("inference_result")$
131 @c inference_result("Hi", ['pi=%pi,'e=%e],[2]);
132 @c items_inference(%);
133 @c ===end===
134 @example
135 (%i1) load("inference_result")$
136 (%i2) inference_result("Hi", ['pi=%pi,'e=%e],[2]);
137                             |   Hi
138 (%o2)                       |
139                             | e = %e
140 (%i3) items_inference(%);
141 (%o3)                        [pi, e]
142 @end example
144 @opencatbox{Categories:}
145 @category{Package stats}
146 @closecatbox
148 @end deffn
150 @anchor{take_inference}
151 @deffn {Function} take_inference @
152 @fname{take_inference} (@var{n}, @var{obj}) @
153 @fname{take_inference} (@var{name}, @var{obj}) @
154 @fname{take_inference} (@var{list}, @var{obj})
156 Returns the @var{n}-th value stored in @var{obj} if @var{n} is a positive integer,
157 or the item named @var{name} if this is the name of an item. If the first
158 argument is a list of numbers and/or symbols, function @code{take_inference} returns
159 a list with the corresponding results.
161 Example:
163 Given an @code{inference_result} object, function @code{take_inference} is
164 called in order to extract some information stored in it.
166 @c ===beg===
167 @c load ("inference_result")$
168 @c b: 3$
169 @c h: 2$
170 @c sol:inference_result("Rectangle",
171 @c                      ['base=b,
172 @c                       'height=h,
173 @c                       'diagonal=sqrt(b^2+h^2),
174 @c                       'area=b*h,
175 @c                       'perimeter=2*(b+h)],
176 @c                      [1,2,5,4] );
177 @c take_inference('base,sol);
178 @c take_inference(5,sol);
179 @c take_inference([1,'diagonal],sol);
180 @c take_inference(items_inference(sol),sol);
181 @c ===end===
182 @example
183 (%i1) load("inference_result")$
184 (%i2) b: 3$ h: 2$
185 (%i3) sol: inference_result("Rectangle",
186                             ['base=b,
187                              'height=h,
188                              'diagonal=sqrt(b^2+h^2),
189                              'area=b*h,
190                              'perimeter=2*(b+h)],
191                             [1,2,5,4] );
192                         |   Rectangle
193                         |
194                         |    base = 3
195                         |
196 (%o3)                   |   height = 2
197                         |
198                         | perimeter = 10
199                         |
200                         |    area = 6
201 (%i4) take_inference('base,sol);
202 (%o4)                           3
203 (%i5) take_inference(5,sol);
204 (%o5)                          10
205 (%i6) take_inference([1,'diagonal],sol);
206 (%o6)                     [3, sqrt(13)]
207 (%i7) take_inference(items_inference(sol),sol);
208 (%o7)                [3, 2, sqrt(13), 6, 10]
209 @end example
211 See also @mrefcomma{inference_result} and @mrefdot{take_inference}
213 @opencatbox{Categories:}
214 @category{Package stats}
215 @closecatbox
217 @end deffn
219 @node Functions and Variables for stats, Functions and Variables for special distributions, Functions and Variables for inference_result, Package stats
220 @section Functions and Variables for stats
222 @anchor{stats_numer}
223 @defvr {Option variable} stats_numer
224 Default value: @code{true}
226 If @code{stats_numer} is @code{true}, inference statistical functions 
227 return their results in floating point numbers. If it is @code{false},
228 results are given in symbolic and rational format.
230 @opencatbox{Categories:}
231 @category{Package stats}
232 @category{Numerical evaluation}
233 @closecatbox
235 @end defvr
237 @anchor{test_mean}
238 @deffn {Function} test_mean @
239 @fname{test_mean} (@var{x}) @
240 @fname{test_mean} (@var{x}, @var{options} ...)
242 This is the mean @var{t}-test. Argument @var{x} is a list or a column matrix
243 containing an one dimensional sample. It also performs an asymptotic test
244 based on the @i{Central Limit Theorem} if option @code{'asymptotic} is
245 @code{true}.
247 Options:
249 @itemize @bullet
251 @item
252 @code{'mean}, default @code{0}, is the mean value to be checked.
254 @item
255 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
256 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
258 @item
259 @code{'dev}, default @code{'unknown}, this is the value of the standard deviation when it is 
260 known; valid values are: @code{'unknown} or a positive expression.
262 @item
263 @code{'conflevel}, default @code{95/100}, confidence level for the confidence interval; it must
264 be an expression which takes a value in (0,1).
266 @item
267 @code{'asymptotic}, default @code{false}, indicates whether it performs an exact @var{t}-test or
268 an asymptotic one based on the @i{Central Limit Theorem};
269 valid values are @code{true} and @code{false}.
271 @end itemize
273 The output of function @code{test_mean} is an @code{inference_result} Maxima object
274 showing the following results:
276 @enumerate
278 @item
279 @code{'mean_estimate}: the sample mean.
281 @item
282 @code{'conf_level}: confidence level selected by the user.
284 @item
285 @code{'conf_interval}: confidence interval for the population mean.
287 @item
288 @code{'method}: inference procedure.
290 @item
291 @code{'hypotheses}: null and alternative hypotheses to be tested.
293 @item
294 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
296 @item
297 @code{'distribution}: distribution of the sample statistic, together with its parameter(s).
299 @item
300 @code{'p_value}: @math{p}-value of the test.
302 @end enumerate
304 Examples:
306 Performs an exact @var{t}-test with unknown variance. The null hypothesis
307 is @math{H_0: mean=50} against the one sided alternative @math{H_1: mean<50};
308 according to the results, the @math{p}-value is too great, there are no
309 evidence for rejecting @math{H_0}.
311 @c ===beg===
312 @c load ("stats")$
313 @c data: [78,64,35,45,45,75,43,74,42,42]$
314 @c test_mean(data,'conflevel=0.9,'alternative='less,'mean=50);
315 @c ===end===
316 @example
317 (%i1) load("stats")$
318 (%i2) data: [78,64,35,45,45,75,43,74,42,42]$
319 (%i3) test_mean(data,'conflevel=0.9,'alternative='less,'mean=50);
320           |                 MEAN TEST
321           |
322           |            mean_estimate = 54.3
323           |
324           |              conf_level = 0.9
325           |
326           | conf_interval = [minf, 61.51314273502712]
327           |
328 (%o3)     |  method = Exact t-test. Unknown variance.
329           |
330           | hypotheses = H0: mean = 50 , H1: mean < 50
331           |
332           |       statistic = .8244705235071678
333           |
334           |       distribution = [student_t, 9]
335           |
336           |        p_value = .7845100411786889
337 @end example
339 This time Maxima performs an asymptotic test, based on the @i{Central Limit Theorem}.
340 The null hypothesis is @math{H_0: equal(mean, 50)} against the two sided alternative @math{H_1: not equal(mean, 50)};
341 according to the results, the @math{p}-value is very small, @math{H_0} should be rejected in
342 favor of the alternative @math{H_1}. Note that, as indicated by the @code{Method} component,
343 this procedure should be applied to large samples.
345 @c ===beg===
346 @c load ("stats")$
347 @c test_mean([36,118,52,87,35,256,56,178,57,57,89,34,25,98,35,
348 @c         98,41,45,198,54,79,63,35,45,44,75,42,75,45,45,
349 @c         45,51,123,54,151],
350 @c         'asymptotic=true,'mean=50);
351 @c ===end===
352 @example
353 (%i1) load("stats")$
354 (%i2) test_mean([36,118,52,87,35,256,56,178,57,57,89,34,25,98,35,
355               98,41,45,198,54,79,63,35,45,44,75,42,75,45,45,
356               45,51,123,54,151],
357               'asymptotic=true,'mean=50);
358           |                       MEAN TEST
359           |
360           |           mean_estimate = 74.88571428571429
361           |
362           |                   conf_level = 0.95
363           |
364           | conf_interval = [57.72848600856194, 92.04294256286663]
365           |
366 (%o2)     |    method = Large sample z-test. Unknown variance.
367           |
368           |       hypotheses = H0: mean = 50 , H1: mean # 50
369           |
370           |             statistic = 2.842831192874313
371           |
372           |             distribution = [normal, 0, 1]
373           |
374           |             p_value = .004471474652002261
375 @end example
377 @opencatbox{Categories:}
378 @category{Package stats}
379 @closecatbox
381 @end deffn
383 @anchor{test_means_difference}
384 @deffn {Function} test_means_difference @
385 @fname{test_means_difference} (@var{x1}, @var{x2}) @
386 @fname{test_means_difference} (@var{x1}, @var{x2}, @var{options} ...)
388 This is the difference of means @var{t}-test for two samples.
389 Arguments @var{x1} and @var{x2} are lists or column matrices
390 containing two independent samples. In case of different unknown variances
391 (see options @code{'dev1}, @code{'dev2} and @code{'varequal} bellow),
392 the degrees of freedom are computed by means of the Welch approximation.
393 It also performs an asymptotic test
394 based on the @i{Central Limit Theorem} if option @code{'asymptotic} is
395 set to @code{true}.
397 Options:
399 @itemize @bullet
401 @item
403 @item
404 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
405 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
407 @item
408 @code{'dev1}, default @code{'unknown}, this is the value of the standard deviation
409 of the @var{x1} sample when it is known; valid values are: @code{'unknown} or a positive expression.
411 @item
412 @code{'dev2}, default @code{'unknown}, this is the value of the standard deviation
413 of the @var{x2} sample when it is known; valid values are: @code{'unknown} or a positive expression.
415 @item
416 @code{'varequal}, default @code{false}, whether variances should be considered to be equal or not;
417 this option takes effect only when @code{'dev1} and/or @code{'dev2} are  @code{'unknown}.
419 @item
420 @code{'conflevel}, default @code{95/100}, confidence level for the confidence interval; it must
421 be an expression which takes a value in (0,1).
423 @item
424 @code{'asymptotic}, default @code{false}, indicates whether it performs an exact @var{t}-test or
425 an asymptotic one based on the @i{Central Limit Theorem};
426 valid values are @code{true} and @code{false}.
428 @end itemize
430 The output of function @code{test_means_difference} is an @code{inference_result} Maxima object
431 showing the following results:
433 @enumerate
435 @item
436 @code{'diff_estimate}: the difference of means estimate.
438 @item
439 @code{'conf_level}: confidence level selected by the user.
441 @item
442 @code{'conf_interval}: confidence interval for the difference of means.
444 @item
445 @code{'method}: inference procedure.
447 @item
448 @code{'hypotheses}: null and alternative hypotheses to be tested.
450 @item
451 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
453 @item
454 @code{'distribution}: distribution of the sample statistic, together with its parameter(s).
456 @item
457 @code{'p_value}: @math{p}-value of the test.
459 @end enumerate
461 Examples:
463 The equality of means is tested with two small samples @var{x} and @var{y},
464 against the alternative @math{H_1: m_1>m_2}, being @math{m_1} and @math{m_2}
465 the populations means; variances are unknown and supposed to be different.
467 @c equivalent code for R:
468 @c x <- c(20.4,62.5,61.3,44.2,11.1,23.7)
469 @c y <- c(1.2,6.9,38.7,20.4,17.2)
470 @c t.test(x,y,alternative="greater")
472 @c ===beg===
473 @c load ("stats")$
474 @c x: [20.4,62.5,61.3,44.2,11.1,23.7]$
475 @c y: [1.2,6.9,38.7,20.4,17.2]$
476 @c test_means_difference(x,y,'alternative='greater);
477 @c ===end===
478 @example
479 (%i1) load("stats")$
480 (%i2) x: [20.4,62.5,61.3,44.2,11.1,23.7]$
481 (%i3) y: [1.2,6.9,38.7,20.4,17.2]$
482 (%i4) test_means_difference(x,y,'alternative='greater);
483             |              DIFFERENCE OF MEANS TEST
484             |
485             |         diff_estimate = 20.31999999999999
486             |
487             |                 conf_level = 0.95
488             |
489             |    conf_interval = [- .04597417812882298, inf]
490             |
491 (%o4)       |        method = Exact t-test. Welch approx.
492             |
493             | hypotheses = H0: mean1 = mean2 , H1: mean1 > mean2
494             |
495             |           statistic = 1.838004300728477
496             |
497             |    distribution = [student_t, 8.62758740184604]
498             |
499             |            p_value = .05032746527991905
500 @end example
502 The same test as before, but now variances are supposed to be
503 equal.
505 @c equivalent code for R:
506 @c x <- c(20.4,62.5,61.3,44.2,11.1,23.7)
507 @c y <- c(1.2,6.9,38.7,20.4,17.2)
508 @c t.test(x,y,var.equal=T,alternative="greater")
510 @c ===beg===
511 @c load ("stats")$
512 @c x: [20.4,62.5,61.3,44.2,11.1,23.7]$
513 @c y: [1.2,6.9,38.7,20.4,17.2]$
514 @c test_means_difference(x,y,'alternative='greater,
515 @c                                                  'varequal=true);
516 @c ===end===
517 @example
518 (%i1) load("stats")$
519 (%i2) x: [20.4,62.5,61.3,44.2,11.1,23.7]$
520 (%i3) y: matrix([1.2],[6.9],[38.7],[20.4],[17.2])$
521 (%i4) test_means_difference(x,y,'alternative='greater,
522                                                  'varequal=true);
523             |              DIFFERENCE OF MEANS TEST
524             |
525             |         diff_estimate = 20.31999999999999
526             |
527             |                 conf_level = 0.95
528             |
529             |     conf_interval = [- .7722627696897568, inf]
530             |
531 (%o4)       |   method = Exact t-test. Unknown equal variances
532             |
533             | hypotheses = H0: mean1 = mean2 , H1: mean1 > mean2
534             |
535             |           statistic = 1.765996124515009
536             |
537             |           distribution = [student_t, 9]
538             |
539             |            p_value = .05560320992529344
540 @end example
542 @opencatbox{Categories:}
543 @category{Package stats}
544 @closecatbox
546 @end deffn
548 @anchor{test_variance}
549 @deffn {Function} test_variance @
550 @fname{test_variance} (@var{x}) @
551 @fname{test_variance} (@var{x}, @var{options}, ...)
553 This is the variance @var{chi^2}-test. Argument @var{x} is a list or a column matrix
554 containing an one dimensional sample taken from a normal population.
556 Options:
558 @itemize @bullet
560 @item
561 @code{'mean}, default @code{'unknown}, is the population's mean, when it is known.
563 @item
564 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
565 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
567 @item
568 @code{'variance}, default @code{1}, this is the variance value (positive) to be checked.
570 @item
571 @code{'conflevel}, default @code{95/100}, confidence level for the confidence interval; it must
572 be an expression which takes a value in (0,1).
574 @end itemize
576 The output of function @code{test_variance} is an @code{inference_result} Maxima object
577 showing the following results:
579 @enumerate
581 @item
582 @code{'var_estimate}: the sample variance.
584 @item
585 @code{'conf_level}: confidence level selected by the user.
587 @item
588 @code{'conf_interval}: confidence interval for the population variance.
590 @item
591 @code{'method}: inference procedure.
593 @item
594 @code{'hypotheses}: null and alternative hypotheses to be tested.
596 @item
597 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
599 @item
600 @code{'distribution}: distribution of the sample statistic, together with its parameter.
602 @item
603 @code{'p_value}: @math{p}-value of the test.
605 @end enumerate
607 Examples:
609 It is tested whether the variance of a population with unknown mean
610 is equal to or greater than 200.
612 @c ===beg===
613 @c load ("stats")$
614 @c x: [203,229,215,220,223,233,208,228,20]$
615 @c test_variance(x,'alternative='greater,'variance=200);
616 @c ===end===
617 @example
618 (%i1) load("stats")$
619 (%i2) x: [203,229,215,220,223,233,208,228,209]$
620 (%i3) test_variance(x,'alternative='greater,'variance=200);
621              |                  VARIANCE TEST
622              |
623              |              var_estimate = 110.75
624              |
625              |                conf_level = 0.95
626              |
627              |     conf_interval = [57.13433376937479, inf]
628              |
629 (%o3)        | method = Variance Chi-square test. Unknown mean.
630              |
631              |    hypotheses = H0: var = 200 , H1: var > 200
632              |
633              |                 statistic = 4.43
634              |
635              |             distribution = [chi2, 8]
636              |
637              |           p_value = .8163948512777689
638 @end example
640 @opencatbox{Categories:}
641 @category{Package stats}
642 @closecatbox
644 @end deffn
646 @anchor{test_variance_ratio}
647 @deffn {Function} test_variance_ratio @
648 @fname{test_variance_ratio} (@var{x1}, @var{x2}) @
649 @fname{test_variance_ratio} (@var{x1}, @var{x2}, @var{options} ...)
651 This is the variance ratio @var{F}-test for two normal populations.
652 Arguments @var{x1} and @var{x2} are lists or column matrices
653 containing two independent samples.
655 Options:
657 @itemize @bullet
659 @item
660 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
661 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
663 @item
664 @code{'mean1}, default @code{'unknown}, when it is known, this is the mean of
665 the population from which @var{x1} was taken.
667 @item
668 @code{'mean2}, default @code{'unknown}, when it is known, this is the mean of
669 the population from which @var{x2} was taken.
671 @item
672 @code{'conflevel}, default @code{95/100}, confidence level for the confidence interval of the
673 ratio; it must be an expression which takes a value in (0,1).
675 @end itemize
677 The output of function @code{test_variance_ratio} is an @code{inference_result} Maxima object
678 showing the following results:
680 @enumerate
682 @item
683 @code{'ratio_estimate}: the sample variance ratio.
685 @item
686 @code{'conf_level}: confidence level selected by the user.
688 @item
689 @code{'conf_interval}: confidence interval for the variance ratio.
691 @item
692 @code{'method}: inference procedure.
694 @item
695 @code{'hypotheses}: null and alternative hypotheses to be tested.
697 @item
698 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
700 @item
701 @code{'distribution}: distribution of the sample statistic, together with its parameters.
703 @item
704 @code{'p_value}: @math{p}-value of the test.
706 @end enumerate
709 Examples:
711 The equality of the variances of two normal populations is checked
712 against the alternative that the first is greater than the second.
714 @c equivalent code for R:
715 @c x <- c(20.4,62.5,61.3,44.2,11.1,23.7)
716 @c y <- c(1.2,6.9,38.7,20.4,17.2)
717 @c var.test(x,y,alternative="greater")
719 @c ===beg===
720 @c load ("stats")$
721 @c x: [20.4,62.5,61.3,44.2,11.1,23.7]$
722 @c y: [1.2,6.9,38.7,20.4,17.2]$
723 @c test_variance_ratio(x,y,'alternative='greater);
724 @c ===end===
725 @example
726 (%i1) load("stats")$
727 (%i2) x: [20.4,62.5,61.3,44.2,11.1,23.7]$
728 (%i3) y: [1.2,6.9,38.7,20.4,17.2]$
729 (%i4) test_variance_ratio(x,y,'alternative='greater);
730               |              VARIANCE RATIO TEST
731               |
732               |       ratio_estimate = 2.316933391522034
733               |
734               |               conf_level = 0.95
735               |
736               |    conf_interval = [.3703504689507268, inf]
737               |
738 (%o4)         | method = Variance ratio F-test. Unknown means.
739               |
740               | hypotheses = H0: var1 = var2 , H1: var1 > var2
741               |
742               |         statistic = 2.316933391522034
743               |
744               |            distribution = [f, 5, 4]
745               |
746               |          p_value = .2179269692254457
747 @end example
749 @opencatbox{Categories:}
750 @category{Package stats}
751 @closecatbox
753 @end deffn
755 @anchor{test_proportion}
756 @deffn {Function} test_proportion @
757 @fname{test_proportion} (@var{x}, @var{n}) @
758 @fname{test_proportion} (@var{x}, @var{n}, @var{options} ...)
760 Inferences on a proportion. Argument @var{x} is the number of successes
761 in @var{n} trials in a Bernoulli experiment with unknown probability.
763 Options:
765 @itemize @bullet
767 @item
768 @code{'proportion}, default @code{1/2}, is the value of the proportion to be checked.
770 @item
771 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
772 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
774 @item
775 @code{'conflevel}, default @code{95/100}, confidence level for the confidence interval; it must
776 be an expression which takes a value in (0,1).
778 @item
779 @code{'asymptotic}, default @code{false}, indicates whether it performs an exact test
780 based on the binomial distribution, or an asymptotic one based on the @i{Central Limit Theorem};
781 valid values are @code{true} and @code{false}.
783 @item
784 @code{'correct}, default @code{true}, indicates whether Yates correction is applied or not.
786 @end itemize
788 The output of function @code{test_proportion} is an @code{inference_result} Maxima object
789 showing the following results:
791 @enumerate
793 @item
794 @code{'sample_proportion}: the sample proportion.
796 @item
797 @code{'conf_level}: confidence level selected by the user.
799 @item
800 @code{'conf_interval}: Wilson confidence interval for the proportion.
802 @item
803 @code{'method}: inference procedure.
805 @item
806 @code{'hypotheses}: null and alternative hypotheses to be tested.
808 @item
809 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
811 @item
812 @code{'distribution}: distribution of the sample statistic, together with its parameters.
814 @item
815 @code{'p_value}: @math{p}-value of the test.
817 @end enumerate
819 Examples:
821 Performs an exact test. The null hypothesis
822 is @math{H_0: p=1/2} against the one sided alternative @math{H_1: p<1/2}.
824 @c ===beg===
825 @c load ("stats")$
826 @c test_proportion(45, 103, alternative = less);
827 @c ===end===
828 @example
829 (%i1) load("stats")$
830 (%i2) test_proportion(45, 103, alternative = less);
831          |            PROPORTION TEST              
832          |                                         
833          | sample_proportion = .4368932038834951   
834          |                                         
835          |           conf_level = 0.95             
836          |                                         
837          | conf_interval = [0, 0.522714149150231]  
838          |                                         
839 (%o2)    |     method = Exact binomial test.       
840          |                                         
841          | hypotheses = H0: p = 0.5 , H1: p < 0.5  
842          |                                         
843          |             statistic = 45              
844          |                                         
845          |  distribution = [binomial, 103, 0.5]    
846          |                                         
847          |      p_value = .1184509388901454 
848 @end example
850 A two sided asymptotic test. Confidence level is 99/100.
852 @c ===beg===
853 @c load ("stats")$
854 @c fpprintprec:7$
855 @c test_proportion(45, 103, 
856 @c               conflevel = 99/100, asymptotic=true);
857 @c ===end===
858 @example
859 (%i1) load("stats")$
860 (%i2) fpprintprec:7$
861 (%i3) test_proportion(45, 103, 
862                   conflevel = 99/100, asymptotic=true);
863       |                 PROPORTION TEST                  
864       |                                                  
865       |           sample_proportion = .43689             
866       |                                                  
867       |                conf_level = 0.99                 
868       |                                                  
869       |        conf_interval = [.31422, .56749]          
870       |                                                  
871 (%o3) | method = Asympthotic test with Yates correction.
872       |                                                  
873       |     hypotheses = H0: p = 0.5 , H1: p # 0.5       
874       |                                                  
875       |               statistic = .43689                 
876       |                                                  
877       |      distribution = [normal, 0.5, .048872]       
878       |                                                  
879       |                p_value = .19662
880 @end example
882 @opencatbox{Categories:}
883 @category{Package stats}
884 @closecatbox
886 @end deffn
892 @anchor{test_proportions_difference}
893 @deffn {Function} test_proportions_difference @
894 @fname{test_proportions_difference} (@var{x1}, @var{n1}, @var{x2}, @var{n2}) @
895 @fname{test_proportions_difference} (@var{x1}, @var{n1}, @var{x2}, @var{n2}, @var{options} @dots{})
897 Inferences on the difference of two proportions. Argument @var{x1} is the number of successes
898 in @var{n1} trials in a Bernoulli experiment in the first population, and @var{x2} and @var{n2}
899 are the corresponding values in the second population. Samples are independent and the test
900 is asymptotic.
902 Options:
904 @itemize @bullet
906 @item
907 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
908 valid values are: @code{'twosided} (@code{p1 # p2}), @code{'greater} (@code{p1 > p2})
909 and @code{'less} (@code{p1 < p2}).
911 @item
912 @code{'conflevel}, default @code{95/100}, confidence level for the confidence interval; it must
913 be an expression which takes a value in (0,1).
915 @item
916 @code{'correct}, default @code{true}, indicates whether Yates correction is applied or not.
918 @end itemize
920 The output of function @code{test_proportions_difference} is an @code{inference_result} Maxima object
921 showing the following results:
923 @enumerate
925 @item
926 @code{'proportions}: list with the two sample proportions.
928 @item
929 @code{'conf_level}: confidence level selected by the user.
931 @item
932 @code{'conf_interval}: Confidence interval for the difference of proportions @code{p1 - p2}.
934 @item
935 @code{'method}: inference procedure and warning message in case of any of the samples sizes
936 is less than 10.
938 @item
939 @code{'hypotheses}: null and alternative hypotheses to be tested.
941 @item
942 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
944 @item
945 @code{'distribution}: distribution of the sample statistic, together with its parameters.
947 @item
948 @code{'p_value}: @math{p}-value of the test.
950 @end enumerate
952 Examples:
954 A machine produced 10 defective articles in a batch of 250.
955 After some maintenance work, it produces 4 defective in a batch of 150.
956 In order to know if the machine has improved, we test the null
957 hypothesis @code{H0:p1=p2}, against the alternative @code{H0:p1>p2},
958 where @code{p1} and @code{p2} are the probabilities for one produced
959 article to be defective before and after maintenance. According to
960 the p value, there is not enough evidence to accept the alternative.
962 @c ===beg===
963 @c load ("stats")$
964 @c fpprintprec:7$
965 @c test_proportions_difference(10, 250, 4, 150,
966 @c                             alternative = greater);
967 @c ===end===
968 @example
969 (%i1) load("stats")$
970 (%i2) fpprintprec:7$
971 (%i3) test_proportions_difference(10, 250, 4, 150,
972                                 alternative = greater);
973       |       DIFFERENCE OF PROPORTIONS TEST         
974       |                                              
975       |       proportions = [0.04, .02666667]        
976       |                                              
977       |              conf_level = 0.95               
978       |                                              
979       |      conf_interval = [- .02172761, 1]        
980       |                                              
981 (%o3) | method = Asymptotic test. Yates correction.  
982       |                                              
983       |   hypotheses = H0: p1 = p2 , H1: p1 > p2     
984       |                                              
985       |            statistic = .01333333             
986       |                                              
987       |    distribution = [normal, 0, .01898069]     
988       |                                              
989       |             p_value = .2411936 
990 @end example
992 Exact standard deviation of the asymptotic normal
993 distribution when the data are unknown.
995 @c ===beg===
996 @c load("stats")$
997 @c stats_numer: false$
998 @c sol: test_proportions_difference(x1,n1,x2,n2)$
999 @c last(take_inference('distribution,sol));
1000 @c ===end===
1001 @example
1002 (%i1) load("stats")$
1003 (%i2) stats_numer: false$
1004 (%i3) sol: test_proportions_difference(x1,n1,x2,n2)$
1005 (%i4) last(take_inference('distribution,sol));
1006                1    1                  x2 + x1
1007               (-- + --) (x2 + x1) (1 - -------)
1008                n2   n1                 n2 + n1
1009 (%o4)    sqrt(---------------------------------)
1010                            n2 + n1
1011 @end example
1013 @opencatbox{Categories:}
1014 @category{Package stats}
1015 @closecatbox
1017 @end deffn
1019 @anchor{test_sign}
1020 @deffn {Function} test_sign @
1021 @fname{test_sign} (@var{x}) @
1022 @fname{test_sign} (@var{x}, @var{options} @dots{})
1024 This is the non parametric sign test for the median of a continuous population.
1025 Argument @var{x} is a list or a column matrix containing an one dimensional sample.
1027 Options:
1029 @itemize @bullet
1031 @item
1032 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
1033 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
1035 @item
1036 @code{'median}, default @code{0}, is the median value to be checked.
1038 @end itemize
1040 The output of function @code{test_sign} is an @code{inference_result} Maxima object
1041 showing the following results:
1043 @enumerate
1045 @item
1046 @code{'med_estimate}: the sample median.
1048 @item
1049 @code{'method}: inference procedure.
1051 @item
1052 @code{'hypotheses}: null and alternative hypotheses to be tested.
1054 @item
1055 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
1057 @item
1058 @code{'distribution}: distribution of the sample statistic, together with its parameter(s).
1060 @item
1061 @code{'p_value}: @math{p}-value of the test.
1063 @end enumerate
1065 Examples:
1067 Checks whether the population from which the sample was taken has median 6, 
1068 against the alternative @math{H_1: median > 6}.
1070 @c ===beg===
1071 @c load ("stats")$
1072 @c x: [2,0.1,7,1.8,4,2.3,5.6,7.4,5.1,6.1,6]$
1073 @c test_sign(x,'median=6,'alternative='greater);
1074 @c ===end===
1075 @example
1076 (%i1) load("stats")$
1077 (%i2) x: [2,0.1,7,1.8,4,2.3,5.6,7.4,5.1,6.1,6]$
1078 (%i3) test_sign(x,'median=6,'alternative='greater);
1079                |                  SIGN TEST
1080                |
1081                |              med_estimate = 5.1
1082                |
1083                |      method = Non parametric sign test.
1084                |
1085 (%o3)          | hypotheses = H0: median = 6 , H1: median > 6
1086                |
1087                |                statistic = 7
1088                |
1089                |      distribution = [binomial, 10, 0.5]
1090                |
1091                |         p_value = .05468749999999989
1092 @end example
1094 @opencatbox{Categories:}
1095 @category{Package stats}
1096 @closecatbox
1098 @end deffn
1100 @anchor{test_signed_rank}
1101 @deffn {Function} test_signed_rank @
1102 @fname{test_signed_rank} (@var{x}) @
1103 @fname{test_signed_rank} (@var{x}, @var{options} @dots{})
1105 This is the Wilcoxon signed rank test to make inferences about the median of a
1106 continuous population. Argument @var{x} is a list or a column matrix
1107 containing an one dimensional sample. Performs normal approximation if the
1108 sample size is greater than 20, or if there are zeroes or ties.
1110 @c TODO: These two variables/functions aren't documented
1111 See also @code{pdf_rank_test} and @code{cdf_rank_test}
1113 Options:
1115 @itemize @bullet
1117 @item
1118 @code{'median}, default @code{0}, is the median value to be checked.
1120 @item
1121 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
1122 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
1124 @end itemize
1126 The output of function @code{test_signed_rank} is an @code{inference_result} Maxima object
1127 with the following results:
1129 @enumerate
1131 @item
1132 @code{'med_estimate}: the sample median.
1134 @item
1135 @code{'method}: inference procedure.
1137 @item
1138 @code{'hypotheses}: null and alternative hypotheses to be tested.
1140 @item
1141 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
1143 @item
1144 @code{'distribution}: distribution of the sample statistic, together with its parameter(s).
1146 @item
1147 @code{'p_value}: @math{p}-value of the test.
1149 @end enumerate
1151 Examples:
1153 Checks the null hypothesis @math{H_0: median = 15} against the 
1154 alternative @math{H_1: median > 15}. This is an exact test, since
1155 there are no ties.
1157 @c equivalent code for R:
1158 @c x <- c(17.1,15.9,13.7,13.4,15.5,17.6)
1159 @c wilcox.test(x,mu=15,alternative="greater")
1161 @c ===beg===
1162 @c load ("stats")$
1163 @c x: [17.1,15.9,13.7,13.4,15.5,17.6]$
1164 @c test_signed_rank(x,median=15,alternative=greater);
1165 @c ===end===
1166 @example
1167 (%i1) load("stats")$
1168 (%i2) x: [17.1,15.9,13.7,13.4,15.5,17.6]$
1169 (%i3) test_signed_rank(x,median=15,alternative=greater);
1170                  |             SIGNED RANK TEST
1171                  |
1172                  |           med_estimate = 15.7
1173                  |
1174                  |           method = Exact test
1175                  |
1176 (%o3)            | hypotheses = H0: med = 15 , H1: med > 15
1177                  |
1178                  |              statistic = 14
1179                  |
1180                  |     distribution = [signed_rank, 6]
1181                  |
1182                  |            p_value = 0.28125
1183 @end example
1185 Checks the null hypothesis @math{H_0: equal(median, 2.5)} against the 
1186 alternative @math{H_1: not equal(median, 2.5)}. This is an approximated test,
1187 since there are ties.
1189 @c equivalent code for R:
1190 @c y<-c(1.9,2.3,2.6,1.9,1.6,3.3,4.2,4,2.4,2.9,1.5,3,2.9,4.2,3.1)
1191 @c wilcox.test(y,mu=2.5)
1193 @c ===beg===
1194 @c load ("stats")$
1195 @c y:[1.9,2.3,2.6,1.9,1.6,3.3,4.2,4,2.4,2.9,1.5,3,2.9,4.2,3.1]$
1196 @c test_signed_rank(y,median=2.5);
1197 @c ===end===
1198 @example
1199 (%i1) load("stats")$
1200 (%i2) y:[1.9,2.3,2.6,1.9,1.6,3.3,4.2,4,2.4,2.9,1.5,3,2.9,4.2,3.1]$
1201 (%i3) test_signed_rank(y,median=2.5);
1202              |                 SIGNED RANK TEST
1203              |
1204              |                med_estimate = 2.9
1205              |
1206              |          method = Asymptotic test. Ties
1207              |
1208 (%o3)        |    hypotheses = H0: med = 2.5 , H1: med # 2.5
1209              |
1210              |                 statistic = 76.5
1211              |
1212              | distribution = [normal, 60.5, 17.58195097251724]
1213              |
1214              |           p_value = .3628097734643669
1215 @end example
1217 @opencatbox{Categories:}
1218 @category{Package stats}
1219 @closecatbox
1221 @end deffn
1223 @anchor{test_rank_sum}
1224 @deffn {Function} test_rank_sum @
1225 @fname{test_rank_sum} (@var{x1}, @var{x2}) @
1226 @fname{test_rank_sum} (@var{x1}, @var{x2}, @var{option})
1228 This is the Wilcoxon-Mann-Whitney test for comparing the medians of two
1229 continuous populations. The first two arguments @var{x1} and @var{x2} are lists
1230 or column matrices with the data of two independent samples. Performs normal
1231 approximation if any of the sample sizes is greater than 10, or if there are ties.
1233 Option:
1235 @itemize @bullet
1237 @item
1238 @code{'alternative}, default @code{'twosided}, is the alternative hypothesis;
1239 valid values are: @code{'twosided}, @code{'greater} and @code{'less}.
1241 @end itemize
1243 The output of function @code{test_rank_sum} is an @code{inference_result} Maxima object
1244 with the following results:
1246 @enumerate
1248 @item
1249 @code{'method}: inference procedure.
1251 @item
1252 @code{'hypotheses}: null and alternative hypotheses to be tested.
1254 @item
1255 @code{'statistic}: value of the sample statistic used for testing the null hypothesis.
1257 @item
1258 @code{'distribution}: distribution of the sample statistic, together with its parameters.
1260 @item
1261 @code{'p_value}: @math{p}-value of the test.
1263 @end enumerate
1265 Examples:
1267 Checks whether populations have similar medians. Samples sizes
1268 are small and an exact test is made.
1270 @c equivalent code for R:
1271 @c x <- c(12,15,17,38,42,10,23,35,28)
1272 @c y <- c(21,18,25,14,52,65,40,43)
1273 @c wilcox.test(x,y)
1275 @c ===beg===
1276 @c load ("stats")$
1277 @c x:[12,15,17,38,42,10,23,35,28]$
1278 @c y:[21,18,25,14,52,65,40,43]$
1279 @c test_rank_sum(x,y);
1280 @c ===end===
1281 @example
1282 (%i1) load("stats")$
1283 (%i2) x:[12,15,17,38,42,10,23,35,28]$
1284 (%i3) y:[21,18,25,14,52,65,40,43]$
1285 (%i4) test_rank_sum(x,y);
1286               |                 RANK SUM TEST
1287               |
1288               |              method = Exact test
1289               |
1290               | hypotheses = H0: med1 = med2 , H1: med1 # med2
1291 (%o4)         |
1292               |                 statistic = 22
1293               |
1294               |        distribution = [rank_sum, 9, 8]
1295               |
1296               |          p_value = .1995886466474702
1297 @end example
1299 Now, with greater samples and ties, the procedure makes 
1300 normal approximation. The alternative hypothesis is
1301 @math{H_1: median1 < median2}.
1303 @c equivalent code for R:
1304 @c x <- c(39,42,35,13,10,23,15,20,17,27)
1305 @c y <- c(20,52,66,19,41,32,44,25,14,39,43,35,19,56,27,15)
1306 @c wilcox.test(x,y,alternative="less")
1308 @c ===beg===
1309 @c load ("stats")$
1310 @c x: [39,42,35,13,10,23,15,20,17,27]$
1311 @c y: [20,52,66,19,41,32,44,25,14,39,43,35,19,56,27,15]$
1312 @c test_rank_sum(x,y,'alternative='less);
1313 @c ===end===
1314 @example
1315 (%i1) load("stats")$
1316 (%i2) x: [39,42,35,13,10,23,15,20,17,27]$
1317 (%i3) y: [20,52,66,19,41,32,44,25,14,39,43,35,19,56,27,15]$
1318 (%i4) test_rank_sum(x,y,'alternative='less);
1319              |                  RANK SUM TEST
1320              |
1321              |          method = Asymptotic test. Ties
1322              |
1323              |  hypotheses = H0: med1 = med2 , H1: med1 < med2
1324 (%o4)        |
1325              |                 statistic = 48.5
1326              |
1327              | distribution = [normal, 79.5, 18.95419580097078]
1328              |
1329              |           p_value = .05096985666598441
1330 @end example
1332 @opencatbox{Categories:}
1333 @category{Package stats}
1334 @closecatbox
1336 @end deffn
1338 @anchor{test_normality}
1339 @deffn {Function} test_normality (@var{x})
1341 Shapiro-Wilk test for normality. Argument @var{x} is a list of numbers, and sample
1342 size must be greater than 2 and less or equal than 5000, otherwise, function
1343 @code{test_normality} signals an error message.
1345 Reference:
1347   [1] Algorithm AS R94, Applied Statistics (1995), vol.44, no.4, 547-551
1349 The output of function @code{test_normality} is an @code{inference_result} Maxima object
1350 with the following results:
1352 @enumerate
1354 @item
1355 @code{'statistic}: value of the @var{W} statistic.
1357 @item
1358 @code{'p_value}: @math{p}-value under normal assumption.
1360 @end enumerate
1362 Examples:
1364 Checks for the normality of a population, based on a sample of size 9.
1366 @c equivalent code for R:
1367 @c x <- c(12,15,17,38,42,10,23,35,28)
1368 @c shapiro.test(x)
1370 @c ===beg===
1371 @c load ("stats")$
1372 @c x:[12,15,17,38,42,10,23,35,28]$
1373 @c test_normality(x);
1374 @c ===end===
1375 @example
1376 (%i1) load("stats")$
1377 (%i2) x:[12,15,17,38,42,10,23,35,28]$
1378 (%i3) test_normality(x);
1379                        |      SHAPIRO - WILK TEST
1380                        |
1381 (%o3)                  | statistic = .9251055695162436
1382                        |
1383                        |  p_value = .4361763918860381
1384 @end example
1386 @opencatbox{Categories:}
1387 @category{Package stats}
1388 @closecatbox
1390 @end deffn
1392 @anchor{linear_regression}
1393 @deffn {Function} linear_regression @
1394 @fname{linear_regression} (@var{x}) @
1395 @fname{linear_regression} (@var{x} @var{option})
1397 Multivariate linear regression, 
1398 @math{y_i = b0 + b1*x_1i + b2*x_2i + ... + bk*x_ki + u_i},
1399 where @math{u_i} are @math{N(0,sigma)} independent random variables.
1400 Argument @var{x} must be a matrix with more than one column. The
1401 last column is considered as the responses (@math{y_i}).
1403 Option:
1405 @itemize @bullet
1407 @item
1408 @code{'conflevel}, default @code{95/100}, confidence level for the
1409 confidence intervals; it must be an expression which takes a value
1410 in (0,1).
1411 @end itemize
1413 The output of function @code{linear_regression} is an 
1414 @code{inference_result} Maxima object with the following results:
1416 @enumerate
1418 @item
1419 @code{'b_estimation}: regression coefficients estimates.
1421 @item
1422 @code{'b_covariances}: covariance matrix of the regression 
1423 coefficients estimates.
1425 @item
1426 @code{b_conf_int}: confidence intervals of the regression coefficients.
1428 @item
1429 @code{b_statistics}: statistics for testing coefficient.
1431 @item
1432 @code{b_p_values}: p-values for coefficient tests.
1434 @item
1435 @code{b_distribution}: probability distribution for coefficient tests.
1437 @item
1438 @code{v_estimation}: unbiased variance estimator.
1440 @item
1441 @code{v_conf_int}: variance confidence interval.
1443 @item
1444 @code{v_distribution}: probability distribution for variance test.
1446 @item
1447 @code{residuals}: residuals.
1449 @item
1450 @code{adc}: adjusted determination coefficient.
1452 @item
1453 @code{aic}: Akaike's information criterion.
1455 @item
1456 @code{bic}: Bayes's information criterion.
1458 @end enumerate
1460 Only items 1, 4, 5, 6, 7, 8, 9 and 11 above, in this order, 
1461 are shown by default. The rest remain hidden until the user
1462 makes use of functions @code{items_inference} and @code{take_inference}.
1464 Example:
1466 Fitting a linear model to a trivariate sample. The
1467 last column is considered as the responses (@math{y_i}).
1469 @c ===beg===
1470 @c load ("stats")$
1471 @c X:matrix(
1472 @c    [58,111,64],[84,131,78],[78,158,83],
1473 @c    [81,147,88],[82,121,89],[102,165,99],
1474 @c    [85,174,101],[102,169,102])$
1475 @c fpprintprec: 4$
1476 @c res: linear_regression(X);
1477 @c items_inference(res);
1478 @c take_inference('b_covariances, res);
1479 @c take_inference('bic, res);
1480 @c load("draw")$
1481 @c draw2d(
1482 @c    points_joined = true,
1483 @c    grid = true,
1484 @c    points(take_inference('residuals, res)) )$
1485 @c ===end===
1486 @example
1487 (%i2) load("stats")$
1488 (%i3) X:matrix(
1489     [58,111,64],[84,131,78],[78,158,83],
1490     [81,147,88],[82,121,89],[102,165,99],
1491     [85,174,101],[102,169,102])$
1492 (%i4) fpprintprec: 4$
1493 (%i5) res: linear_regression(X);
1494              |       LINEAR REGRESSION MODEL         
1495              |                                       
1496              | b_estimation = [9.054, .5203, .2397]  
1497              |                                       
1498              | b_statistics = [.6051, 2.246, 1.74]   
1499              |                                       
1500              | b_p_values = [.5715, .07466, .1423]   
1501              |                                       
1502 (%o5)        |   b_distribution = [student_t, 5]     
1503              |                                       
1504              |         v_estimation = 35.27          
1505              |                                       
1506              |     v_conf_int = [13.74, 212.2]       
1507              |                                       
1508              |      v_distribution = [chi2, 5]       
1509              |                                       
1510              |             adc = .7922               
1511 (%i6) items_inference(res);
1512 (%o6) [b_estimation, b_covariances, b_conf_int, b_statistics, 
1513 b_p_values, b_distribution, v_estimation, v_conf_int, 
1514 v_distribution, residuals, adc, aic, bic]
1515 (%i7) take_inference('b_covariances, res);
1516                   [  223.9    - 1.12   - .8532  ]
1517                   [                             ]
1518 (%o7)             [ - 1.12    .05367   - .02305 ]
1519                   [                             ]
1520                   [ - .8532  - .02305   .01898  ]
1521 (%i8) take_inference('bic, res);
1522 (%o8)                          30.98
1523 (%i9) load("draw")$
1524 (%i10) draw2d(
1525     points_joined = true,
1526     grid = true,
1527     points(take_inference('residuals, res)) )$
1528 @end example
1530 @opencatbox{Categories:}
1531 @category{Package stats}
1532 @category{Statistical estimation}
1533 @closecatbox
1535 @end deffn
1537 @node Functions and Variables for special distributions,  , Functions and Variables for stats, Package stats
1538 @section Functions and Variables for special distributions
1540 @anchor{pdf_signed_rank}
1541 @deffn {Function} pdf_signed_rank (@var{x}, @var{n})
1542 Probability density function of the exact distribution of the
1543 signed rank statistic. Argument @var{x} is a real
1544 number and @var{n} a positive integer.
1546 See also @mrefdot{test_signed_rank}
1548 @opencatbox{Categories:}
1549 @category{Package stats}
1550 @closecatbox
1552 @end deffn
1554 @anchor{cdf_signed_rank}
1555 @deffn {Function} cdf_signed_rank (@var{x}, @var{n})
1556 Cumulative distribution function of the exact distribution of the
1557 signed rank statistic. Argument @var{x} is a real
1558 number and @var{n} a positive integer. 
1560 See also @mrefdot{test_signed_rank}
1562 @opencatbox{Categories:}
1563 @category{Package stats}
1564 @closecatbox
1566 @end deffn
1568 @anchor{pdf_rank_sum}
1569 @deffn {Function} pdf_rank_sum (@var{x}, @var{n}, @var{m})
1570 Probability density function of the exact distribution of the
1571 rank sum statistic. Argument @var{x} is a real
1572 number and @var{n} and @var{m} are both positive integers. 
1574 See also @mrefdot{test_rank_sum}
1576 @opencatbox{Categories:}
1577 @category{Package stats}
1578 @closecatbox
1580 @end deffn
1582 @anchor{cdf_rank_sum}
1583 @deffn {Function} cdf_rank_sum (@var{x}, @var{n}, @var{m})
1584 Cumulative distribution function of the exact distribution of the
1585 rank sum statistic. Argument @var{x} is a real
1586 number and @var{n} and @var{m} are both positive integers. 
1588 See also @mrefdot{test_rank_sum}
1590 @opencatbox{Categories:}
1591 @category{Package stats}
1592 @closecatbox
1594 @end deffn