Online Appendix: Mplus syntax - Springer Static Content Server

advertisement
Online Appendix: Mplus syntax
1. Configural equivalence
We start by presenting the Mplus syntax for the configural equivalence model, i.e. a
model in which factor loadings and thresholds are allowed to vary across time-points. In
order to get the configural equivalence model, the Mplus default that all factor loadings
and thresholds are equal across groups needs to be overridden. Measurement parameters
can be set free across groups by mentioning them in group-specific model statements.
Since we have 19 groups, and thus 19 group specific model statements, the Mplus syntax
becomes lengthy and repetitive.
In Mplus, two model parameterizations—namely the theta- and delta-approaches—are
possible. In the default delta parameterization, residual variances of the latent response
variables are not model parameters, while scale factors (defining the metric of the latent
response variables) are. In the theta parameterization, residual variances of the latent
response variables are model parameters, while the scale factors are not (Muthén and
Asparouhov 2002). For invariance testing, the theta parameterization is preferable
(Millsap and Yun-Tein 2004: 489). We override the default delta approach in Mplus by
explicitly requesting parameterization is theta in the analysis statement. We
use Mplus’ default Weighted Least Squares estimator for categorical variables.
To identify the configural equivalence model, we used the procedure proposed in the
Mplus User’s Guide (Muthén and Muthén 1998-2010: 434). In this approach, all
thresholds and factor loadings vary freely across groups. Residual variances and the
variance of the latent factor are fixed to 1 in all groups. Additional, latent factor means
are fixed to 0.
The notes below (preceded by ‘!’) explain how each of the abovementioned steps is
specified in Mplus.
TITLE:
Configural equivalence
DATA:
File is TRUST_DATA.dta.dat;
FORMAT IS free;
LISTWISE=Off;
Variable:
NAMES ARE trust interest waste crooked year latent;
USEVARIABLES ARE trust interest waste crooked;
! The 4 political trust items are specified as ordered-categorical;
CATEGORICAL ARE trust interest waste crooked;
MISSING ARE all (-9999);
! The survey year is used as grouping variable;
GROUPING IS year (1964=1964 1968=1968 1970=1970
1972=1972 1974=1974 1976=1976 1978=1978
1980=1980 1984=1984 1988=1988
1990=1990 1992=1992 1994=1994
1996=1996 1998=1998 2000=2000
2002=2002 2004=2004 2008=2008);
ANALYSIS:
! The theta parameterization is requested;
PARAMETERIZATION IS theta;
1
TYPE IS missing;
ESTIMATOR IS WLSMV;
MODEL:
index BY interest waste crooked trust;
model 1964:
!Thresholds are free
[interest$1*];
!Residuals are fixed at 1
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
!Factor mean is fixed at 0;
[index@0];
Factor variance is fixed 1;
index@1
index BY interest* waste* crooked* trust*;
model 1968:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1970:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1972:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
2
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1974:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1976:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1978:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1980:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
3
model 1984:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1988:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1990:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1992:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1994:
[interest$1*];
4
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1996:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 1998:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 2000:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 2002:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
5
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 2004:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
model 2008:
[interest$1*];
interest@1;
[waste$1* waste$2*];
waste@1;
[crooked$1* crooked$2*];
crooked@1;
[trust$1* trust$2*];
trust@1;
[index@0];
index@1
index BY interest* waste* crooked* trust*;
OUTPUT:
standardized sampstat modindices (all) tech1;
6
2. Full equivalence
Mplus by default constrains factor loadings and thresholds to be equal across groups. As
a result, the full (threshold) equivalence model has a relatively simple set-up as compared
to the configural equivalence model.
In this model, the following defaults are implemented for reasons of model identification.
Residual variances in the first (reference) group are fixed at unity, and residual variances
in the other groups are estimated freely (Muthén and Muthén 1998-2010: 77). The latent
mean is fixed to 0 in the reference group, and estimated freely in other groups. All item
intercepts are fixed to 0. For a more detailed discussion of the complex issue of model
identification in MGCFA for categorical data, see Millsap and Yun-Tein 2004; Temme
2006; Muthén and Asparouhov 2002).
TITLE:
Full equivalence
DATA:
File is trust.dta.dat;
FORMAT IS free;
LISTWISE=Off;
VARIABLE:
NAMES ARE year trust interest waste crooked resp;
USEVARIABLES ARE year trust interest waste crooked;
CATEGORICAL ARE trust interest waste crooked;
MISSING ARE all (-9999);
GROUPING IS year (1964=1964 1968=1968 1970=1970
1972=1972 1974=1974 1976=1976 1978=1978
1980=1980 1984=1984 1988=1988
1990=1990 1992=1992 1994=1994
1996=1996 1998=1998 2000=2000
2002=2002 2004=2004 2008=2008);
ANALYSIS:
PARAMETERIZATION IS theta;
TYPE IS missing;
ESTIMATOR IS WLSMV;
MODEL:
index BY interest waste crooked trust;
OUTPUT:
standardized sampstat modindices (all) tech1;
7
3. Partial equivalence
In the fully equivalent model, all thresholds and loadings were held invariant. However,
model diagnostics (comparison of the change in model statistics compare to the
configurally equivalent model) suggest that the fully equivalent model does not fit the
data adequately. This means that the assumption of the full invariance of all thresholds is
untenable. Hence, we referred to the model modification indices to relax these
assumptions for certain most problematic thresholds.
In the partially equivalent model we allow these problematic thresholds to be free across
time-points.
TITLE:
Partial scalar equivalence model
DATA:
File is trust.dta.dat;
FORMAT IS free;
VARIABLE:
NAMES ARE year id trust interest waste crooked resp;
USEVARIABLES ARE year trust interest waste crooked;
CATEGORICAL ARE trust interest waste crooked;
!We specify the ID variable.
IDVARIABLE IS resp;
MISSING ARE all (-9999);
grouping is year (1964=1964 1968=1968 1970=1970
1972=1972 1974=1974 1976=1976 1978=1978
1980=1980 1984=1984 1988=1988
1990=1990 1992=1992 1994=1994
1996=1996 1998=1998 2000=2000
2002=2002 2004=2004 2008=2008);
ANALYSIS:
PARAMETERIZATION is theta;
ESTIMATOR=WLSMV;
TYPE IS MISSING H1;
MODEL:
index BY interest waste crooked trust;
model 1964:
! This specification set-up the 1st and the 2nd thresholds of the crooked
item free in the 1964 sample;
[crooked$1];
[crooked$2];
model 1968:
[waste$1];
model 1970:
[waste$1];
model 1972:
[waste$1];
[crooked$1];
model 1974:
model 1976:
8
[waste$1];
[waste$2];
model 1978:
[waste$1];
[waste$2];
[crooked$1];
model 1980:
[waste$1];
model 1984:
[waste$1];
model 1988:
model 1990:
[waste$1];
model 1992:
[waste$1];
[crooked$1];
model 1994:
[waste$1];
[crooked$1];
model 1996:
[waste$1];
[waste$2];
model 1998:
[waste$1];
model 2000:
[waste$1];
model 2002:
[waste$1];
model 2004:
model 2008:
OUTPUT:
Standardized sampstat modindices (all) tech1;
!This step will generate the latent factor scores for the latent trust
variable
Savedata:
file is scores.txt;
save = fscores;
The latent factor scores are provided in the file “Factor-scores”
The scores can be merged with the original ANES time-series using the ID variable or
user-constructed respondents’ sequence “resp” (a sequence of integers from 1 to 35485
we generated as an alternative to the ANES ID variable).
9
Alternately, the preconstructed ANES id variable VCF00061 (coded as “id” in our
dataset) could be as well used to generate the latent scores. We advise to merge the scores
on the observed indicators (do what is right, interest, waste crooked) with the ANES
dataset and check the correctness of data merge by correlating the observed scores in the
original ANES data file and the merged Mplus data file.
10
Download