annotate scripts/statistics/prctile.m @ 33645:42355b7ec5d7 bytecode-interpreter tip

maint: Merge default to bytecode-interpreter.
author Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
date Tue, 04 Jun 2024 11:00:11 -0400
parents 2e484f9f1f18
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
32632
2e484f9f1f18 maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 31706
diff changeset
3 ## Copyright (C) 2008-2024 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
7 ##
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
8 ## This file is part of Octave.
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24512
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24512
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
14 ##
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
19 ##
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24512
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
25
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
26 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20174
diff changeset
27 ## @deftypefn {} {@var{q} =} prctile (@var{x})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20174
diff changeset
28 ## @deftypefnx {} {@var{q} =} prctile (@var{x}, @var{p})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20174
diff changeset
29 ## @deftypefnx {} {@var{q} =} prctile (@var{x}, @var{p}, @var{dim})
12569
6ef23b4a3402 Add quantile, prctile functions to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
30 ## For a sample @var{x}, compute the quantiles, @var{q}, corresponding
20174
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
31 ## to the cumulative probability values, @var{p}, in percent.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
32 ##
20174
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
33 ## If @var{x} is a matrix, compute the percentiles for each column and return
24511
4f0e6ee6c9b8 Make documentation Sec 26.1 more consistent and Sec 25.4 clearer (bug #52685)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 23219
diff changeset
34 ## them in a matrix, such that the i-th row of @var{q} contains the
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
35 ## @var{p}(i)th percentiles of each column of @var{x}.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
36 ##
12569
6ef23b4a3402 Add quantile, prctile functions to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
37 ## If @var{p} is unspecified, return the quantiles for @code{[0 25 50 75 100]}.
20174
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
38 ##
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
39 ## The optional argument @var{dim} determines the dimension along which the
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
40 ## percentiles are calculated. If @var{dim} is omitted it defaults to the
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
41 ## first non-singleton dimension.
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
42 ##
d9341b422488 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
43 ## Programming Note: All non-numeric values (NaNs) of @var{x} are ignored.
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
44 ## @seealso{quantile}
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
45 ## @end deftypefn
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
46
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
47 function q = prctile (x, p = [], dim)
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
48
28789
28de41192f3c Eliminate unneeded verification of nargin, nargout in m-files.
Rik <rik@octave.org>
parents: 27984
diff changeset
49 if (nargin < 1)
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
50 print_usage ();
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
51 endif
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
52
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
53 if (! (isnumeric (x) || islogical (x)))
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
54 error ("prctile: X must be a numeric vector or matrix");
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
55 endif
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
56
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
57 if (isempty (p))
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
58 p = [0, 25, 50, 75, 100];
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
59 endif
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
60
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
61 if (! (isnumeric (p) && isvector (p)))
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
62 error ("prctile: P must be a numeric vector");
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
63 endif
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
64
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
65 nd = ndims (x);
18205
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
66 sz = size (x);
14738
c50cc3c50890 prctile.m: Fix error when called with just a single argument (bug #36597).
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
67 if (nargin < 3)
18205
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
68 ## Find the first non-singleton dimension.
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
69 (dim = find (sz > 1, 1)) || (dim = 1);
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
70 else
29184
dd4cb1ad9dc8 prctile.m, quantile.m: Small formatting changes to cset 7d262c7f8b1d.
Rik <rik@octave.org>
parents: 29176
diff changeset
71 if (! (isscalar (dim) && dim == fix (dim) && dim > 0))
dd4cb1ad9dc8 prctile.m, quantile.m: Small formatting changes to cset 7d262c7f8b1d.
Rik <rik@octave.org>
parents: 29176
diff changeset
72 error ("quantile: DIM must be a positive integer");
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
73 endif
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
74 endif
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
75
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
76 ## Convert from percent to decimal.
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
77 p /= 100;
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
78
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
79 q = quantile (x, p, dim);
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
80
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
81 endfunction
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
82
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
83
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
84 %!test
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
85 %! pct = 50;
18205
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
86 %! q = prctile (1:4, pct);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
87 %! qa = 2.5;
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
88 %! assert (q, qa);
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
89 %! q = prctile (1:4, pct, 1);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
90 %! qa = [1, 2, 3, 4];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
91 %! assert (q, qa);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
92 %! q = prctile (1:4, pct, 2);
18205
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
93 %! qa = 2.5;
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
94 %! assert (q, qa);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
95
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
96 %!test
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
97 %! pct = [50 75];
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
98 %! q = prctile (1:4, pct);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
99 %! qa = [2.5 3.5];
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
100 %! assert (q, qa);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
101 %! q = prctile (1:4, pct, 1);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
102 %! qa = [1, 2, 3, 4; 1, 2, 3, 4];
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
103 %! assert (q, qa);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
104 %! q = prctile (1:4, pct, 2);
b29beed0e98d Use first non-singleton dimension for prctile, quantile (bug #40736).
Rik <rik@octave.org>
parents: 17744
diff changeset
105 %! qa = [2.5 3.5];
7643
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
106 %! assert (q, qa);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
107
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
108 %!test
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
109 %! pct = 50;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
110 %! x = [0.1126, 0.1148, 0.0521, 0.2364, 0.1393
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
111 %! 0.1718, 0.7273, 0.2041, 0.4531, 0.1585
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
112 %! 0.2795, 0.7978, 0.3296, 0.5567, 0.7307
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
113 %! 0.4288, 0.8753, 0.6477, 0.6287, 0.8165
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
114 %! 0.9331, 0.9312, 0.9635, 0.7796, 0.8461];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
115 %! tol = 0.0001;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
116 %! q = prctile (x, pct, 1);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
117 %! qa = [0.2795, 0.7978, 0.3296, 0.5567, 0.7307];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
118 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
119 %! q = prctile (x, pct, 2);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
120 %! qa = [0.1148; 0.2041; 0.5567; 0.6477; 0.9312];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
121 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
122
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
123 %!test
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
124 %! pct = 50;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
125 %! tol = 0.0001;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
126 %! x = [0.1126, 0.1148, 0.0521, 0.2364, 0.1393
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
127 %! 0.1718, 0.7273, 0.2041, 0.4531, 0.1585
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
128 %! 0.2795, 0.7978, 0.3296, 0.5567, 0.7307
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
129 %! 0.4288, 0.8753, 0.6477, 0.6287, 0.8165
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
130 %! 0.9331, 0.9312, 0.9635, 0.7796, 0.8461];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
131 %! x(5,5) = Inf;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
132 %! q = prctile (x, pct, 1);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
133 %! qa = [0.2795, 0.7978, 0.3296, 0.5567, 0.7307];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
134 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
135 %! x(5,5) = -Inf;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
136 %! q = prctile (x, pct, 1);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
137 %! qa = [0.2795, 0.7978, 0.3296, 0.5567, 0.1585];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
138 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
139 %! x(1,1) = Inf;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
140 %! q = prctile (x, pct, 1);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
141 %! qa = [0.4288, 0.7978, 0.3296, 0.5567, 0.1585];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
142 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
143
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
144 %!test
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
145 %! pct = 50;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
146 %! tol = 0.0001;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
147 %! x = [0.1126, 0.1148, 0.0521, 0.2364, 0.1393
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
148 %! 0.1718, 0.7273, 0.2041, 0.4531, 0.1585
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
149 %! 0.2795, 0.7978, 0.3296, 0.5567, 0.7307
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
150 %! 0.4288, 0.8753, 0.6477, 0.6287, 0.8165
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
151 %! 0.9331, 0.9312, 0.9635, 0.7796, 0.8461];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
152 %! x(3,3) = Inf;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
153 %! q = prctile (x, pct, 1);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
154 %! qa = [0.2795, 0.7978, 0.6477, 0.5567, 0.7307];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
155 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
156 %! q = prctile (x, pct, 2);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
157 %! qa = [0.1148; 0.2041; 0.7307; 0.6477; 0.9312];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
158 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
159
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
160 %!test
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
161 %! pct = 50;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
162 %! tol = 0.0001;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
163 %! x = [0.1126, 0.1148, 0.0521, 0.2364, 0.1393
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
164 %! 0.1718, 0.7273, 0.2041, 0.4531, 0.1585
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
165 %! 0.2795, 0.7978, 0.3296, 0.5567, 0.7307
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
166 %! 0.4288, 0.8753, 0.6477, 0.6287, 0.8165
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
167 %! 0.9331, 0.9312, 0.9635, 0.7796, 0.8461];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
168 %! x(5,5) = NaN;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
169 %! q = prctile (x, pct, 2);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
170 %! qa = [0.1148; 0.2041; 0.5567; 0.6477; 0.9322];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
171 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
172 %! x(1,1) = NaN;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
173 %! q = prctile (x, pct, 2);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
174 %! qa = [0.1270; 0.2041; 0.5567; 0.6477; 0.9322];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
175 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
176 %! x(3,3) = NaN;
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
177 %! q = prctile (x, pct, 2);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
178 %! qa = [0.1270; 0.2041; 0.6437; 0.6477; 0.9322];
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
179 %! assert (q, qa, tol);
0220da981c2a Modified statistics to calculate consistent median.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
180
29176
7d262c7f8b1d Allow quantile and prctile to work on dimensions greater than ndim (bug #59641)
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 28886
diff changeset
181 %!assert (prctile ([1:10], 1, 3), [1:10])
7d262c7f8b1d Allow quantile and prctile to work on dimensions greater than ndim (bug #59641)
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 28886
diff changeset
182
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
183 ## Test input validation
28886
d8318c12d903 test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents: 28789
diff changeset
184 %!error <Invalid call> prctile ()
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
185 %!error prctile (['A'; 'B'], 10)
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
186 %!error prctile (1:10, [true, false])
12656
6b2f14af2360 Overhaul functions in statistics/base directory.
Rik <octave@nomad.inbox5.com>
parents: 12642
diff changeset
187 %!error prctile (1:10, ones (2,2))
11436
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
188 %!error prctile (1, 1, 1.5)
e151e23f73bc Overhaul base statistics functions and documentation of same.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
189 %!error prctile (1, 1, 0)