Chapter 4: Structural Equation Models

Example 1 on Structural equation modelling: A model for one country

Fit the structural equation model shown in Figure 4.1, for ESS data on respondents from the United Kingdom only. Interpret the signs of the regression coefficients in the structural model. Are all of these coefficients significantly different from 0?

Stata commands:

// Example of structural equation modelling
// A model for one country (UK) only:
set matsize 1000
* First, fit the measurement models separately to
* obtain good starting values for fitting the full model
quietly: sem ///
(Effective -> plcpvcr plccbrg plcarcr) ///
(ProcFair -> plcrspc plcfrdc plcexdc) ///
if cntry=="GB", var(Effective@1) var(ProcFair@1) ///
method(mlmv)
matrix b=e(b)
quietly: sem ///
(Obey -> bplcdc doplcsy dpcstrb) ///
(MoralAlign -> plcrgwr plcipvl gsupplc) ///
if cntry=="GB", var(Obey@1) var(MoralAlign@1) ///
method(mlmv)
matrix b1=e(b)
matrix b=b,b1
quietly: sem ///
(Cooperation -> caplcst widprsn wevdct) ///
if cntry=="GB", var(Cooperation@1) method(mlmv)
matrix b1=e(b)
matrix b=b,b1
* Fit the full model:
sem ///
(Effective -> plcpvcr plccbrg plcarcr) ///
(ProcFair -> plcrspc plcfrdc plcexdc) ///
(Obey -> bplcdc doplcsy dpcstrb) ///
(MoralAlign -> plcrgwr plcipvl gsupplc) ///
(Cooperation -> caplcst widprsn wevdct) ///
(Effective ProcFair -> Obey MoralAlign) ///
(Effective ProcFair Obey MoralAlign -> Cooperation) ///
if cntry=="GB", ///
var(Effective@1) var(ProcFair@1) ///
var(e.Obey@1) var(e.MoralAlign@1) var(e.Cooperation@1) ///
cov(e.Obey*e.MoralAlign) ///
method(mlmv) from(b,skip)

Stata output and notes

R commands:

# Example of structural equation modelling
# A model for one country (UK) only:
library(lavaan)
#
ModelSyntax <- '
Effective =~ plcpvcr + plccbrg + plcarcr
ProcFair =~ plcrspc + plcfrdc + plcexdc
Obey =~ bplcdc + doplcsy + dpcstrb
MoralAlign =~ plcrgwr + plcipvl + gsupplc
Cooperation =~ caplcst + widprsn + wevdct
#
Obey + MoralAlign ~ Effective + ProcFair
Cooperation ~ Effective + ProcFair + Obey + MoralAlign
#
Obey ~~ MoralAlign
'
FittedModel.sem <- sem(model = ModelSyntax,
data = ESS5Police[ESS5Police$cntry=="GB",],
std.lv = TRUE, meanstructure = TRUE,missing="ml")
summary(FittedModel.sem)

R output and notes

Figure 4.2 shows a path diagram of the structural model, with estimated values of the regression coefficients associated with each of the paths. All of the coefficients are significantly different from 0 (at the 5% level of significance), with the exception that the association between Moral alignment and Co-operatione is not significant in this model which also includes the other three factors as explanatory variables. With one exception the estimated regression coefficients are positive, indicating that higher levels of positive assessment of and co-operation with the police tend to go together. The exception is the coefficient of Effectiveness in the model for Co-operation; this is negative, indicating that individuals who feel that the police are effective in their work tend to be less likely to express willingness to co-operate with the police, at least after we control for the individuals’ assessment of Procedural fairness, Obligation to obey and Moral alignment with the police.

Figure 4.2: Estimated regression coefficients in the structural model in Example 1, fitted to data on UK respondents.

Go to next page >>