/*-------------------------------------------------------------- SAS Sample Library Name: hpsevg01.sas Description: Example program from SAS High Performance Analytics User's Guide, The HPSEVERITY Procedure Title: Getting Started with PROC HPSEVERITY Product: SAS/HPA Software Keys: Severity Distribution Modeling PROC: HPSEVERITY Notes: --------------------------------------------------------------*/ /*------------- Simple Lognormal Example -------------*/ data test_sev1(keep=y label='Simple Lognormal Sample'); call streaminit(45678); label y='Response Variable'; Mu = 1.5; Sigma = 0.25; do n = 1 to 100; y = exp(Mu) * rand('LOGNORMAL')**Sigma; output; end; run; proc hpseverity data=test_sev1 crit=aicc; loss y; dist _predefined_; run; /*----- Lognormal Model with left-truncation and censoring -----*/ data test_sev2(keep=y threshold limit label='A Lognormal Sample With Censoring and Truncation'); set test_sev1; label y='Censored & Truncated Response'; if _n_ = 1 then call streaminit(45679); /* make about 20% of the observations left-truncated */ if (rand('UNIFORM') < 0.2) then threshold = y * (1 - rand('UNIFORM')); else threshold = .; /* make about 15% of the observations right-censored */ iscens = (rand('UNIFORM') < 0.15); if (iscens) then limit = y; else limit = .; run; proc hpseverity data=test_sev2 crit=aicc print=all ; loss y / lt=threshold rc=limit; dist logn burr gamma weibull; performance nthreads=2; run; /*------ Specifying initial values using INIT= option -------*/ proc hpseverity data=test_sev2 crit=aicc print=all; loss y / lt=threshold rc=limit; dist burr(init=(theta=4.62348 alpha=1.15706 gamma=6.41227)); performance nthreads=2; run; /*----------- Lognormal Model with Regressors ------------*/ data test_sev3(keep=y x1-x3 label='A Lognormal Sample Affected by Regressors'); array x{*} x1-x3; array b{4} _TEMPORARY_ (1 0.75 -1 0.25); call streaminit(45678); label y='Response Influenced by Regressors'; Sigma = 0.25; do n = 1 to 100; Mu = b(1); /* log of base value of scale */ do i = 1 to dim(x); x(i) = rand('UNIFORM'); Mu = Mu + b(i+1) * x(i); end; y = exp(Mu) * rand('LOGNORMAL')**Sigma; output; end; run; proc hpseverity data=test_sev3 crit=aicc print=all; loss y; scalemodel x1-x3; dist logn burr gamma; run;