The NLP Procedure |
The following data are taken from Lawless (1982, p. 193) and represent the number of days it took rats painted with a carcinogen to develop carcinoma. The last two observations are censored data from a group of 19 rats:
data pike; input days cens @@; datalines; 143 0 164 0 188 0 188 0 190 0 192 0 206 0 209 0 213 0 216 0 220 0 227 0 230 0 234 0 246 0 265 0 304 0 216 1 244 1 ;
Suppose that you want to show how to compute the maximum likelihood estimates of the scale parameter ( in Lawless), the shape parameter ( in Lawless), and the location parameter ( in Lawless). The observed likelihood function of the three-parameter Weibull transformation (Lawless 1982, p. 191) is
and the log likelihood is
The log likelihood function can be evaluated only for , , and . In the estimation process, you must enforce these conditions using lower and upper boundary constraints. The three-parameter Weibull estimation can be numerically difficult, and it usually pays off to provide good initial estimates. Therefore, you first estimate and of the two-parameter Weibull distribution for constant . You then use the optimal parameters and as starting values for the three-parameter Weibull estimation.
Although the use of an INEST= data set is not really necessary for this simple example, it illustrates how it is used to specify starting values and lower boundary constraints:
data par1(type=est); keep _type_ sig c theta; _type_='parms'; sig = .5; c = .5; theta = 0; output; _type_='lb'; sig = 1.0e-6; c = 1.0e-6; theta = .; output; run;
The following PROC NLP call specifies the maximization of the log likelihood function for the two-parameter Weibull estimation for constant :
proc nlp data=pike tech=tr inest=par1 outest=opar1 outmodel=model cov=2 vardef=n pcov phes; max logf; parms sig c; profile sig c / alpha = .9 to .1 by -.1 .09 to .01 by -.01; x_th = days - theta; s = - (x_th / sig)**c; if cens=0 then s + log(c) - c*log(sig) + (c-1)*log(x_th); logf = s; run;
After a few iterations you obtain the solution given in Output 6.6.1.
Optimization Results | ||||||
---|---|---|---|---|---|---|
Parameter Estimates | ||||||
N | Parameter | Estimate | Approx Std Err |
t Value | Approx Pr > |t| |
Gradient Objective Function |
1 | sig | 234.318611 | 9.645908 | 24.292021 | 9.050475E-16 | 1.3372183E-9 |
2 | c | 6.083147 | 1.068229 | 5.694611 | 0.000017269 | -7.859277E-9 |
Since the gradient has only small elements and the Hessian (shown in Output 6.6.2) is negative definite (has only negative eigenvalues), the solution defines an isolated maximum point.
Hessian Matrix | ||
---|---|---|
sig | c | |
sig | -0.011457556 | 0.0257527577 |
c | 0.0257527577 | -0.934221388 |
The square roots of the diagonal elements of the approximate covariance matrix of parameter estimates are the approximate standard errors (ASE’s). The covariance matrix is given in Output 6.6.3.
Covariance Matrix 2: H = (NOBS/d) inv(G) |
||
---|---|---|
sig | c | |
sig | 93.043549863 | 2.5648395794 |
c | 2.5648395794 | 1.141112488 |
The confidence limits in Output 6.6.4 correspond to the values in the PROFILE statement.
Wald and PL Confidence Limits | |||||||
---|---|---|---|---|---|---|---|
N | Parameter | Estimate | Alpha | Profile Likelihood Confidence Limits |
Wald Confidence Limits | ||
1 | sig | 234.318611 | 0.900000 | 233.111324 | 235.532695 | 233.106494 | 235.530729 |
1 | sig | . | 0.800000 | 231.886549 | 236.772876 | 231.874849 | 236.762374 |
1 | sig | . | 0.700000 | 230.623280 | 238.063824 | 230.601846 | 238.035377 |
1 | sig | . | 0.600000 | 229.292797 | 239.436639 | 229.260292 | 239.376931 |
1 | sig | . | 0.500000 | 227.855829 | 240.935290 | 227.812545 | 240.824678 |
1 | sig | . | 0.400000 | 226.251597 | 242.629201 | 226.200410 | 242.436813 |
1 | sig | . | 0.300000 | 224.372260 | 244.643392 | 224.321270 | 244.315953 |
1 | sig | . | 0.200000 | 221.984557 | 247.278423 | 221.956882 | 246.680341 |
1 | sig | . | 0.100000 | 218.390824 | 251.394102 | 218.452504 | 250.184719 |
1 | sig | . | 0.090000 | 217.884162 | 251.987489 | 217.964960 | 250.672263 |
1 | sig | . | 0.080000 | 217.326988 | 252.645278 | 217.431654 | 251.205569 |
1 | sig | . | 0.070000 | 216.708814 | 253.383546 | 216.841087 | 251.796136 |
1 | sig | . | 0.060000 | 216.008815 | 254.228034 | 216.176649 | 252.460574 |
1 | sig | . | 0.050000 | 215.199301 | 255.215496 | 215.412978 | 253.224245 |
1 | sig | . | 0.040000 | 214.230116 | 256.411041 | 214.508337 | 254.128885 |
1 | sig | . | 0.030000 | 213.020874 | 257.935686 | 213.386118 | 255.251105 |
1 | sig | . | 0.020000 | 211.369067 | 260.066128 | 211.878873 | 256.758350 |
1 | sig | . | 0.010000 | 208.671091 | 263.687174 | 209.472398 | 259.164825 |
2 | c | 6.083147 | 0.900000 | 5.950029 | 6.217752 | 5.948912 | 6.217382 |
2 | c | . | 0.800000 | 5.815559 | 6.355576 | 5.812514 | 6.353780 |
2 | c | . | 0.700000 | 5.677909 | 6.499187 | 5.671537 | 6.494757 |
2 | c | . | 0.600000 | 5.534275 | 6.651789 | 5.522967 | 6.643327 |
2 | c | . | 0.500000 | 5.380952 | 6.817880 | 5.362638 | 6.803656 |
2 | c | . | 0.400000 | 5.212344 | 7.004485 | 5.184103 | 6.982191 |
2 | c | . | 0.300000 | 5.018784 | 7.225733 | 4.975999 | 7.190295 |
2 | c | . | 0.200000 | 4.776379 | 7.506166 | 4.714157 | 7.452137 |
2 | c | . | 0.100000 | 4.431310 | 7.931669 | 4.326067 | 7.840227 |
2 | c | . | 0.090000 | 4.382687 | 7.991457 | 4.272075 | 7.894220 |
2 | c | . | 0.080000 | 4.327815 | 8.056628 | 4.213014 | 7.953280 |
2 | c | . | 0.070000 | 4.270773 | 8.129238 | 4.147612 | 8.018682 |
2 | c | . | 0.060000 | 4.207130 | 8.211221 | 4.074029 | 8.092265 |
2 | c | . | 0.050000 | 4.134675 | 8.306218 | 3.989457 | 8.176837 |
2 | c | . | 0.040000 | 4.049531 | 8.418782 | 3.889274 | 8.277021 |
2 | c | . | 0.030000 | 3.945037 | 8.559677 | 3.764994 | 8.401300 |
2 | c | . | 0.020000 | 3.805759 | 8.749130 | 3.598076 | 8.568219 |
2 | c | . | 0.010000 | 3.588814 | 9.056751 | 3.331572 | 8.834722 |
You now prepare for the three-parameter Weibull estimation by using PROC UNIVARIATE to obtain the smallest data value for the upper boundary constraint for . For this small problem, you can do this much more simply by just using a value slightly smaller than the minimum data value 143.
/* Calculate upper bound for theta parameter */ proc univariate data=pike noprint; var days; output out=stats n=nobs min=minx range=range; run;
data stats; set stats; keep _type_ theta; /* 1. write parms observation */ theta = minx - .1 * range; if theta < 0 then theta = 0; _type_ = 'parms'; output; /* 2. write ub observation */ theta = minx * (1 - 1e-4); _type_ = 'ub'; output; run;
The data set PAR2 specifies the starting values and the lower and upper bounds for the three-parameter Weibull problem:
proc sort data=opar1; by _type_; run;
data par2(type=est); merge opar1(drop=theta) stats; by _type_; keep _type_ sig c theta; if _type_ in ('parms' 'lowerbd' 'ub'); run;
The following PROC NLP call uses the MODEL= input data set containing the log likelihood function that was saved during the two-parameter Weibull estimation:
proc nlp data=pike tech=tr inest=par2 outest=opar2 model=model cov=2 vardef=n pcov phes; max logf; parms sig c theta; profile sig c theta / alpha = .5 .1 .05 .01; run;
After a few iterations, you obtain the solution given in Output 6.6.5.
Optimization Results | ||||||
---|---|---|---|---|---|---|
Parameter Estimates | ||||||
N | Parameter | Estimate | Approx Std Err |
t Value | Approx Pr > |t| |
Gradient Objective Function |
1 | sig | 108.382690 | 32.573321 | 3.327345 | 0.003540 | -3.132469E-9 |
2 | c | 2.711476 | 1.058757 | 2.560998 | 0.019108 | -0.000000487 |
3 | theta | 122.025982 | 28.692364 | 4.252908 | 0.000430 | -6.760135E-8 |
From inspecting the first- and second-order derivatives at the optimal solution, you can verify that you have obtained an isolated maximum point. The Hessian matrix is shown in Output 6.6.6.
Hessian Matrix | |||
---|---|---|---|
sig | c | theta | |
sig | -0.010639963 | 0.045388887 | -0.01003374 |
c | 0.045388887 | -4.07872453 | -0.083028097 |
theta | -0.01003374 | -0.083028097 | -0.014752243 |
The square roots of the diagonal elements of the approximate covariance matrix of parameter estimates are the approximate standard errors. The covariance matrix is given in Output 6.6.7.
Covariance Matrix 2: H = (NOBS/d) inv(G) | |||
---|---|---|---|
sig | c | theta | |
sig | 1060.9795634 | 29.924959631 | -890.0493649 |
c | 29.924959631 | 1.1209334438 | -26.66229938 |
theta | -890.0493649 | -26.66229938 | 823.21458961 |
The difference between the Wald and profile CLs for parameter PHI2 are remarkable, especially for the upper 95% and 99% limits, as shown in Output 6.6.8.
Wald and PL Confidence Limits | |||||||
---|---|---|---|---|---|---|---|
N | Parameter | Estimate | Alpha | Profile Likelihood Confidence Limits |
Wald Confidence Limits | ||
1 | sig | 108.382732 | 0.500000 | 91.811562 | 141.564605 | 86.412310 | 130.353154 |
1 | sig | . | 0.100000 | 76.502373 | . | 54.804263 | 161.961200 |
1 | sig | . | 0.050000 | 72.215845 | . | 44.540049 | 172.225415 |
1 | sig | . | 0.010000 | 64.262384 | . | 24.479224 | 192.286240 |
2 | c | 2.711477 | 0.500000 | 2.139297 | 3.704052 | 1.997355 | 3.425599 |
2 | c | . | 0.100000 | 1.574162 | 9.250072 | 0.969973 | 4.452981 |
2 | c | . | 0.050000 | 1.424853 | 19.516170 | 0.636347 | 4.786607 |
2 | c | . | 0.010000 | 1.163096 | 19.540685 | -0.015706 | 5.438660 |
3 | theta | 122.025942 | 0.500000 | 91.027144 | 135.095454 | 102.673186 | 141.378698 |
3 | theta | . | 0.100000 | . | 141.833769 | 74.831079 | 142.985700 |
3 | theta | . | 0.050000 | . | 142.512603 | 65.789795 | 142.985700 |
3 | theta | . | 0.010000 | . | 142.967407 | 48.119116 | 142.985700 |
Copyright © SAS Institute, Inc. All Rights Reserved.