library(plssem)It is possible to estimate models with second order construcst with the pls() function, using the two-stage approach. Here we see an example using the TPB_2SO dataset, from the modsem package. The model below contains two second order latent variables, INT (intention) which is a second order latent variable of ATT (attitude) and SN (subjective norm), and PBC (perceived behavioural control) which is a second order latent variable of PC (perceived control) and PB (perceived behaviour).
library(modsem)
#> This is modsem (1.0.19). Please report any bugs!
#>
#> Attaching package: 'modsem'
#> The following object is masked from 'package:plssem':
#>
#> parameter_estimates
tpb_2so <- '
# First order latent variables
ATT =~ att1 + att2 + att3
SN =~ sn1 + sn2 + sn3
PB =~ pb1 + pb2 + pb3
PC =~ pc1 + pc2 + pc3
BEH =~ b1 + b2
# Higher order latent variables
INT =~ ATT + SN
PBC =~ PC + PB
# Structural model
BEH ~ PBC + INT + INT:PBC
'
fit <- pls(tpb_2so, data = TPB_2SO, bootstrap = TRUE, boot.R = 50)
summary(fit)
#> plssem (0.1.1) ended normally after 5 iterations
#>
#> Estimator PLSc
#> Link PROBIT
#>
#> Number of observations 2000
#> Number of iterations 5
#> Number of latent variables 7
#> Number of observed variables 14
#>
#> Fit Measures:
#> Chi-Square 179.935
#> Degrees of Freedom 47
#> SRMR 0.010
#> RMSEA 0.038
#>
#> R-squared (indicators):
#> att1 0.907
#> att2 0.879
#> att3 0.842
#> sn1 0.818
#> sn2 0.786
#> sn3 0.729
#> pb1 0.894
#> pb2 0.866
#> pb3 0.820
#> pc1 0.938
#> pc2 0.848
#> pc3 0.894
#> b1 0.833
#> b2 0.717
#>
#> R-squared (latents):
#> ATT 0.735
#> SN 0.605
#> PC 0.665
#> PB 0.423
#> BEH 0.198
#>
#> Latent Variables:
#> Estimate Std.Error z.value P(>|z|)
#> ATT =~
#> att1 0.952 0.006 155.611 0.000
#> att2 0.937 0.006 153.344 0.000
#> att3 0.918 0.008 113.690 0.000
#> SN =~
#> sn1 0.904 0.011 82.288 0.000
#> sn2 0.886 0.011 79.536 0.000
#> sn3 0.854 0.013 66.947 0.000
#> PB =~
#> pb1 0.946 0.008 111.923 0.000
#> pb2 0.931 0.012 75.849 0.000
#> pb3 0.906 0.012 72.787 0.000
#> PC =~
#> pc1 0.969 0.007 129.156 0.000
#> pc2 0.921 0.008 110.393 0.000
#> pc3 0.945 0.008 111.951 0.000
#> BEH =~
#> b1 0.913 0.023 39.365 0.000
#> b2 0.847 0.023 36.819 0.000
#> INT =~
#> ATT 0.877 0.040 22.186 0.000
#> SN 0.814 0.038 21.543 0.000
#> PBC =~
#> PC 0.831 0.063 13.264 0.000
#> PB 0.668 0.053 12.647 0.000
#>
#> Regressions:
#> Estimate Std.Error z.value P(>|z|)
#> BEH ~
#> INT 0.251 0.022 11.179 0.000
#> PBC 0.289 0.029 9.842 0.000
#> INT:PBC 0.250 0.030 8.449 0.000
#>
#> Covariances:
#> Estimate Std.Error z.value P(>|z|)
#> INT ~~
#> PBC 0.035 0.028 1.242 0.214
#> INT:PBC -0.006 0.035 -0.169 0.865
#> PBC ~~
#> INT:PBC -0.108 0.049 -2.221 0.026
#>
#> Variances:
#> Estimate Std.Error z.value P(>|z|)
#> .att1 0.093 0.012 7.962 0.000
#> .att2 0.121 0.011 10.581 0.000
#> .att3 0.158 0.015 10.645 0.000
#> .sn1 0.182 0.020 9.152 0.000
#> .sn2 0.214 0.020 10.835 0.000
#> .sn3 0.271 0.022 12.529 0.000
#> .pb1 0.106 0.016 6.599 0.000
#> .pb2 0.134 0.023 5.859 0.000
#> .pb3 0.180 0.023 7.973 0.000
#> .pc1 0.062 0.015 4.269 0.000
#> .pc2 0.152 0.015 9.869 0.000
#> .pc3 0.106 0.016 6.660 0.000
#> .b1 0.167 0.043 3.918 0.000
#> .b2 0.283 0.039 7.273 0.000
#> INT 1.000
#> PBC 1.000
#> .BEH 0.802 0.024 33.579 0.000
#> INT:PBC 1.006 0.078 12.936 0.000
#> .ATT 0.265 0.066 4.020 0.000
#> .SN 0.395 0.058 6.859 0.000
#> .PC 0.335 0.103 3.248 0.001
#> .PB 0.577 0.067 8.603 0.000