
This example creates data sets that contains parameter estimates and covariance matrices computed by a mixed model analysis for a set of imputed data sets. These estimates are then combined to generate valid statistical inferences about the parameters.
The following PROC MIXED statements generate the fixed-effect parameter estimates and covariance matrix for each imputed data set:
ods select none; proc mixed data=outmi; model Oxygen= RunTime RunPulse RunTime*RunPulse/solution covb; by _Imputation_; ods output SolutionF=mixparms CovB=mixcovb; run; ods select all;
Because of the ODS SELECT statements, no output is displayed. The ODS OUTPUT statement creates two SAS data sets, named mixparms and mixcovb, from the two ODS tables. The following statements display (in Output 76.4.1) output parameter estimates for the first two imputed data sets:
proc print data=mixparms (obs=8); var _Imputation_ Effect Estimate StdErr; title 'MIXED Model Coefficients (First Two Imputations)'; run;
Output 76.4.1: PROC MIXED Model Coefficients
| MIXED Model Coefficients (First Two Imputations) |
| Obs | _Imputation_ | Effect | Estimate | StdErr |
|---|---|---|---|---|
| 1 | 1 | Intercept | 148.09 | 81.5231 |
| 2 | 1 | RunTime | -8.8115 | 7.8794 |
| 3 | 1 | RunPulse | -0.4123 | 0.4684 |
| 4 | 1 | RunTime*RunPulse | 0.03437 | 0.04517 |
| 5 | 2 | Intercept | 64.3607 | 64.6034 |
| 6 | 2 | RunTime | -1.1270 | 6.4307 |
| 7 | 2 | RunPulse | 0.08160 | 0.3688 |
| 8 | 2 | RunTime*RunPulse | -0.01069 | 0.03664 |
The following statements display (in Output 76.4.2) the output covariance matrices associated with the parameter estimates from PROC MIXED for the first two imputed data sets:
proc print data=mixcovb (obs=8); var _Imputation_ Row Effect Col1 Col2 Col3 Col4; title 'Covariance Matrices (First Two Imputations)'; run;
Output 76.4.2: PROC MIXED Covariance Matrices
| Covariance Matrices (First Two Imputations) |
| Obs | _Imputation_ | Row | Effect | Col1 | Col2 | Col3 | Col4 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | Intercept | 6646.01 | -637.40 | -38.1515 | 3.6542 |
| 2 | 1 | 2 | RunTime | -637.40 | 62.0842 | 3.6548 | -0.3556 |
| 3 | 1 | 3 | RunPulse | -38.1515 | 3.6548 | 0.2194 | -0.02099 |
| 4 | 1 | 4 | RunTime*RunPulse | 3.6542 | -0.3556 | -0.02099 | 0.002040 |
| 5 | 2 | 1 | Intercept | 4173.59 | -411.46 | -23.7889 | 2.3441 |
| 6 | 2 | 2 | RunTime | -411.46 | 41.3545 | 2.3414 | -0.2353 |
| 7 | 2 | 3 | RunPulse | -23.7889 | 2.3414 | 0.1360 | -0.01338 |
| 8 | 2 | 4 | RunTime*RunPulse | 2.3441 | -0.2353 | -0.01338 | 0.001343 |
Note that the variables Col1, Col2, Col3, and Col4 are used to identify the effects Intercept, RunTime, RunPulse, and RunTime*RunPulse, respectively, through the variable Row.
For univariate inference, only parameter estimates and their associated standard errors are needed. The following statements use the MIANALYZE procedure with the input PARMS= data set to produce univariate results:
proc mianalyze parms=mixparms edf=28; modeleffects Intercept RunTime RunPulse RunTime*RunPulse; run;
The "Variance Information" table in Output 76.4.3 displays the between-imputation, within-imputation, and total variances for combining complete-data inferences.
Output 76.4.3: Variance Information
| Variance Information (25 Imputations) | |||||||
|---|---|---|---|---|---|---|---|
| Parameter | Variance | DF | Relative Increase in Variance |
Fraction Missing Information |
Relative Efficiency |
||
| Between | Within | Total | |||||
| Intercept | 1457.114815 | 4592.351134 | 6107.750541 | 18.748 | 0.329983 | 0.251939 | 0.990023 |
| RunTime | 12.937905 | 43.960426 | 57.415848 | 19.175 | 0.306080 | 0.237831 | 0.990576 |
| RunPulse | 0.045956 | 0.152072 | 0.199867 | 19.026 | 0.314288 | 0.242732 | 0.990384 |
| RunTime*RunPulse | 0.000409 | 0.001447 | 0.001872 | 19.398 | 0.293964 | 0.230483 | 0.990865 |
The "Parameter Estimates" table in Output 76.4.4 displays the estimated mean and standard error of the regression coefficients.
Output 76.4.4: Parameter Estimates
| Parameter Estimates (25 Imputations) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Parameter | Estimate | Std Error | 95% Confidence Limits | DF | Minimum | Maximum | Theta0 | t for H0: Parameter=Theta0 |
Pr > |t| | |
| Intercept | 155.866055 | 78.152099 | -7.8574 | 319.5895 | 18.748 | 64.360719 | 207.413571 | 0 | 1.99 | 0.0609 |
| RunTime | -9.265145 | 7.577325 | -25.1149 | 6.5846 | 19.175 | -14.937943 | -1.127010 | 0 | -1.22 | 0.2362 |
| RunPulse | -0.443201 | 0.447065 | -1.3788 | 0.4924 | 19.026 | -0.738608 | 0.081597 | 0 | -0.99 | 0.3340 |
| RunTime*RunPulse | 0.035841 | 0.043272 | -0.0546 | 0.1263 | 19.398 | -0.010690 | 0.068289 | 0 | 0.83 | 0.4176 |
Since each covariance matrix contains variables Row, Col1, Col2, Col3, and Col4 for parameters, the EFFECTVAR=ROWCOL option is needed when you specify the COVB= option. The following statements illustrate
the use of the MIANALYZE procedure with input PARMS= and COVB(EFFECTVAR=ROWCOL)= data sets:
proc mianalyze parms=mixparms edf=28
covb(effectvar=rowcol)=mixcovb;
modeleffects Intercept RunTime RunPulse RunTime*RunPulse;
run;