Defining and Fitting the Normal Distribution
/*--------------------------------------------------------------
SAS Sample Library
Name: hsevex01.sas
Description: Example program from SAS/ETS High Performance
Procedures User's Guide, The HPSEVERITY Procedure
Title: Defining and Fitting the Normal Distribution
Product: SAS High Performance Econometrics Software
Keys: Severity Distribution Modeling
PROC: HPSEVERITY
Notes:
--------------------------------------------------------------*/
/*-------- Define Normal Distribution with PROC FCMP ----------*/
proc fcmp library=sashelp.svrtdist outlib=work.sevexmpl.models;
function normal_pdf(x,Mu,Sigma);
/* Mu : Location */
/* Sigma : Standard Deviation */
return ( exp(-(x-Mu)**2/(2 * Sigma**2)) /
(Sigma * sqrt(2*constant('PI'))) );
endsub;
function normal_cdf(x,Mu,Sigma);
/* Mu : Location */
/* Sigma : Standard Deviation */
z = (x-Mu)/Sigma;
return (0.5 + 0.5*erf(z/sqrt(2)));
endsub;
subroutine normal_parminit(dim, x[*], nx[*], F[*], Ftype, Mu, Sigma);
outargs Mu, Sigma;
array m[2] / nosymbols;
/* Compute estimates by using method of moments */
call svrtutil_rawmoments(dim, x, nx, 2, m);
Mu = m[1];
Sigma = sqrt(m[2] - m[1]**2);
endsub;
subroutine normal_lowerbounds(Mu, Sigma);
outargs Mu, Sigma;
Mu = .; /* Mu has no lower bound */
Sigma = 0; /* Sigma > 0 */
endsub;
quit;
/*-------- Simulate a Normal sample ----------*/
data testnorm(keep=y);
call streaminit(12345);
do i=1 to 100;
y = rand('NORMAL', 10, 2.5);
output;
end;
run;
/*--- Set the search path for functions defined with PROC FCMP ---*/
options cmplib=(work.sevexmpl);
/*--- Fit models with PROC HPSEVERITY ---*/
proc hpseverity data=testnorm print=all;
loss y;
dist Normal;
run;