 # Empirical CDF

Hello,

I am trying to get the graph of an empirical cumulative distribution function, but I cant seem to find the commands that I use in other softwares such as Matlab. In there it is ecdf(x). Is there a way to do this in Gauss?

Thanks.

0

I am not sure if any of the GAUSS applications have an ECDF function, but I think this procedure will do what you need.

```proc (1) = ecdf(x);
local bp_start, bp_end, bp_inc, bp_pts, out, num_breaks;

num_breaks = rows(x);

//calculate breakpoints
bp_start = minc(x);
bp_end = maxc(x);
bp_inc = (bp_end - bp_start)./num_breaks;
bp_pts = seqa(bp_start, bp_inc, num_breaks + 1);

//pre-allocate 'out' vector to avoid concatenation
out = zeros(rows(bp_pts), 1);
out2 = out;

//Clear code to calculate how many in each breakpoint
for i(1, rows(bp_pts), 1);
out[i] = sumc(x .< bp_pts[i]);
endfor;

retp(out);
endp;```

You can adjust the number of breakpoints num_breaks to trade-off between speed and the smoothness of the curve. Though, if speed is a concern you might want to replace the for loop at the end with a matrix based operation like this:

```//Faster matrix based code to calculate how many in each breakpoint
x = reshape(x', rows(bp_pts), rows(x));
out = sumr(x .< bp_pts);``` ### Have a Specific Question?

Get a real answer from a real person

### Need Support?

Get help from our friendly experts.