Skip to content

Commit c6d9d19

Browse files
handling of nan values + p = alpha case (#405)
1 parent 961df0b commit c6d9d19

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

inst/signtest.m

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@
177177

178178
## Calculate differences between X and Y vectors: remove equal values of NaNs
179179
XY_diff = x(:) - my(:);
180-
NO_diff = (XY_diff == 0);
181-
XY_diff(NO_diff | isnan (NO_diff)) = [];
180+
XY_diff(XY_diff == 0 | isnan (XY_diff)) = [];
182181

183182
## Recalculate remaining length of X vector (after equal or NaNs removal)
184183
n = length (XY_diff);
@@ -236,7 +235,7 @@
236235

237236
endswitch
238237
stats.sign = pos_n;
239-
h = double (p < alpha);
238+
h = double (p <= alpha);
240239
endfunction
241240

242241
## Test output
@@ -257,6 +256,22 @@
257256
%! assert (h, 0);
258257
%! assert (stats.zval, 0.4082482904638631, 1e-14);
259258
%! assert (stats.sign, 4);
259+
%!test
260+
%! x = [1, 2, 3, 4, NaN, NaN, NaN];
261+
%! [pval, h] = signtest (x);
262+
%! assert (pval, 0.1250, 1e-4);
263+
%! assert (h, 0);
264+
%!test
265+
%! x = [1, 2, 3, 4, 5];
266+
%! y = [1, 1, NaN, 5, 4];
267+
%! [pval, h] = signtest (x, y);
268+
%! assert (pval, 1.0, 1e-4);
269+
%! assert (h, 0);
270+
%!test
271+
%! x = [1, 2, 3, 4, 5, -1];
272+
%! [p_val, ~] = signtest (x);
273+
%! [p, h, stats] = signtest (x, 0, "alpha", p_val);
274+
%! assert (h, 1);
260275

261276
## Test input validation
262277
%!error <signtest: X must be a vector.> signtest (ones (2))

0 commit comments

Comments
 (0)