/*-------------------------------------------------------------- SAS Sample Library Name: hpseve01.sas Description: Example program from SAS High Performance Analytics User's Guide, The HPSEVERITY Procedure Title: Defining and Fitting the Normal Distribution Product: SAS/HPA 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;