Missing or zero standard errors and missing p-values for the estimated parameters in PROC QLIM


In PROC QLIM, missing or zero standard errors and missing t  and p -values commonly occur when the Hessian matrix is singular or nearly singular. This can happen for many different reasons depending on the data and/or model. One very common situation that can result in the Hessian being singular or nearly singular is poorly scaled variables. In the following example, a poorly scaled variable in the model results in zero standard errors and missing t  and p -values. You can avoid the problem by rescaling the variable.

The following statements create the data set to be modeled. In these data, Hours is the number of hours the wife worked outside the household in a given year, Yrs_Ed is the years of education, and Yrs_Exp is the years of work experience. The variable, Hrs_Exp, is created giving work experience measured in minutes.

      data test;
         input Hours Yrs_Ed Yrs_Exp;
         Min_Exp = Yrs_Exp*365*24*60;
         datalines;
         0 8 9
         0 8 12
         0 9 10
         0 10 15
         0 11 4
         0 11 6
         1000 12 1
         1960 12 29
         0 13 3 
         2100 13 36
         3686 14 11
         1920 14 38
         0 15 14
         1728 16 3
         1568 16 19
         1316 17 7
         0 17 15
         ; 

Notice that when measured on the minute scale, the values of work experience are quite large.

      proc print data=test noobs; 
         var Hours Yrs_Ed Min_Exp;
         run; 

HoursYrs_EdMin_Exp
084730400
086307200
095256000
0107884000
0112102400
0113153600
100012525600
19601215242400
0131576800
21001318921600
3686145781600
19201419972800
0157358400
1728161576800
1568169986400
1316173679200
0177884000

 

Fitting a tobit model to the above data results in zero standard error for the Min_Exp parameter. The corresponding t  value and p -value are missing.

      proc qlim data=test;
         model Hours = Yrs_Ed Min_Exp;
         endogenous Hours ~ censored(lb=0);
      run; 

Parameter Estimates
ParameterDFEstimateStandard Errort ValueApprox
Pr > |t|
Intercept1-5598.6428.27529-198<.0001
Yrs_Ed1373.147754.382626.86<.0001
Min_Exp10.0001210..
_Sigma11582.87391.1864.05<.0001

 

The problem is caused by the extremely large values of the work experience predictor when measured in minutes. You can avoid the problem by rescaling this predictor to have smaller values. By using work experience measured in years (Yrs_Exp) rather than in minutes (Min_Exp), the information is retained but the values are much smaller.

      proc print data=test noobs; 
         var Hours Yrs_Ed Yrs_Exp;
         run;

HoursYrs_EdYrs_Exp
089
0812
0910
01015
0114
0116
1000121
19601229
0133
21001336
36861411
19201438
01514
1728163
15681619
1316177
01715

 

Refitting the model using the rescaled predictor produces a reasonable standard error estimate as well as t  and p -values.

      proc qlim data=test;
         model Hours = Yrs_Ed Yrs_Exp;
         endogenous Hours ~ censored(lb=0);
      run;

Parameter Estimates
ParameterDFEstimateStandard Errort ValueApprox
Pr > |t|
Intercept1-5598.327.69222-202.16<.0001
Yrs_Ed1373.123353.988886.91<.0001
Yrs_Exp163.3362536.55131.730.0831
_Sigma11582.86390.07654.06<.0001