# HG changeset patch # User Rik # Date 1388697831 28800 # Node ID 1461b9cfac4e8a9a58d810e25bdc07e6839ab013 # Parent d3c6842ef18894ae83cb92b4e35dc2f3352f2bdc 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. diff -r d3c6842ef188 -r 1461b9cfac4e scripts/statistics/distributions/empirical_pdf.m --- 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)