Skip to Main Content

Mplus Class Notes Freeing, Constraining, and Testing Parameters

There are at least two reason a researcher might want to fix or free
parameters. The first is that while the default settings in Mplus do a fairly
good job of deciding which parameters should be freed and which should be fixed,
researchers often want to fit models that differ from these defaults in some
way. Second, in addition fitting an overall model, researchers often wish to
test hypotheses about specific parameters. Freeing and/or fixing parameters is
often necessary in order to perform these tests. These commands are general in
the sense that the same basic commands are used with all of the models estimated
by Mplus.


Mplus version 5.2 was used for these examples.

1.0 Constraining a Parameter to a Given Value

You may want to fix paths to a given value for a variety of
reasons, for example, to identify a model (although Mplus will often do this
by default), or test a nested model. In the example below we fix the path
from adjust to achieve to zero. We do this using the @ symbol followed
by the number we wish to fix the parameter to (adjust@0).

Title: Fixing a parameter to zero
Data:
  File is worland_data.dat ;
Variable:
  Names are ppsych ses verbal vissp mem read arith spell motiv extra harm stabi;
Model:
  family by ppsych ses;
  cog by verbal vissp  mem;
  achieve by read arith spell;
  adjust by motiv extra harm stabi;

  achieve on cog adjust@0 ;
  adjust on family;

The MODEL RESULTS section of the output is shown below.


MODEL RESULTS

                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

 FAMILY   BY
    PPSYCH             1.000      0.000    999.000    999.000
    SES               -1.095      0.125     -8.790      0.000

 COG      BY
    VERBAL             1.000      0.000    999.000    999.000
    VISSP              0.833      0.045     18.358      0.000
    MEM                0.980      0.044     22.335      0.000

 ACHIEVE  BY
    READ               1.000      0.000    999.000    999.000
    ARITH              0.826      0.034     24.548      0.000
    SPELL              0.942      0.026     35.902      0.000

 ADJUST   BY
    MOTIV              1.000      0.000    999.000    999.000
    EXTRA              0.231      0.049      4.676      0.000
    HARM               0.880      0.043     20.294      0.000
    STABI              0.677      0.046     14.824      0.000

 ACHIEVE  ON
    COG                1.008      0.041     24.605      0.000
    ADJUST             0.000      0.000    999.000    999.000

 ADJUST   ON
    FAMILY            -1.267      0.141     -9.015      0.000

 COG      WITH
    FAMILY            -0.403      0.045     -8.897      0.000

 Intercepts
    PPSYCH             0.000      0.045      0.000      1.000
    SES                0.000      0.045      0.000      1.000
    VERBAL             0.000      0.045      0.000      1.000
    VISSP              0.000      0.045      0.000      1.000
    MEM                0.000      0.045      0.000      1.000
    READ               0.000      0.045      0.000      1.000
    ARITH              0.000      0.045      0.000      1.000
    SPELL              0.000      0.045      0.000      1.000
    MOTIV              0.000      0.045      0.000      1.000
    EXTRA              0.000      0.045      0.000      1.000
    HARM               0.000      0.045      0.000      1.000
    STABI              0.000      0.045      0.000      1.000

 Variances
    FAMILY             0.235      0.047      5.017      0.000
    COG                0.736      0.063     11.616      0.000

 Residual Variances
    PPSYCH             0.763      0.054     14.247      0.000
    SES                0.716      0.051     13.947      0.000
    VERBAL             0.262      0.024     10.909      0.000
    VISSP              0.487      0.035     13.966      0.000
    MEM                0.292      0.025     11.538      0.000
    READ               0.086      0.014      6.347      0.000
    ARITH              0.376      0.027     13.764      0.000
    SPELL              0.188      0.016     11.782      0.000
    MOTIV              0.119      0.032      3.728      0.000
    EXTRA              0.951      0.061     15.699      0.000
    HARM               0.318      0.033      9.771      0.000
    STABI              0.596      0.042     14.251      0.000
    ACHIEVE            0.164      0.022      7.379      0.000
    ADJUST             0.501      0.050     10.097      0.000


