DATA Step, Macro, Functions and more

Fitting exponential distributed data and overlaying empirical with theoretical data

Reply
Contributor
Posts: 21

Fitting exponential distributed data and overlaying empirical with theoretical data

Hi all,

 

By using SEVERITY procedure, I found that the exponential distribution is the one that fits better empirical data; so, I got the parameter theta.

 

I built a random dataset distributed according to an exponential distribution wiith parameter theta equal to 0.7423, on the basis of the following code:

 

 

data exponential (keep = x);
	call streaminit(&seed.);
	theta = &theta.;
		do i = 1 to &n.;
			x = theta * rand("Exponential");
			output;
		end;
run;

 

where n, theta estimate and seed are previosly defined.

 

After that, I merge the empirical data with the ones etimated above.

 

Now, I want to compare graphically the distributions.

 

Can you suggest a way to overlay them?

 

Thanks all!

 

 

 

 

Super User
Super User
Posts: 7,988

Re: Fitting exponential distributed data and overlaying empirical with theoretical data

Posted in reply to Quantopic

Is this a "from a stats point of view whats the best way to graphically represent this type of data" 

or a "technically how do I overlay data in a graph" question?

I can't answer the first as thats all greek to me (literally), but for the second, using sgplot ot Graph Template language it is very easy to overlay multiple plots, first join your data, then sgplot it:

proc sgplot data=have;
  scatter x=xvalue y=empirical;
  scatter x=xvalue y=othervalue;
run;

Will overlay the two graphs, although need to check axis values etc, to make sure they match somehow (not much good if all of one set of values is 100* more than the other for instance.

 

SAS Super FREQ
Posts: 3,755

Re: Fitting exponential distributed data and overlaying empirical with theoretical data

[ Edited ]
Posted in reply to Quantopic

You've generated random Exp(theta) data. A better way is to compute the Exp(theta) PDF (density) and overlay that.  You can do it with PROC SGPLOT, but the easiest way is to use the ODS graphics that are automatically produced by PROC SEVERITY or PROC UNIVARIATE. Try submitting

ODS GRAPHICS ON;

before you run the PROC SEVERITY code and you should automatically get a histogram and a fitted density curve, as shown below:

data exponential (keep = x);
call streaminit(12345);
theta = 7;
do i = 1 to 200;
	x = theta * rand("Exponential");
	output;
end;
run;

ods graphics on;
proc severity data=exponential;
   loss x;
   dist exp;
run;
Ask a Question
Discussion stats
  • 2 replies
  • 92 views
  • 0 likes
  • 3 in conversation