You are on page 1of 5


2 Interaction Effects in Models with Latent Variables

The residual centering approach of Little et al. (2006) consists of three steps. In the first step,
individual product terms are formed for each combination of the 3 indicators (w01-w03 and
na01 - na03); then each of these product terms is regressed in a regression analysis to all first-
order effect indicators (i.e. w01 etc.) and the residuals are stored in the data set as variables.
These are finally used in the model as indicators of the latent product term variable. The R-
syntax of all these procedures appears extensive and complicated at first glance; however, the
individual elements are only repetitions with slight adjustments. It is not difficult to
implement this approach with the necessary systematic approach.

Step 1: Multiply all first-order variables

wfcdata$pt11 <- wfcdata$w01 * wfcdata$na01
wfcdata$pt12 <- wfcdata$w01 * wfcdata$na02
wfcdata$pt13 <- wfcdata$w01 * wfcdata$na03
wfcdata$pt21 <- wfcdata$w02 * wfcdata$na01
wfcdata$pt22 <- wfcdata$w02 * wfcdata$na02
wfcdata$pt23 <- wfcdata$w02 * wfcdata$na03
wfcdata$pt31 <- wfcdata$w03 * wfcdata$na01
wfcdata$pt32 <- wfcdata$w03 * wfcdata$na02
wfcdata$pt33 <- wfcdata$w03 * wfcdata$na03

The first index of each product term represents the first-order indicator used.

Step 2: Regression of each product term on all first-order effect indicators and storage in the
data set
wfcdata$res11 <- resid(lm(pt11 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res12 <- resid(lm(pt12 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res13 <- resid(lm(pt13 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res21 <- resid(lm(pt21 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res22 <- resid(lm(pt22 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res23 <- resid(lm(pt23 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res31 <- resid(lm(pt31 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res32 <- resid(lm(pt32 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))
wfcdata$res33 <- resid(lm(pt33 ~ w01+w02+w03 + na01+na02+na03,
+ data=wfcdata,na.action = na.exclude))

With this block, only the formed residual (e.g. "res11") and the product term used (e.g.
"pt11") must be adapted as a dependent variable - the rest can be copied. For clarification both
elements were underlined in the above code. The individual command lines use three still
unknown functions. First, lm(Y ~ X) is used to regression ("linear model") the dependent
variable Y to the independent variable X, "na.action=na.exclude" causes missing values on
the side of the independent variable to be preserved in the residuals (otherwise we would have
fewer cases in the product term variables than in the other model variables). Finally, the lm()
function is enclosed in the re-sid() function, which extracts the residuals of the regression.
Once the product term variables have been formed, two tests should be performed to ensure
that no errors have occurred. First, the averages of these indicators should all be exactly zero;
second, the correlations with the first-order effect indicators should be zero and among the
product term indicators substantial. The former is checked by

For the latter, the correlation matrix of all variables is calculated:

modvar <- wfcdata[c("w01","w02","w03","na01","na02","na03",
+"res11","res12","res13","res21", Rest ausgelassen)]


There are many ways to generate correlation matrices, all of which are admittedly not very
comfortable. Here a subdataset with the desired variables was created and the cor() function
integrated into the round() function was applied to it.

Step 3: Specification of the model

Finally it goes to the model. This has two peculiarities: First, the covariances of the latent
product term variables and the two first-order effect variables work-family conflict and
negative affectivity are fixed at 0. Secondly, measurement error covariances are released
between those product-term indicators in which virtually the same indicators are found: Since
these consist of the same indicators, they should therefore also (be allowed to) correlate. The
syntax shown below looks admittedly (again) elaborate - but with a bit of a system this is
easily feasible.

intlat <- '

NAF =~ na01+na02+na03
WFC =~ w01+w02+w03
AZF =~ az01 + az02
PRTRM ~~0*WFC #The product term does not correlate with
PRTRM ~~0*NAF #the first-order-effect-variables

#Error covariances of relevant product term indciators


#res21, res22, res23


#res31, res32, res33



#res12, res22, und res32


#res13, res23, und res33


#Structural model

fit <- sem(intlat, data=wfcdata,



In output, only the structural model is of primary interest here. The fit of the model should
usually be acceptable if the measurement model of the latent variables (without product
terms) is clearly fit. If not, the existing misfit is also strongly weighted by using the product
terms. In the following output, many lines were shortened for the sake of economy. Central to
the moderator effect is the effect of the latent product term, which is = -.30 here. Its z value is
3,054, which is only slightly higher than in the path models (z = 2.89). However, this does not
always have to be the case. Especially for indicators with a higher measurement error or
smaller samples, the difference between a model with a latent product term and a path model
can be substantial and decisive.

Estimate Std.err Z-value P(>|z|)

Latent variables:
NAF =~
na01 1.000
na02 0.950 0.159 5.991 0.000
na03 0.739 0.123 5.986 0.000
WFC =~
w01 1.000
w02 1.002 0.071 14.151 0.000
w03 0.973 0.070 13.978 0.000
AZF =~
az01 1.000
az02 0.833 0.132 6.302 0.000
res11 1.000
res12 0.981 0.190 5.157 0.000

WFC -0.333 0.062 -5.371 0.000
NAF -0.155 0.111 -1.397 0.163
PRTRM -0.300 0.098 -3.054 0.002

WFC ~~
PRTRM 0.000
NAF ~~
PRTRM 0.000
res11 ~~
res12 0.138 0.068 2.020 0.043

na01 0.559 0.083
na02 0.544 0.077
na03 0.547 0.060
w01 0.308 0.048
w02 0.427 0.058
w03 0.485 0.056
az01 0.108 0.124
az02 0.239 0.093
res11 0.658 0.131
res12 0.711 0.136
NAF 0.399 0.088
WFC 0.739 0.080
AZF 0.716 0.131
PRTRM 0.454 0.207