# Empirical CDF

0

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);```

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);```

• ### Aptech Systems, Inc. Worldwide Headquarters

Aptech Systems, Inc.
2350 East Germann Road, Suite #21
Chandler, AZ 85286

Phone: 360.886.7100
FAX: 360.886.8922

• ### Training & Events

Want more guidance while learning about the full functionality of GAUSS and its capabilities? Get in touch for in-person training or browse additional references below.

• ### Tutorials

Step-by-step, informative lessons for those who want to dive into GAUSS and achieve their goals, fast.

• ### Want to find out more?

Get a real answer from a real person

• ### Have a Specific Question?

Get a real answer from a real person

• Need Support?
• ### Support Plans

Premier Support and Platinum Premier Support are annually renewable membership programs that provide you with important benefits including technical support, product maintenance, and substantial cost-saving features for your GAUSS System or the GAUSS Engine.

• ### User Forums

Join our community to see why our users are considered some of the most active and helpful in the industry!