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.

Theory of Planned Behavior (Ordered Indicators)

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,
  sample    = 500,
  ordered   = colnames(TPB_Ordered) # explicitly specify ordered variables
)
summary(fit_cat)
#> plssem (0.1.0) ended normally after 4 iterations
#> 
#>   Estimator                                    OrdPLSc
#>   Link                                          PROBIT
#>                                                       
#>   Number of observations                          2000
#>   Number of iterations                               4
#>   Number of latent variables                         5
#>   Number of observed variables                      15
#> 
#> 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.016   59.170    0.000
#>     att2            0.882      0.019   45.249    0.000
#>     att3            0.908      0.019   48.312    0.000
#>     att4            0.862      0.021   40.439    0.000
#>     att5            0.931      0.019   49.674    0.000
#>   SN =~         
#>     sn1             0.897      0.014   64.331    0.000
#>     sn2             0.941      0.015   64.385    0.000
#>   PBC =~        
#>     pbc1            0.929      0.013   70.570    0.000
#>     pbc2            0.930      0.015   60.875    0.000
#>     pbc3            0.884      0.015   57.922    0.000
#>   INT =~        
#>     int1            0.903      0.013   67.886    0.000
#>     int2            0.906      0.014   66.357    0.000
#>     int3            0.868      0.015   56.973    0.000
#>   BEH =~        
#>     b1              0.884      0.020   43.990    0.000
#>     b2              0.879      0.020   44.318    0.000
#> 
#> Regressions:
#>                  Estimate  Std.Error  z.value  P(>|z|)
#>   INT ~         
#>     ATT             0.239      0.030    8.069    0.000
#>     SN              0.209      0.031    6.693    0.000
#>     PBC             0.239      0.035    6.841    0.000
#>   BEH ~         
#>     PBC             0.286      0.029    9.788    0.000
#>     INT             0.219      0.030    7.306    0.000
#> 
#> Covariances:
#>                  Estimate  Std.Error  z.value  P(>|z|)
#>   ATT ~~        
#>     SN              0.623      0.016   39.136    0.000
#>     PBC             0.690      0.013   51.792    0.000
#>   SN ~~         
#>     PBC             0.690      0.015   47.198    0.000
#> 
#> Thresholds:
#>                  Estimate  Std.Error  z.value  P(>|z|)
#>     att1|t1        -2.968      0.335   -8.849    0.000
#>     att1|t2        -1.572      0.247   -6.354    0.000
#>     att1|t3        -0.408      0.142   -2.875    0.004
#>     att1|t4         0.255      0.203    1.256    0.209
#>     att1|t5         1.213      0.266    4.563    0.000
#>     att1|t6         2.457      0.927    2.652    0.008
#>     att2|t1        -1.911      0.245   -7.810    0.000
#>     att2|t2        -0.769      0.151   -5.101    0.000
#>     att2|t3        -0.069      0.289   -0.239    0.811
#>     att2|t4         1.290      0.193    6.684    0.000
#>     att2|t5         2.170      0.426    5.097    0.000
#>     att2|t6         2.968      1.504    1.973    0.048
#>     att3|t1        -2.652      0.376   -7.056    0.000
#>     att3|t2        -1.454      0.312   -4.655    0.000
#>     att3|t3        -0.400      0.258   -1.550    0.121
#>     att3|t4         0.457      0.309    1.480    0.139
#>     att3|t5         1.256      0.583    2.154    0.031
#>     att3|t6         2.878      1.633    1.763    0.078
#>     att4|t1        -2.878      0.408   -7.047    0.000
#>     att4|t2        -1.859      0.353   -5.265    0.000
#>     att4|t3        -0.933      0.370   -2.523    0.012
#>     att4|t4        -0.018      0.443   -0.040    0.968
#>     att4|t5         1.221      0.563    2.169    0.030
#>     att4|t6         2.144      1.475    1.453    0.146
#>     att5|t1        -2.807      0.466   -6.027    0.000
#>     att5|t2        -1.793      0.507   -3.539    0.000
#>     att5|t3        -0.389      0.368   -1.057    0.291
#>     att5|t4         0.567      0.345    1.643    0.100
#>     att5|t5         1.385      0.530    2.611    0.009
#>     att5|t6         2.484      1.261    1.970    0.049
#>     sn1|t1         -1.706      0.383   -4.455    0.000
#>     sn1|t2         -0.762      0.398   -1.916    0.055
#>     sn1|t3          0.243      0.391    0.622    0.534
#>     sn1|t4          1.305      0.368    3.543    0.000
#>     sn1|t5          2.044      0.957    2.134    0.033
#>     sn1|t6          3.090      2.454    1.259    0.208
#>     sn2|t1         -3.090      0.554   -5.581    0.000
#>     sn2|t2         -2.326      0.716   -3.251    0.001
#>     sn2|t3         -1.115      0.661   -1.686    0.092
#>     sn2|t4          0.024      0.601    0.040    0.968
#>     sn2|t5          1.030      0.842    1.223    0.221
#>     sn2|t6          2.024      1.751    1.156    0.248
#>     pbc1|t1        -1.919      0.597   -3.214    0.001
#>     pbc1|t2        -0.883      0.564   -1.568    0.117
#>     pbc1|t3        -0.005      0.650   -0.008    0.994
#>     pbc1|t4         1.065      1.014    1.051    0.293
#>     pbc1|t5         2.170      2.113    1.027    0.304
#>     pbc2|t1        -2.543      0.642   -3.963    0.000
#>     pbc2|t2        -1.392      0.520   -2.678    0.007
#>     pbc2|t3        -0.617      0.637   -0.970    0.332
#>     pbc2|t4         0.454      0.607    0.748    0.455
#>     pbc2|t5         1.491      0.898    1.661    0.097
#>     pbc2|t6         2.432      1.881    1.293    0.196
#>     pbc3|t1        -1.768      0.569   -3.106    0.002
#>     pbc3|t2        -0.845      0.612   -1.381    0.167
#>     pbc3|t3         0.145      0.607    0.238    0.812
#>     pbc3|t4         1.282      0.585    2.191    0.028
#>     pbc3|t5         1.896      1.157    1.639    0.101
#>     pbc3|t6         2.968      2.405    1.234    0.217
#>     int1|t1        -2.226      0.652   -3.416    0.001
#>     int1|t2        -1.213      0.636   -1.908    0.056
#>     int1|t3        -0.333      0.726   -0.459    0.646
#>     int1|t4         0.851      0.678    1.254    0.210
#>     int1|t5         1.818      1.104    1.647    0.099
#>     int1|t6         2.697      2.264    1.191    0.234
#>     int2|t1        -2.197      0.654   -3.358    0.001
#>     int2|t2        -1.254      0.694   -1.807    0.071
#>     int2|t3        -0.167      0.641   -0.261    0.794
#>     int2|t4         0.908      0.614    1.478    0.139
#>     int2|t5         1.670      1.099    1.519    0.129
#>     int2|t6         2.512      2.274    1.105    0.269
#>     int3|t1        -2.432      0.686   -3.545    0.000
#>     int3|t2        -1.308      0.573   -2.282    0.023
#>     int3|t3        -0.439      0.600   -0.731    0.465
#>     int3|t4         0.441      0.684    0.645    0.519
#>     int3|t5         1.375      1.096    1.255    0.210
#>     int3|t6         2.512      2.248    1.118    0.264
#>     b1|t1          -2.387      0.756   -3.159    0.002
#>     b1|t2          -1.227      0.699   -1.756    0.079
#>     b1|t3           0.004      0.503    0.007    0.994
#>     b1|t4           0.678      0.663    1.022    0.307
#>     b1|t5           1.630      1.078    1.513    0.130
#>     b1|t6           2.512      2.205    1.139    0.255
#>     b2|t1          -2.308      0.783   -2.949    0.003
#>     b2|t2          -0.972      0.594   -1.637    0.102
#>     b2|t3          -0.068      0.558   -0.121    0.903
#>     b2|t4           0.779      0.536    1.453    0.146
#>     b2|t5           1.977      0.510    3.876    0.000
#> 
#> Variances:
#>                  Estimate  Std.Error  z.value  P(>|z|)
#>     ATT             1.000                             
#>     SN              1.000                             
#>     PBC             1.000                             
#>    .INT             0.632      0.019   33.831    0.000
#>    .BEH             0.802      0.019   42.659    0.000
#>    .att1            0.138      0.029    4.748    0.000
#>    .att2            0.223      0.034    6.494    0.000
#>    .att3            0.175      0.034    5.138    0.000
#>    .att4            0.257      0.037    6.977    0.000
#>    .att5            0.133      0.035    3.805    0.000
#>    .sn1             0.195      0.025    7.804    0.000
#>    .sn2             0.114      0.028    4.143    0.000
#>    .pbc1            0.137      0.024    5.606    0.000
#>    .pbc2            0.135      0.028    4.739    0.000
#>    .pbc3            0.219      0.027    8.138    0.000
#>    .int1            0.185      0.024    7.687    0.000
#>    .int2            0.179      0.025    7.236    0.000
#>    .int3            0.246      0.026    9.297    0.000
#>    .b1              0.219      0.035    6.171    0.000
#>    .b2              0.227      0.035    6.469    0.000