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.020 46.300 0.000
#> att2 0.882 0.019 46.107 0.000
#> att3 0.908 0.019 48.320 0.000
#> att4 0.862 0.025 35.058 0.000
#> att5 0.931 0.016 56.593 0.000
#> SN =~
#> sn1 0.897 0.017 52.584 0.000
#> sn2 0.941 0.016 60.516 0.000
#> PBC =~
#> pbc1 0.929 0.013 72.694 0.000
#> pbc2 0.930 0.015 62.588 0.000
#> pbc3 0.884 0.015 59.164 0.000
#> INT =~
#> int1 0.903 0.014 65.496 0.000
#> int2 0.906 0.014 66.262 0.000
#> int3 0.868 0.017 52.446 0.000
#> BEH =~
#> b1 0.884 0.020 44.638 0.000
#> b2 0.879 0.018 47.590 0.000
#>
#> Regressions:
#> Estimate Std.Error z.value P(>|z|)
#> INT ~
#> ATT 0.239 0.032 7.431 0.000
#> SN 0.209 0.028 7.533 0.000
#> PBC 0.239 0.036 6.605 0.000
#> BEH ~
#> PBC 0.286 0.031 9.261 0.000
#> INT 0.219 0.031 7.059 0.000
#>
#> Covariances:
#> Estimate Std.Error z.value P(>|z|)
#> ATT ~~
#> SN 0.623 0.017 37.315 0.000
#> PBC 0.690 0.014 50.601 0.000
#> SN ~~
#> PBC 0.690 0.015 45.112 0.000
#>
#> Variances:
#> Estimate Std.Error z.value P(>|z|)
#> ATT 1.000
#> SN 1.000
#> PBC 1.000
#> .INT 0.632 0.020 31.624 0.000
#> .BEH 0.802 0.018 44.319 0.000
#> .att1 0.138 0.037 3.700 0.000
#> .att2 0.223 0.034 6.610 0.000
#> .att3 0.175 0.034 5.131 0.000
#> .att4 0.257 0.042 6.044 0.000
#> .att5 0.133 0.031 4.351 0.000
#> .sn1 0.195 0.030 6.405 0.000
#> .sn2 0.114 0.029 3.878 0.000
#> .pbc1 0.137 0.024 5.798 0.000
#> .pbc2 0.135 0.028 4.850 0.000
#> .pbc3 0.219 0.026 8.317 0.000
#> .int1 0.185 0.025 7.411 0.000
#> .int2 0.179 0.025 7.190 0.000
#> .int3 0.246 0.029 8.542 0.000
#> .b1 0.219 0.035 6.297 0.000
#> .b2 0.227 0.033 6.911 0.000