QUALITY OF NUMERICAL RESULTS

     Condition Number for the Information Matrix              0.233E-02
       (ratio of smallest to largest eigenvalue)

Note that the coefficient for achieve regressed on adjust is equal to zero,
as specified in the input file. Also note that the standard errors of parameters that
were fixed rather than estimated are listed as 0. When setting constraints, it
is worth checking both the parameter and its standard error, as well as the
model degrees of freedom to be sure the constraints were implemented as
desired.

2.0 Freeing a Parameter

Although parameters can be fixed manually, to simplify model
input, Mplus often fixes parameters to a given value by default. By
convention, these values are typically zero or one.
For example, by default Mplus fixes the path loading for the first observed
variable to 1 in order to identify the latent variable. To free a parameter
that is otherwise fixed by default, an asterisk (*) is placed immediately
after the parameter.  In the example below, an alternative method of
identifying a latent variable in a confirmatory factor analysis is used. Instead of using the default method of identifying the
latent variable by fixing the first path coefficient (motiv) to 1, we
free this parameter using motiv* in the line adjust by motiv*
extra harm stabi;
. Nothing else in that line of syntax is changed. In
order to identify this model, the mean of the latent variable (adjust) is fixed to 0
and it’s variance to 1. Note that listing the name of a variable in brackets
refers to its mean, intercept, or threshold, while listing the variable name
without brackets refers to its variance or residual variance.

Title: Freeing a parameter
Data: worland_data.dat ;
Variable:
  Names are 
     ppsych ses verbal vissp mem read arith spell motiv extra harm stabi;
  usevariables are  motiv extra harm stabi;
Model:
adjust by motiv* extra harm stabi;
[adjust@0];
adjust@1;

Below the MODEL RESULTS section of the output is shown.

<output omitted>
MODEL RESULTS

                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

 ADJUST   BY
    MOTIV              0.901      0.041     22.031      0.000
    EXTRA              0.190      0.048      3.916      0.000
    HARM               0.860      0.041     20.823      0.000
    STABI              0.650      0.042     15.407      0.000

 Means
    ADJUST             0.000      0.000    999.000    999.000

 Intercepts
    MOTIV              0.000      0.045      0.000      1.000
    EXTRA              0.000      0.045      0.000      1.000
    HARM               0.000      0.045      0.000      1.000
    STABI              0.000      0.045      0.000      1.000

 Variances
    ADJUST             1.000      0.000    999.000    999.000

 Residual Variances
    MOTIV              0.187      0.041      4.506      0.000
    EXTRA              0.962      0.061     15.693      0.000
    HARM               0.259      0.040      6.499      0.000
    STABI              0.575      0.041     14.055      0.000
    
    
QUALITY OF NUMERICAL RESULTS

     Condition Number for the Information Matrix              0.729E-01
       (ratio of smallest to largest eigenvalue)

Looking at the above output, we see that the factor loading for motiv is
equal to .901 rather than 1, and that it has a non-zero standard error indicating that this parameter
has been estimated rather than fixed. Looking further down, the mean of the latent variable
adjust is exactly zero, and a variance of exactly 1, the values specified in the input file.
Note that both parameters have a standard error of 0, which is consistant with a parameter
that has been fixed rather than freed.

3.0 Constraining Parameters to Equality

In some cases, rather than specifying that a parameter take on a
given value, you may want to constrain two parameters to be equal. This is particularly common in multiple
group models where a parameter may be fixed to equality across groups. Below
we constrain the path coefficients for vissp and mem to be the
same. We do this by placing the same number within parentheses following the
specification of the parameter (e.g. vissp (1)) in the Model:
command. There are two things important things to remember. First, the number in
parentheses must be the last thing on a given line (but not necessarily the
last part of the command) , this is why mem (1); appears on a separate line,
note that the semicolon (;) to end the command does not appear until after
mem (1). Second, when a single number is listed at the end of a line,
it constrains all the (previously free) parameters on that line to equality.
This means that if I only want to constrain one parameter in a command, that
parameter needs to be on a line by itself.  The exception to this is
parameters fixed to some value in order to identify the model (e.g. fixing
the factor loading of the first variable listed after by to one),
these parameters will continue to be fixed at their typical value unless
they are specifically freed using an asterisks ( * ). Additional parameters could
be fixed to the same value as vissp and mem
by adding the (1) in the appropriate place. If we wanted to fix another pair of
variables to the same value (but not the same value as vissp and
mem
) we could do this by placing a (2) (or other number) in the
appropriate places. Note that while we don’t cover it here, list operators
can be used to assign constraints to lists of variables.

