Ordered indicators are common in survey-based SEM applications. This vignette reuses the Theory of Planned Behavior example but illustrates how to run the model when the manifest variables are ordinal.
tpb <- '
# Outer Model (Based on Hagger et al., 2007)
ATT =~ att1 + att2 + att3 + att4 + att5
SN =~ sn1 + sn2
PBC =~ pbc1 + pbc2 + pbc3
INT =~ int1 + int2 + int3
BEH =~ b1 + b2
# Inner Model (Based on Steinmetz et al., 2011)
INT ~ ATT + SN + PBC
BEH ~ INT + PBC
'
fit_cat <- pls(
tpb,
data = TPB_Ordered,
bootstrap = TRUE,
boot.R = 50,
ordered = colnames(TPB_Ordered) # explicitly specify ordered variables
)
summary(fit_cat)
#> plssem (0.1.2) ended normally after 3 iterations
#>
#> Estimator OrdPLSc
#> Link PROBIT
#>
#> Number of observations 2000
#> Number of iterations 3
#> Number of latent variables 5
#> Number of observed variables 15
#>
#> Fit Measures:
#> Chi-Square 263.165
#> Degrees of Freedom 82
#> SRMR 0.011
#> RMSEA 0.033
#>
#> R-squared (indicators):
#> att1 0.862
#> att2 0.777
#> att3 0.825
#> att4 0.743
#> att5 0.867
#> sn1 0.805
#> sn2 0.886
#> pbc1 0.863
#> pbc2 0.865
#> pbc3 0.781
#> int1 0.815
#> int2 0.821
#> int3 0.754
#> b1 0.781
#> b2 0.773
#>
#> R-squared (latents):
#> INT 0.368
#> BEH 0.198
#>
#> Latent Variables:
#> Estimate Std.Error z.value P(>|z|)
#> ATT =~
#> att1 0.928 0.017 55.427 0.000
#> att2 0.882 0.020 44.279 0.000
#> att3 0.908 0.019 48.480 0.000
#> att4 0.862 0.021 41.168 0.000
#> att5 0.931 0.021 44.623 0.000
#> SN =~
#> sn1 0.897 0.016 56.964 0.000
#> sn2 0.941 0.014 66.291 0.000
#> PBC =~
#> pbc1 0.929 0.013 69.693 0.000
#> pbc2 0.930 0.014 65.690 0.000
#> pbc3 0.884 0.015 59.217 0.000
#> INT =~
#> int1 0.903 0.013 71.887 0.000
#> int2 0.906 0.012 75.656 0.000
#> int3 0.868 0.016 55.904 0.000
#> BEH =~
#> b1 0.884 0.022 40.849 0.000
#> b2 0.879 0.021 42.451 0.000
#>
#> Regressions:
#> Estimate Std.Error z.value P(>|z|)
#> INT ~
#> ATT 0.239 0.027 8.692 0.000
#> SN 0.209 0.025 8.389 0.000
#> PBC 0.239 0.034 7.026 0.000
#> BEH ~
#> PBC 0.286 0.026 10.800 0.000
#> INT 0.219 0.032 6.786 0.000
#>
#> Covariances:
#> Estimate Std.Error z.value P(>|z|)
#> ATT ~~
#> SN 0.623 0.016 37.813 0.000
#> PBC 0.690 0.011 60.838 0.000
#> SN ~~
#> PBC 0.690 0.014 49.581 0.000
#>
#> Variances:
#> Estimate Std.Error z.value P(>|z|)
#> ATT 1.000
#> SN 1.000
#> PBC 1.000
#> .INT 0.632 0.022 28.776 0.000
#> .BEH 0.802 0.017 45.905 0.000
#> .att1 0.138 0.031 4.457 0.000
#> .att2 0.223 0.035 6.309 0.000
#> .att3 0.175 0.034 5.178 0.000
#> .att4 0.257 0.036 7.106 0.000
#> .att5 0.133 0.039 3.437 0.001
#> .sn1 0.195 0.028 6.901 0.000
#> .sn2 0.114 0.027 4.268 0.000
#> .pbc1 0.137 0.025 5.590 0.000
#> .pbc2 0.135 0.026 5.108 0.000
#> .pbc3 0.219 0.026 8.314 0.000
#> .int1 0.185 0.023 8.150 0.000
#> .int2 0.179 0.022 8.240 0.000
#> .int3 0.246 0.027 9.115 0.000
#> .b1 0.219 0.038 5.735 0.000
#> .b2 0.227 0.036 6.220 0.000