Mercurial > octave-nkf
annotate scripts/statistics/tests/prop_test_2.m @ 14138:72c96de7a403 stable
maint: update copyright notices for 2012
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 02 Jan 2012 14:25:41 -0500 |
parents | fd0a3ac60b0e |
children | 86854d032a37 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
1 ## Copyright (C) 1996-2012 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} {[@var{pval}, @var{z}] =} prop_test_2 (@var{x1}, @var{n1}, @var{x2}, @var{n2}, @var{alt}) | |
21 ## If @var{x1} and @var{n1} are the counts of successes and trials in | |
22 ## one sample, and @var{x2} and @var{n2} those in a second one, test the | |
23 ## null hypothesis that the success probabilities @var{p1} and @var{p2} | |
24 ## are the same. Under the null, the test statistic @var{z} | |
25 ## approximately follows a standard normal distribution. | |
3200 | 26 ## |
3454 | 27 ## With the optional argument string @var{alt}, the alternative of |
28 ## interest can be selected. If @var{alt} is @code{"!="} or | |
29 ## @code{"<>"}, the null is tested against the two-sided alternative | |
30 ## @var{p1} != @var{p2}. If @var{alt} is @code{">"}, the one-sided | |
3457 | 31 ## alternative @var{p1} > @var{p2} is used. Similarly for @code{"<"}, |
32 ## the one-sided alternative @var{p1} < @var{p2} is used. | |
3200 | 33 ## The default is the two-sided case. |
34 ## | |
3454 | 35 ## The p-value of the test is returned in @var{pval}. |
3426 | 36 ## |
3200 | 37 ## If no output argument is given, the p-value of the test is displayed. |
3454 | 38 ## @end deftypefn |
3426 | 39 |
5428 | 40 ## Author: KH <Kurt.Hornik@wu-wien.ac.at> |
3456 | 41 ## Description: Compare two proportions |
3200 | 42 |
43 function [pval, z] = prop_test_2 (x1, n1, x2, n2, alt) | |
3426 | 44 |
3200 | 45 if ((nargin < 4) || (nargin > 5)) |
6046 | 46 print_usage (); |
3200 | 47 endif |
3426 | 48 |
3200 | 49 ## Could do sanity checking on x1, n1, x2, n2 here |
50 | |
51 p1 = x1 / n1; | |
52 p2 = x2 / n2; | |
53 pc = (x1 + x2) / (n1 + n2); | |
3426 | 54 |
3200 | 55 z = (p1 - p2) / sqrt (pc * (1 - pc) * (1/n1 + 1/n2)); |
3426 | 56 |
3200 | 57 cdf = stdnormal_cdf (z); |
3426 | 58 |
3200 | 59 if (nargin == 4) |
60 alt = "!="; | |
61 endif | |
62 | |
5443 | 63 if (! 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:
7017
diff
changeset
|
64 error ("prop_test_2: ALT must be a string"); |
3200 | 65 endif |
66 if (strcmp (alt, "!=") || strcmp (alt, "<>")) | |
67 pval = 2 * min (cdf, 1 - cdf); | |
68 elseif strcmp (alt, ">") | |
69 pval = 1 - cdf; | |
70 elseif strcmp (alt, "<") | |
71 pval = cdf; | |
72 else | |
3456 | 73 error ("prop_test_2: option %s not recognized", alt); |
3200 | 74 endif |
75 | |
76 if (nargout == 0) | |
3456 | 77 printf (" pval: %g\n", pval); |
3200 | 78 endif |
79 | |
80 endfunction |