In some mixed models analyses you might want to set certain covariance parameter estimates at known values. You can do this with the HOLD= option in the PARMS statement in PROC MIXED. However, this option might not work as expected depending on whether the residual variance is profiled out of the likelihood calculations.
The following data are from Pothoff and Roy (1964) and consist of growth measurements for 11 girls and 16 boys at ages 8, 10, 12, and 14.
data pr;
input Person Gender $ y1 y2 y3 y4;
y=y1; Age=8; output;
y=y2; Age=10; output;
y=y3; Age=12; output;
y=y4; Age=14; output;
drop y1-y4;
datalines;
1 F 21.0 20.0 21.5 23.0
2 F 21.0 21.5 24.0 25.5
3 F 20.5 24.0 24.5 26.0
4 F 23.5 24.5 25.0 26.5
5 F 21.5 23.0 22.5 23.5
6 F 20.0 21.0 21.0 22.5
7 F 21.5 22.5 23.0 25.0
8 F 23.0 23.0 23.5 24.0
9 F 20.0 21.0 22.0 21.5
10 F 16.5 19.0 19.0 19.5
11 F 24.5 25.0 28.0 28.0
12 M 26.0 25.0 29.0 31.0
13 M 21.5 22.5 23.0 26.5
14 M 23.0 22.5 24.0 27.5
15 M 25.5 27.5 26.5 27.0
16 M 20.0 23.5 22.5 26.0
17 M 24.5 25.5 27.0 28.5
18 M 22.0 22.0 24.5 26.5
19 M 24.0 21.5 24.5 25.5
20 M 23.0 20.5 31.0 26.0
21 M 27.5 28.0 31.0 31.5
22 M 23.0 23.0 23.5 25.0
23 M 21.5 23.5 24.0 28.0
24 M 17.0 24.5 26.0 29.5
25 M 22.5 25.5 25.5 26.0
26 M 23.0 24.5 26.0 30.0
27 M 22.0 21.5 23.5 25.0
;
The following statements fit a mixed model to the data using an unstructured covariance structure. The ODS OUTPUT statement saves the estimated covariance parameters in a data set.
proc mixed data=pr;
class Person Gender;
model y = Gender Age Gender*Age / s;
repeated / type=un subject=Person;
ods output covparms=cov;
run;
The Covariance Parameter Estimates table is shown below.
Suppose you want to analyze these data in a slightly different way. You want to remove the interaction term from the model, but leave the variance estimates unchanged in the covariance structure. You can use the HOLD= option in the PARMS statement to hold certain covariance parameters at their starting values. They are not updated during the iterative fitting process. This approach works for models that do not profile the residual variance out of the log likelihood as illustrated below. With the unstructured covariance structure, there is no common variance to be profiled out of the likelihood calculations.
The PARMSDATA= option in the PARMS statement is used to specify the starting values for the covariance parameters. The statements below use the values from the COVPARMS= data set that was saved in the previous analysis. The variance estimates (UN(1,1), UN(2,2), UN(3,3) and UN(4,4)) are parameter numbers 1, 3, 6, and 10 in the Covariance Parameter Estimates table. These parameters are held fixed by the HOLD= option in the PARMS statement.
proc mixed data=pr ;
class Person Gender;
model y = Gender Age / s;
repeated / type=un subject=Person;
parms / parmsdata=cov hold=1,3,6,10 ;
run;
Notice that the variances are unchanged from the previous analysis and the covariance parameters are updated.
Now suppose you want to fit a Toeplitz structure to the data. This structure has a common variance that is not profiled out of the likelihood by default. This variance is labeled Residual variance and is presented as the last parameter in the Covariance Parameter Estimates table. These statements fit the model.
proc mixed data=pr;
class Person Gender;
model y = Gender Age Gender*Age / s;
repeated / type=toep subject=Person;
ods output covparms=cov;
run;
In the table below, TOEP(2), TOEP(3), and TOEP(4) are the covariance parameter estimates from the Toeplitz structure. The variance is profiled out of the likelihood during optimization and is labeled Residual. It is the last one in the table.
Now suppose you want to remove the interaction term from the model but keep the covariance parameter estimates unchanged. Using the HOLD= option in the PARMS statement does not work in this case. If you specify HOLD=1,2,3 in the PARMS statement, the values change because the covariance parameters are updated once during the profiling of the likelihood. You need to use the NOPROFILE option in the PROC MIXED statement to prevent the profiling of the likelihood. This prevents the updating of the covariance parameter values. However, the order of the parameters in the Covariance Parameter Estimates table changes when the likelihood is not profiled. The variance labeled Residual in the previous analysis becomes the first parameter, rather than the last, in the Covariance Parameter Estimates table. As a result, you need to change the PARMSDATA= data set to match the order of the covariance parameter estimates in the new analysis.
The following steps create data set COVNEW that has the Residual variance estimate as the first covariance parameter. This matches the order in the following PROC MIXED analysis with the NOPROFILE option in the PROC MIXED statement. The HOLD=2,3,4 option holds the covariance parameter estimates TOEP(2), TOEP(3), and TOEP(4) at the starting values specified in the COVNEW data set.
data cov1 cov2;
set cov;
if CovParm = "Residual" then output cov1;
else output cov2;
run;
data covnew;
set cov1 cov2;
run;
proc mixed data=pr noprofile; class Person Gender; model y = Gender Age / s; repeated / type=toep subject=Person; parms / parmsdata=covnew hold=2,3,4; run;
As shown in the table below, the variance estimate is updated while the covariance estimates are held fixed at the starting values.