Mercurial > hg > octave-lyh
annotate scripts/statistics/tests/cor_test.m @ 12856:cad4cba03f19
Deprecate corrcoef, cor and replace with Matlab equivalent corr
The value calculated by Octave's corrcoef and cor are the
same as the value calculated by the Matlab function corr.
Use MathWorks naming convention for this functionality.
* corr.m: New file with functionality of corrcoef.m
* cov.m, kendall.m, spearman.m, cor_test.m: Adjust scripts to call corr()
* statistics/base/module.mk, deprecated/module.mk: Inform Automake about
deprecated functions
* NEWS: Inform users about deprecation
* stats.txi: Add corr() to documentation.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Sat, 16 Jul 2011 20:38:00 -0700 |
parents | 139f993936af |
children | 72c96de7a403 |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 1995-2011 Kurt Hornik |
3426 | 2 ## |
3922 | 3 ## This file is part of Octave. |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
3426 | 9 ## |
3922 | 10 ## Octave is distributed in the hope that it will be useful, but |
3200 | 11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
3426 | 13 ## General Public License for more details. |
14 ## | |
3200 | 15 ## You should have received a copy of the GNU General Public License |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
3200 | 18 |
3454 | 19 ## -*- texinfo -*- |
20 ## @deftypefn {Function File} {} cor_test (@var{x}, @var{y}, @var{alt}, @var{method}) | |
21 ## Test whether two samples @var{x} and @var{y} come from uncorrelated | |
22 ## populations. | |
3200 | 23 ## |
3454 | 24 ## The optional argument string @var{alt} describes the alternative |
25 ## hypothesis, and can be @code{"!="} or @code{"<>"} (non-zero), | |
26 ## @code{">"} (greater than 0), or @code{"<"} (less than 0). The | |
27 ## default is the two-sided case. | |
3200 | 28 ## |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
29 ## The optional argument string @var{method} specifies which |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
30 ## correlation coefficient to use for testing. If @var{method} is |
3454 | 31 ## @code{"pearson"} (default), the (usual) Pearson's product moment |
32 ## correlation coefficient is used. In this case, the data should come | |
33 ## from a bivariate normal distribution. Otherwise, the other two | |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
34 ## methods offer nonparametric alternatives. If @var{method} is |
3454 | 35 ## @code{"kendall"}, then Kendall's rank correlation tau is used. If |
36 ## @var{method} is @code{"spearman"}, then Spearman's rank correlation | |
37 ## rho is used. Only the first character is necessary. | |
3200 | 38 ## |
39 ## The output is a structure with the following elements: | |
40 ## | |
3454 | 41 ## @table @var |
42 ## @item pval | |
43 ## The p-value of the test. | |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
44 ## |
3454 | 45 ## @item stat |
46 ## The value of the test statistic. | |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
47 ## |
3454 | 48 ## @item dist |
49 ## The distribution of the test statistic. | |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
50 ## |
3454 | 51 ## @item params |
52 ## The parameters of the null distribution of the test statistic. | |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
53 ## |
3454 | 54 ## @item alternative |
55 ## The alternative hypothesis. | |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
56 ## |
3454 | 57 ## @item method |
58 ## The method used for testing. | |
59 ## @end table | |
60 ## | |
61 ## If no output argument is given, the p-value is displayed. | |
62 ## @end deftypefn | |
3200 | 63 |
3456 | 64 ## Author: FL <Friedrich.Leisch@ci.tuwien.ac.at> |
5428 | 65 ## Adapted-by: KH <Kurt.Hornik@wu-wien.ac.at> |
3456 | 66 ## Description: Test for zero correlation |
3200 | 67 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
68 function t = cor_test (x, y, alt, method) |
3426 | 69 |
3200 | 70 if ((nargin < 2) || (nargin > 4)) |
6046 | 71 print_usage (); |
3200 | 72 endif |
73 | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
74 if (!isvector (x) || !isvector (y) || length (x) != length (y)) |
8664 | 75 error ("cor_test: X and Y must be vectors of the same length"); |
3200 | 76 endif |
77 | |
78 if (nargin < 3) | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
79 alt = "!="; |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
80 elseif (! ischar (alt)) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11469
diff
changeset
|
81 error ("cor_test: ALT must be a string"); |
3200 | 82 endif |
83 | |
84 if (nargin < 4) | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
85 method = "pearson"; |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
86 elseif (! ischar (method)) |
3456 | 87 error ("cor_test: METHOD must be a string"); |
3200 | 88 endif |
89 | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
90 n = length (x); |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
91 m = method (1); |
3200 | 92 |
93 if (m == "p") | |
12856
cad4cba03f19
Deprecate corrcoef, cor and replace with Matlab equivalent corr
Rik <octave@nomad.inbox5.com>
parents:
12480
diff
changeset
|
94 r = corr (x, y); |
3200 | 95 df = n - 2; |
96 t.method = "Pearson's product moment correlation"; | |
97 t.params = df; | |
98 t.stat = sqrt (df) .* r / sqrt (1 - r.^2); | |
99 t.dist = "t"; | |
10606
ec34c7acd057
Replace deprecated function calls in statistics tests
Rik <octave@nomad.inbox5.com>
parents:
9051
diff
changeset
|
100 cdf = tcdf (t.stat, df); |
3200 | 101 elseif (m == "k") |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
102 tau = kendall (x, y); |
3426 | 103 t.method = "Kendall's rank correlation tau"; |
3200 | 104 t.params = []; |
105 t.stat = tau / sqrt ((2 * (2*n+5)) / (9*n*(n-1))); | |
106 t.dist = "stdnormal"; | |
107 cdf = stdnormal_cdf (t.stat); | |
108 elseif (m == "s") | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
109 rho = spearman (x, y); |
3200 | 110 t.method = "Spearman's rank correlation rho"; |
111 t.params = []; | |
112 t.stat = sqrt (n-1) * (rho - 6/(n^3-n)); | |
3426 | 113 t.dist = "stdnormal"; |
3200 | 114 cdf = stdnormal_cdf (t.stat); |
115 else | |
12480
139f993936af
Uppercase variables in script error strings.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
116 error ("cor_test: METHOD `%s' not recognized", method); |
3200 | 117 endif |
118 | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
119 if (strcmp (alt, "!=") || strcmp (alt, "<>")) |
3200 | 120 t.pval = 2 * min (cdf, 1 - cdf); |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
121 elseif (strcmp (alt, ">")) |
3200 | 122 t.pval = 1 - cdf; |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
123 elseif (strcmp (alt, "<")) |
3200 | 124 t.pval = cdf; |
125 else | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
126 error ("cor_test: alternative `%s' not recognized", alt); |
3200 | 127 endif |
128 | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
129 t.alternative = alt; |
3200 | 130 |
131 if (nargout == 0) | |
3456 | 132 printf ("pval: %g\n", t.pval); |
3200 | 133 endif |
3426 | 134 |
3200 | 135 endfunction |