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.3) 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
#>
#> Thresholds:
#> Estimate Std.Error z.value P(>|z|)
#> att1|t1 -2.968 0.397 -7.469 0.000
#> att1|t2 -1.572 0.043 -36.401 0.000
#> att1|t3 -0.408 0.026 -15.652 0.000
#> att1|t4 0.255 0.027 9.437 0.000
#> att1|t5 1.213 0.029 42.453 0.000
#> att1|t6 2.457 0.089 27.538 0.000
#> att2|t1 -1.911 0.059 -32.325 0.000
#> att2|t2 -0.769 0.026 -29.301 0.000
#> att2|t3 -0.069 0.031 -2.198 0.028
#> att2|t4 1.290 0.033 38.948 0.000
#> att2|t5 2.170 0.064 33.903 0.000
#> att2|t6 2.968 0.535 5.548 0.000
#> att3|t1 -2.652 0.119 -22.327 0.000
#> att3|t2 -1.454 0.044 -33.005 0.000
#> att3|t3 -0.400 0.027 -14.997 0.000
#> att3|t4 0.457 0.028 16.249 0.000
#> att3|t5 1.256 0.030 41.370 0.000
#> att3|t6 2.878 0.402 7.157 0.000
#> att4|t1 -2.878 0.400 -7.191 0.000
#> att4|t2 -1.859 0.061 -30.626 0.000
#> att4|t3 -0.933 0.032 -29.197 0.000
#> att4|t4 -0.018 0.030 -0.578 0.563
#> att4|t5 1.221 0.033 36.777 0.000
#> att4|t6 2.144 0.069 30.855 0.000
#> att5|t1 -2.807 0.141 -19.846 0.000
#> att5|t2 -1.793 0.052 -34.345 0.000
#> att5|t3 -0.389 0.030 -13.038 0.000
#> att5|t4 0.567 0.034 16.818 0.000
#> att5|t5 1.385 0.038 36.690 0.000
#> att5|t6 2.484 0.090 27.480 0.000
#> sn1|t1 -1.706 0.047 -36.537 0.000
#> sn1|t2 -0.762 0.031 -24.542 0.000
#> sn1|t3 0.243 0.027 9.046 0.000
#> sn1|t4 1.305 0.046 28.064 0.000
#> sn1|t5 2.044 0.067 30.551 0.000
#> sn1|t6 3.090 0.893 3.459 0.001
#> sn2|t1 -3.090 0.765 -4.041 0.000
#> sn2|t2 -2.326 0.082 -28.345 0.000
#> sn2|t3 -1.115 0.038 -29.539 0.000
#> sn2|t4 0.024 0.028 0.854 0.393
#> sn2|t5 1.030 0.038 26.943 0.000
#> sn2|t6 2.024 0.070 29.052 0.000
#> pbc1|t1 -1.919 0.067 -28.830 0.000
#> pbc1|t2 -0.883 0.035 -25.410 0.000
#> pbc1|t3 -0.005 0.029 -0.174 0.862
#> pbc1|t4 1.065 0.035 30.285 0.000
#> pbc1|t5 2.170 0.073 29.767 0.000
#> pbc2|t1 -2.543 0.125 -20.332 0.000
#> pbc2|t2 -1.392 0.041 -33.917 0.000
#> pbc2|t3 -0.617 0.032 -19.191 0.000
#> pbc2|t4 0.454 0.031 14.462 0.000
#> pbc2|t5 1.491 0.045 33.250 0.000
#> pbc2|t6 2.432 0.093 26.247 0.000
#> pbc3|t1 -1.768 0.051 -34.680 0.000
#> pbc3|t2 -0.845 0.029 -29.361 0.000
#> pbc3|t3 0.145 0.029 4.988 0.000
#> pbc3|t4 1.282 0.041 31.404 0.000
#> pbc3|t5 1.896 0.060 31.624 0.000
#> pbc3|t6 2.968 0.406 7.319 0.000
#> int1|t1 -2.226 0.070 -31.907 0.000
#> int1|t2 -1.213 0.043 -28.459 0.000
#> int1|t3 -0.333 0.034 -9.764 0.000
#> int1|t4 0.851 0.029 29.602 0.000
#> int1|t5 1.818 0.045 40.668 0.000
#> int1|t6 2.697 0.141 19.167 0.000
#> int2|t1 -2.197 0.080 -27.613 0.000
#> int2|t2 -1.254 0.043 -29.252 0.000
#> int2|t3 -0.167 0.035 -4.733 0.000
#> int2|t4 0.908 0.032 28.218 0.000
#> int2|t5 1.670 0.045 37.118 0.000
#> int2|t6 2.512 0.097 25.843 0.000
#> int3|t1 -2.432 0.109 -22.254 0.000
#> int3|t2 -1.308 0.042 -30.870 0.000
#> int3|t3 -0.439 0.032 -13.510 0.000
#> int3|t4 0.441 0.030 14.529 0.000
#> int3|t5 1.375 0.037 37.441 0.000
#> int3|t6 2.512 0.089 28.192 0.000
#> b1|t1 -2.387 0.110 -21.618 0.000
#> b1|t2 -1.227 0.039 -31.249 0.000
#> b1|t3 0.004 0.024 0.158 0.874
#> b1|t4 0.678 0.029 23.665 0.000
#> b1|t5 1.630 0.040 40.742 0.000
#> b1|t6 2.512 0.106 23.670 0.000
#> b2|t1 -2.308 0.085 -27.101 0.000
#> b2|t2 -0.972 0.038 -25.258 0.000
#> b2|t3 -0.068 0.027 -2.513 0.012
#> b2|t4 0.779 0.025 30.901 0.000
#> b2|t5 1.977 0.054 36.639 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