The MI Procedure

Example 76.13 Transforming to Normality

(View the complete code for this example.)

This example applies the MCMC method to the Fitness1 data set in which the variable Oxygen is transformed. Assume that Oxygen is skewed and can be transformed to normality with a logarithmic transformation. The following statements invoke the MI procedure and specify the transformation. The TRANSFORM statement specifies the log transformation for Oxygen. Note that the values displayed for Oxygen in all of the results correspond to transformed values.

proc mi data=Fitness1 seed=32937921
        nimpute=pctmissing mu0=50 10 180
        out=outex13;
   transform log(Oxygen);
   mcmc chain=multiple displayinit;
   var Oxygen RunTime RunPulse;
run;

The NIMPUTE=PCTMISSING option uses the percentage of the incomplete cases as the number of imputations.

The "Model Information"  table in Output 76.13.1 describes the method and options used in the multiple imputation process.

Output 76.13.1: Model Information

The MI Procedure

Model Information
Data SetWORK.FITNESS1
MethodMCMC
Multiple Imputation ChainMultiple Chains
Initial Estimates for MCMCEM Posterior Mode
StartStarting Value
PriorJeffreys
Number of Imputations33
Number of Burn-in Iterations200
Seed for random number generator32937921


The "Missing Data Patterns" table in Output 76.13.2 lists distinct missing data patterns with corresponding statistics for the Fitness1 data. Note that the values of Oxygen shown in the tables are transformed values.

Output 76.13.2: Missing Data Patterns

Missing Data Patterns
GroupOxygenRunTimeRunPulseFreqPercentGroup Means
OxygenRunTimeRunPulse
1XXX2167.743.82976010.809524171.666667
2XX.412.903.85181310.137500.
3X..39.683.955298..
4.XX13.23.11.950000176.000000
5.X.26.45.9.885000.
Transformed Variables: Oxygen


For the NIMPUTE=PCTMISSING option, the percentage of the incomplete cases, 10/31 = 32.3%, is used as the number of imputations. Thus, 33 imputations (after rounding up) are generated.

The "Variable Transformations" table in Output 76.13.3 lists the variables that have been transformed.

Output 76.13.3: Variable Transformations

Variable Transformations
Variable_Transform_
OxygenLOG


The "Initial Parameter Estimates for MCMC" table in Output 76.13.4 displays the starting mean and covariance estimates used in the MCMC method.

Output 76.13.4: Initial Parameter Estimates

Initial Parameter Estimates for MCMC
_TYPE__NAME_OxygenRunTimeRunPulse
MEAN 3.84612210.557605171.382949
COVOxygen0.010827-0.120891-0.328772
COVRunTime-0.1208911.7445803.011180
COVRunPulse-0.3287723.01118082.747609
Transformed Variables: Oxygen


Output 76.13.5 displays variance information from the multiple imputation.

Output 76.13.5: Variance Information

Variance Information (33 Imputations)
 VariableVarianceDFRelative
Increase
in Variance
Fraction
Missing
Information
Relative
Efficiency
BetweenWithinTotal
*Oxygen0.0000085820.0004070.00041627.5720.0217320.0212970.999355
 RunTime0.0023960.0682370.07070627.170.0361790.0349890.998941
 RunPulse0.8629373.2300864.11917321.410.2752520.2181140.993434
* Transformed Variables


Output 76.13.6 displays parameter estimates from the multiple imputation. Note that the parameter value of has also been transformed using the logarithmic transformation.

Output 76.13.6: Parameter Estimates

Parameter Estimates (33 Imputations)
 VariableMeanStd Error95% Confidence LimitsDFMinimumMaximumMu0t for H0:
Mean=Mu0
Pr > |t|
*Oxygen3.8463470.0203883.80463.888127.5723.8385993.8514833.912023-3.220.0033
 RunTime10.5431290.2659059.997711.088627.1710.45201810.63330210.0000002.040.0509
 RunPulse171.6487052.029575167.4329175.864521.41169.858210173.316307180.000000-4.110.0005
* Transformed Variables


The following statements list the first 10 observations of the data set Outex13 in Output 76.13.7. Note that the values for Oxygen are in the original scale.

proc print data=outex13(obs=10);
   title 'First 10 Observations of the Imputed Data Set';
run;

Output 76.13.7: Imputed Data Set in Original Scale

First 10 Observations of the Imputed Data Set

Obs_Imputation_OxygenRunTimeRunPulse
1144.609011.3700178.000
2145.313010.0700185.000
3154.29708.6500156.000
4159.57107.1440167.012
5149.87409.2200170.092
6144.811011.6300176.000
7138.583411.9500176.000
8143.737610.8500158.851
9139.442013.0800174.000
10160.05508.6300170.000


Note that the results in Output 76.13.7 can also be produced from the following statements without using a TRANSFORM statement. A transformed value of log(50)=3.91202 is used in the MU0= option.

data temp;
   set Fitness1;
   LogOxygen= log(Oxygen);
run;
proc mi data=temp seed=14337921 mu0=3.91202 10 180 out=outtemp;
   mcmc chain=multiple displayinit;
   var LogOxygen RunTime RunPulse;
run;
data outex13;
   set outtemp;
   Oxygen= exp(LogOxygen);
run;