Mercurial > octave
annotate scripts/statistics/tests/t_test_regression.m @ 23219:3ac9f9ecfae5 stable
maint: Update copyright dates.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 22 Feb 2017 12:39:29 -0500 |
parents | e9a0469dedd9 |
children | 092078913d54 |
rev | line source |
---|---|
23219
3ac9f9ecfae5
maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents:
23083
diff
changeset
|
1 ## Copyright (C) 1995-2017 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 -*- |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20181
diff
changeset
|
20 ## @deftypefn {} {[@var{pval}, @var{t}, @var{df}] =} t_test_regression (@var{y}, @var{x}, @var{rr}, @var{r}, @var{alt}) |
16826
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
21 ## Perform a t test for the null hypothesis |
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
22 ## @nospell{@code{@var{rr} * @var{b} = @var{r}}} in a classical normal |
20174
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
23 ## regression model @code{@var{y} = @var{x} * @var{b} + @var{e}}. |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
24 ## |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
25 ## Under the null, the test statistic @var{t} follows a @var{t} distribution |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
26 ## with @var{df} degrees of freedom. |
3200 | 27 ## |
3454 | 28 ## If @var{r} is omitted, a value of 0 is assumed. |
3200 | 29 ## |
20174
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
30 ## With the optional argument string @var{alt}, the alternative of interest |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
31 ## can be selected. If @var{alt} is @qcode{"!="} or @qcode{"<>"}, the null |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
32 ## is tested against the two-sided alternative @nospell{@code{@var{rr} * |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
33 ## @var{b} != @var{r}}}. If @var{alt} is @qcode{">"}, the one-sided |
20181
aa36fb998a4d
maint: Remove unnecessary whitespace at end of lines.
Rik <rik@octave.org>
parents:
20174
diff
changeset
|
34 ## alternative @nospell{@code{@var{rr} * @var{b} > @var{r}}} is used. |
20174
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
35 ## Similarly for @var{"<"}, the one-sided alternative @nospell{@code{@var{rr} |
d9341b422488
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19833
diff
changeset
|
36 ## * @var{b} < @var{r}}} is used. The default is the two-sided case. |
3200 | 37 ## |
3454 | 38 ## The p-value of the test is returned in @var{pval}. |
3426 | 39 ## |
3200 | 40 ## If no output argument is given, the p-value of the test is displayed. |
3454 | 41 ## @end deftypefn |
3200 | 42 |
5428 | 43 ## Author: KH <Kurt.Hornik@wu-wien.ac.at> |
3456 | 44 ## Description: Test one linear hypothesis in linear regression model |
3200 | 45 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
46 function [pval, t, df] = t_test_regression (y, x, rr, r, alt) |
3426 | 47 |
3200 | 48 if (nargin == 3) |
49 r = 0; | |
50 alt = "!="; | |
51 elseif (nargin == 4) | |
5443 | 52 if (ischar (r)) |
3200 | 53 alt = r; |
54 r = 0; | |
55 else | |
56 alt = "!="; | |
57 endif | |
3457 | 58 elseif (! (nargin == 5)) |
6046 | 59 print_usage (); |
3200 | 60 endif |
3426 | 61 |
4030 | 62 if (! isscalar (r)) |
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
|
63 error ("t_test_regression: R must be a scalar"); |
5443 | 64 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
|
65 error ("t_test_regression: ALT must be a string"); |
3200 | 66 endif |
3426 | 67 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
68 [T, k] = size (x); |
4030 | 69 if (! (isvector (y) && (length (y) == T))) |
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
|
70 error ("t_test_regression: Y must be a vector of length rows (X)"); |
3200 | 71 endif |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
72 s = size (rr); |
3457 | 73 if (! ((max (s) == k) && (min (s) == 1))) |
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
|
74 error ("t_test_regression: RR must be a vector of length columns (X)"); |
3200 | 75 endif |
3426 | 76 |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
77 rr = reshape (rr, 1, k); |
3200 | 78 y = reshape (y, T, 1); |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
79 [b, v] = ols (y, x); |
3200 | 80 df = T - k; |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10606
diff
changeset
|
81 t = (rr * b - r) / sqrt (v * rr * inv (x' * x) * rr'); |
10606
ec34c7acd057
Replace deprecated function calls in statistics tests
Rik <octave@nomad.inbox5.com>
parents:
7017
diff
changeset
|
82 cdf = tcdf (t, df); |
3426 | 83 |
3200 | 84 if (strcmp (alt, "!=") || strcmp (alt, "<>")) |
85 pval = 2 * min (cdf, 1 - cdf); | |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
86 elseif (strcmp (alt, ">")) |
3200 | 87 pval = 1 - cdf; |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
88 elseif (strcmp (alt, "<")) |
3200 | 89 pval = cdf; |
90 else | |
15466
d174210ce1ec
use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
91 error ("t_test_regression: the value '%s' for alt is not possible", alt); |
3200 | 92 endif |
3426 | 93 |
3200 | 94 if (nargout == 0) |
21634
96518f623c91
Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents:
21633
diff
changeset
|
95 printf ("pval: %g\n", pval); |
3200 | 96 endif |
97 | |
98 endfunction |