Fixed bug parsing binomial test.
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 19 May 2010 14:31:08 +0000 (16:31 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 19 May 2010 14:31:08 +0000 (16:31 +0200)
The NPAR TEST /BINOMIAL subcommand was supposed
to take a default P value.  But it didn't work.
This change fixes that problem.

src/language/stats/npar.q
tests/command/npar-binomial.sh

index 8c6f98f82cf669275376313a03650b9ba5de0ff8..535797227b2a23974e6a13da5ed265b0a8c419b2 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <config.h>
 
+
 #include <language/stats/npar.h>
 
 #include <math.h>
@@ -133,6 +134,7 @@ npar_execute(struct casereader *input,
   casereader_destroy (input);
 }
 
+
 int
 cmd_npar_tests (struct lexer *lexer, struct dataset *ds)
 {
@@ -338,7 +340,9 @@ npar_custom_binomial (struct lexer *lexer, struct dataset *ds,
 
   btp->category1 = btp->category2 = btp->cutpoint = SYSMIS;
 
-  if ( lex_match(lexer, '(') )
+  btp->p = 0.5;
+
+  if ( lex_match (lexer, '(') )
     {
       if ( lex_force_num (lexer) )
        {
@@ -349,6 +353,10 @@ npar_custom_binomial (struct lexer *lexer, struct dataset *ds,
       else
        return 0;
     }
+  else
+    /* Kludge: q2c swallows the '=' so put it back here  */
+     lex_put_back (lexer, '=');
+
 
   if ( lex_match (lexer, '=') )
     {
@@ -377,6 +385,7 @@ npar_custom_binomial (struct lexer *lexer, struct dataset *ds,
        }
       else
        return 2;
+
     }
 
   specs->n_tests++;
index ea892b15ca6eaebab45170222048c0e570fce2a2..c2b8b1d73d21a3127deabfceec4ccf528dc043c6 100755 (executable)
@@ -178,7 +178,7 @@ END DATA.
 WEIGHT BY w.
 
 NPAR TESTS
-       /BINOMIAL(0.5) = x
+       /BINOMIAL = x
        .