Title: Constraining Parameters to Equality
Data:
  File is worland_data.dat ;
Variable:
  Names are ppsych ses verbal vissp mem read arith spell motiv extra harm stabi;
Model:
  family by ppsych ses;
  cog by verbal 
     vissp (1)
     mem (1);
  achieve by read arith spell;
  adjust by motiv extra harm stabi;

  achieve on cog adjust;
  adjust on family;

Because the a constraint applies to all parameters on the line,
the following produces the same constraint.

  cog by verbal 
     vissp mem (1);

The abridged output generated by the input file above is shown below.


<output omitted>

MODEL RESULTS

                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

 FAMILY   BY
    PPSYCH             1.000      0.000    999.000    999.000
    SES               -1.093      0.119     -9.167      0.000

 COG      BY
    VERBAL             1.000      0.000    999.000    999.000
    VISSP              0.910      0.037     24.352      0.000
    MEM                0.910      0.037     24.352      0.000

 ACHIEVE  BY
    READ               1.000      0.000    999.000    999.000
    ARITH              0.835      0.034     24.670      0.000
    SPELL              0.950      0.027     35.676      0.000

 ADJUST   BY
    MOTIV              1.000      0.000    999.000    999.000
    EXTRA              0.232      0.049      4.744      0.000
    HARM               0.868      0.043     20.207      0.000
    STABI              0.669      0.046     14.683      0.000

<output omitted>
 

Note that the path coefficients and standard errors for
vissp and mem are identical, indicating that they have been
fixed to equality.

4.0 Assigning Names to Parameters

Assigning names to parameters allows you to
refer them in either the model test: or model constraint: commands,
allowing the user to perform custom hypothesis tests or impose complex
constraints. Names are assigned to parameters by placing a name in parentheses after the
parameter is listed (similar to the way in which one assigns
constraints). Parameter names must begin with a letter; can contain
only letters, numbers, and the underscore symbol (i.e. _ ); and must be 8 or
fewer characters. Similar to the assignment of constraints discussed above,
the label must be the last item on a line, and will be applied to all
parameters listed on that line. Putting a single label at the end of a line
with multiple parameters listed applies that label to all of the parameters
and in the process constrains the parameters to equality. Below we assign
the label a1 to the estimate of the
covariance between family and cog, the label a2 to the
covariance between family and achieve, and a3 to the covariance between
family and adjust.

Title: Assigning parameter labels.
Data:
  File is worland_data.dat ;
Variable:
  Names are 
     ppsych ses verbal vissp mem read arith spell motiv extra harm stabi;
Model:
  family by ppsych ses;
  cog by verbal vissp mem;
  achieve by read arith spell ;
  adjust by motiv extra harm stabi ;

  family with cog (a1)
    achieve (a2)
    adjust (a3);
  cog with achieve adjust;
  achieve with adjust;

Assigning parameter labels without specifying any tests or
constraints results in
output that is identical to the output for this model without specifying the
parameter labels. Next we will use these labels to test hypotheses about
these parameters.

5.0 Testing Hypotheses About Parameter Estimates Using Wald Tests

Mplus will allow you to test hypotheses about individual parameters (e.g. b=2),
hypotheses about groups of parameters (e.g. b1=0 and b2=0), and tests about the equality of parameters
(e.g. b1=b2). The model test: command tells Mplus that we would like to
test a series of parameter constraints. The lines following the model
test:
command give the specific constraints to be tested. In the input
file below three parameters are assigned names (a1, a2, and a3), then the
model test:
command is used to test the null hypothesis that a1 = a2;
and a1 = a3;. This corresponds to the null hypothesis a1 = a2 = a3,
that is, that the covariances of family with cog, family with
achieve
, and family with adjust are all equal. It is
important to note that all of the constraints listed in the model test
command are tested simultaneously, so if the null hypothesis was a1 = a2
(without worrying about a3) this hypothesis would need to be tested
separately.

