## 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 / nosymbols;

/* Compute estimates by using method of moments */
call svrtutil_rawmoments(dim, x, nx, 2, m);
Mu   = m;
Sigma = sqrt(m - m**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;

```