changeset 18194:1461b9cfac4e

empirical_pdf.m: Fix calculation when distribution has ties (bug #41008). empirical_pdf.m: Use histc to calculate relative frequency when the the same value occurs multiple times in the data.
author Rik <rik@octave.org>
date Thu, 02 Jan 2014 13:23:51 -0800
parents d3c6842ef188
children 1b6db9303933
files scripts/statistics/distributions/empirical_pdf.m
diffstat 1 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/statistics/distributions/empirical_pdf.m	Thu Jan 02 11:31:43 2014 -0800
+++ b/scripts/statistics/distributions/empirical_pdf.m	Thu Jan 02 13:23:51 2014 -0800
@@ -37,7 +37,16 @@
     error ("empirical_pdf: DATA must be a vector");
   endif
 
-  pdf = discrete_pdf (x, data, ones (size (data)));
+  uniq_vals = unique (data);
+  if (numel (data) != numel (uniq_vals))
+    ## Handle ties, multiple elements with same value
+    p = histc (data, uniq_vals);
+    data = uniq_vals;
+  else
+    p = ones (size (data));
+  endif
+
+  pdf = discrete_pdf (x, data, p);
 
 endfunction
 
@@ -52,6 +61,9 @@
 %!assert (empirical_pdf (single (x), v), single (y))
 %!assert (empirical_pdf (x, single (v)), single (y))
 
+%% Test distribution with ties
+%!assert (empirical_pdf (2, [1 2 3 2]), 0.5)
+
 %% Test input validation
 %!error empirical_pdf ()
 %!error empirical_pdf (1)