Title: 
Data:
  File is worland_data.dat ;
Variable:
  Names are 
     ppsych ses verbal vissp mem read arith spell motiv extra harm stabi;
Model:
  family by ppsych ses;
  cog by verbal vissp mem;
  achieve by read arith spell ;
  adjust by motiv extra harm stabi ;

  family with cog (a1)
    achieve (a2)
    adjust (a3);
  cog with achieve adjust;
  achieve with adjust;
model test:
  a1 = a2;
  a1 = a3;

The abridged output associated with this model is shown below.


<output omitted>

THE MODEL ESTIMATION TERMINATED NORMALLY


TESTS OF MODEL FIT

Chi-Square Test of Model Fit

          Value                            600.106
          Degrees of Freedom                    48
          P-Value                           0.0000

Chi-Square Test of Model Fit for the Baseline Model

          Value                           4124.707
          Degrees of Freedom                    66
          P-Value                           0.0000

CFI/TLI

          CFI                                0.864
          TLI                                0.813

Wald Test of Parameter Constraints

          Value                             21.395
          Degrees of Freedom                     2
          P-Value                           0.0000

Loglikelihood

          H0 Value                       -6745.325
          H1 Value                       -6445.272

Information Criteria

          Number of Free Parameters             42
          Akaike (AIC)                   13574.649
          Bayesian (BIC)                 13751.663
          Sample-Size Adjusted BIC       13618.352
            (n* = (n + 2) / 24)

RMSEA (Root Mean Square Error Of Approximation)

          Estimate                           0.152
          90 Percent C.I.                    0.141  0.163
          Probability RMSEA <= .05           0.000

SRMR (Standardized Root Mean Square Residual)

          Value                              0.063



MODEL RESULTS

                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

 FAMILY   BY
    PPSYCH             1.000      0.000    999.000    999.000
    SES               -1.107      0.115     -9.657      0.000

 COG      BY
    VERBAL             1.000      0.000    999.000    999.000
    VISSP              0.833      0.045     18.393      0.000
    MEM                0.972      0.044     22.326      0.000

 ACHIEVE  BY
    READ               1.000      0.000    999.000    999.000
    ARITH              0.842      0.034     24.840      0.000
    SPELL              0.954      0.027     35.622      0.000

 ADJUST   BY
    MOTIV              1.000      0.000    999.000    999.000
    EXTRA              0.233      0.048      4.813      0.000
    HARM               0.857      0.042     20.295      0.000
    STABI              0.662      0.045     14.615      0.000

 FAMILY   WITH
    COG               -0.411      0.046     -8.852      0.000
    ACHIEVE           -0.363      0.044     -8.151      0.000
    ADJUST            -0.245      0.040     -6.099      0.000

<output omitted>

The output associated with the model test: command appears
under TESTS OF MODEL FIT with the heading Wald Test of Parameter Constraints.
The test statistic (labeled Value), degrees of freedom, and p-value for the
test are given. Note that under MODEL RESULTS the estimates for the
parameters we have tested are identical to those from an input file that did
not include the model test: command. This is because the Wald test is
performed after the model has been estimated, and hence does not influence
the parameter estimates.

As discussed above, a variety of specific null hypotheses can be tested using the
model test: command. Below are a few examples of different hypotheses and how to test them.
One potential hypothesis is that all three of the covariances (i.e. family
with cog,
family
with
achieve
, and family with adjust are all) are equal to
zero. The model test: command shown below tests the
hypothesis that all three parameters (a1, a2, and a3) are simultaneously equal
to zero. (Note that the tests of the coefficients under MODEL RESULTS test the
hypothesis that the coefficients are equal to zero individually.)

model test:
a1=0;
a2=0;
a3=0;

The model test: command can also be used to test whether a
parameter (or multiple parameters if one wants to test the
parameters simultaneously) is equal to some non-zero value. The model test:
command shown below tests the hypothesis that a1 = 1.

model test:
a1=1;