I'm working on a PLS-PM model that essentially consists of 24 likert-scaled questions (1-5). I use 6x4 questions (manifest variables) to make up 4 latent constructs/variables.
Where I need help is transitioning the model into, essentially, two steps. So I want these 24 MV -> 4 LV -> 1 LV. Meaning the four latent constructs make up a final, latent, construct.
Now I do have one question probing this final latent variable, but I don't think it's a good measure based on the data collection process. So I was wondering if anyone had tips in a twostep model going from 24 Manifest Variables to 4 Latents that are then bound into one final latent variable.
I've been using the following data:
> final_data[1:25,c(1:24,27)]
pu1 pu2 pu3 pu4 pu5 pu6 l1 l2 l3 l4 l5 l6 b1 b2 b3 b4 b5 b6 pe1 pe2 pe3 pe4 pe5 pe6 mean
1 3 1 1 1 1 2 3 1 4 4 1 1 5 1 5 5 5 1 4 3 1 2 1 3 1.000000
2 5 4 4 4 5 4 3 3 4 4 2 3 5 4 5 5 5 4 5 4 3 4 5 4 3.000000
3 4 3 4 3 4 4 4 4 4 5 4 4 3 3 5 5 4 4 4 4 3 4 4 4 4.000000
4 3 1 2 2 1 1 1 1 4 4 1 1 1 1 5 5 4 2 4 2 4 4 5 1 1.000000
5 4 3 3 2 4 3 3 2 4 3 2 3 3 2 5 5 4 4 4 3 2 2 3 2 4.000000
6 4 4 5 4 5 3 2 2 5 5 1 2 4 3 5 4 4 1 1 4 5 4 5 4 4.000000
7 4 4 5 4 5 3 4 4 4 5 4 4 4 3 4 4 5 4 3 4 5 5 4 3 4.000000
8 5 5 5 5 5 5 5 5 5 5 4 5 4 4 5 3 4 5 5 5 5 5 4 4 4.666667
9 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 4 5 4 5 5 4 4 4 4.750000
10 5 5 5 5 5 4 5 4 5 5 5 5 5 4 5 4 5 5 4 5 5 4 4 4 4.666667
11 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 5 4.916667
12 5 5 5 5 5 5 5 2 5 5 5 5 5 1 5 4 5 2 5 2 2 4 4 4 4.166667
13 5 4 4 5 5 3 5 3 5 5 5 5 4 4 5 5 4 5 4 5 5 4 4 4 4.458333
14 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5.000000
15 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 4 4 5 4.833333
16 5 4 5 4 5 4 4 4 5 5 5 5 4 4 5 5 5 5 5 5 4 4 4 4 4.541667
17 5 4 5 5 5 4 5 5 5 5 5 5 4 4 5 4 4 5 5 5 5 4 5 3 4.625000
18 5 5 5 4 5 4 5 5 4 4 4 5 5 5 5 5 5 4 5 5 5 5 5 5 4.750000
19 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 4.958333
20 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 4 5 4 5 5 5 5 4 4.833333
21 5 5 5 4 5 5 5 4 5 5 4 5 5 3 3 4 5 5 5 4 3 4 2 4 4.333333
22 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4.958333
23 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 4.916667
24 5 5 5 5 5 5 5 4 5 5 4 5 5 4 5 4 5 4 5 5 5 4 2 4 4.583333
25 5 5 5 5 5 4 4 4 5 5 4 4 4 5 5 5 5 4 4 5 5 5 4 1 4.458333
These data are then implemented into the PLS-PM (plspm
-package) framework like this:
PU = c(0,0,0,0,0)
LE = c(0,0,0,0,0)
BE = c(0,0,0,0,0)
PE = c(0,0,0,0,0)
ME = c(1,1,1,1,0)
#Setup matrix for latent variable relations
LVrelations = rbind(PU, LE, BE, PE, ME)
colnames(LVrelations) = rownames(LVrelations)
#Plots inner-relations
innerplot(LVrelations)
#5x reflective measurement
modes = rep("A", 5)
#Setting variable blocks, notice 27 is the "mean"-variable which is the poor variable measuring the final construct.
blocks = list(1:6, 7:12, 13:18, 19:24, 27)
#Estimating the model
PLS_model <- plspm(final_data, LVrelations, blocks, modes, scheme = "path", maxiter=1500, scaled=TRUE, boot.val = TRUE, br=1500)
I've written my own function for evaluating to PLS_model that is too long to share here, however the results are like so:
[1] "Direct, indirect and total effects"
relationships direct indirect total
1 PU -> LE 0.00000000 0 0.00000000
2 PU -> BE 0.00000000 0 0.00000000
3 PU -> PE 0.00000000 0 0.00000000
4 PU -> ME 0.26029732 0 0.26029732
5 LE -> BE 0.00000000 0 0.00000000
6 LE -> PE 0.00000000 0 0.00000000
7 LE -> ME 0.11416094 0 0.11416094
8 BE -> PE 0.00000000 0 0.00000000
9 BE -> ME -0.02222281 0 -0.02222281
10 PE -> ME 0.23629727 0 0.23629727
[1] "t-statistics, direct effects"
relation t_stat
1 PU -> ME 6.6446977
2 LE -> ME 2.3766199
3 BE -> ME -0.5374817
4 PE -> ME 5.2979664
[1] "Variance inflation factor of inner model"
PU LE BE PE ME
PU NA NA NA NA 2.141610
LE NA NA NA NA 3.045052
BE NA NA NA NA 2.291925
PE NA NA NA NA 2.725954
ME NA NA NA NA NA
[1] "R-squared and adjusted R-squared"
R2 R2_adjusted
ME 0.2777126 0.275309
[1] "Cronbach's Alpha"
Mode MVs C.alpha
PU A 6 0.8426835
LE A 6 0.8794236
BE A 6 0.7671871
PE A 6 0.8294771
ME A 1 1.0000000
[1] "Composite reliability"
PU LE BE PE ME
0.8837459 0.9090349 0.8329927 0.8759110 1.0000000
[1] "Indicator reliability"
name block weight loading communality redundancy
1 pu1 PU 0.1938794 0.7182937 0.5159458 0.0000000
2 pu2 PU 0.2046544 0.7470764 0.5581231 0.0000000
3 pu3 PU 0.1990088 0.7244267 0.5247941 0.0000000
4 pu4 PU 0.2539747 0.8019106 0.6430606 0.0000000
5 pu5 PU 0.2220430 0.7671911 0.5885822 0.0000000
6 pu6 PU 0.2617321 0.7246473 0.5251137 0.0000000
7 le1 LE 0.2128978 0.8269111 0.6837819 0.0000000
8 le2 LE 0.1981114 0.7828992 0.6129312 0.0000000
9 le3 LE 0.2298751 0.7911923 0.6259853 0.0000000
10 le4 LE 0.2033111 0.7153712 0.5117560 0.0000000
11 le5 LE 0.2109253 0.7746310 0.6000532 0.0000000
12 le6 LE 0.2101641 0.8476404 0.7184942 0.0000000
13 be1 BE 0.2574370 0.6270682 0.3932146 0.0000000
14 be2 BE 0.2936648 0.7885895 0.6218735 0.0000000
15 be3 BE 0.1533256 0.6080632 0.3697409 0.0000000
16 be4 BE 0.1793657 0.6134899 0.3763699 0.0000000
17 be5 BE 0.2375959 0.6569192 0.4315428 0.0000000
18 be6 BE 0.3351070 0.7389770 0.5460870 0.0000000
19 pe1 PE 0.2287496 0.7023633 0.4933142 0.0000000
20 pe2 PE 0.2262582 0.7476057 0.5589143 0.0000000
21 pe3 PE 0.2080842 0.7883581 0.6215085 0.0000000
22 pe4 PE 0.2109486 0.7795138 0.6076418 0.0000000
23 pe5 PE 0.2092970 0.6200713 0.3844884 0.0000000
24 pe6 PE 0.2766866 0.7659262 0.5866430 0.0000000
25 me ME 1.0000000 1.0000000 1.0000000 0.2777126
[1] "Average variance extracted"
PU LE BE PE ME
0.5592699 0.6255003 0.4564714 0.5420850 1.0000000
[1] "Crossloadings"
PU LE BE PE ME
pu1 0.7182937 0.4740919 0.5019332 0.4212669 0.3048368
pu2 0.7470764 0.4713881 0.4412945 0.4112974 0.3217783
pu3 0.7244267 0.4963263 0.3534509 0.3733541 0.3129018
pu4 0.8019106 0.6356893 0.4800599 0.5243851 0.3993246
pu5 0.7671911 0.5200129 0.4213866 0.4327829 0.3491184
pu6 0.7246473 0.5460723 0.4918347 0.5710920 0.4115217
le1 0.5295208 0.8269111 0.4988158 0.6341754 0.3657379
le2 0.4893480 0.7828992 0.5355171 0.5856899 0.3403363
le3 0.6409018 0.7911923 0.5654582 0.5512458 0.3949033
le4 0.5745862 0.7153712 0.5803313 0.5586707 0.3492690
le5 0.5917927 0.7746310 0.5089028 0.5605156 0.3623493
le6 0.5155499 0.8476404 0.5387079 0.6500480 0.3610417
be1 0.4505560 0.3746048 0.6270682 0.3876584 0.2585820
be2 0.4517577 0.5858064 0.7885895 0.6276892 0.2949710
be3 0.2803852 0.2936021 0.6080632 0.3441233 0.1540076
be4 0.2439570 0.2651536 0.6134899 0.3213790 0.1801635
be5 0.4694008 0.4376785 0.6569192 0.4301406 0.2386527
be6 0.4632986 0.6439263 0.7389770 0.6187337 0.3365975
pe1 0.4943974 0.4817419 0.4814805 0.7023633 0.3426968
pe2 0.4362848 0.6208939 0.6363285 0.7476057 0.3389643
pe3 0.4299922 0.6509659 0.5679284 0.7883581 0.3117373
pe4 0.4214533 0.5698984 0.6245779 0.7795138 0.3160285
pe5 0.3981441 0.4525262 0.3289225 0.6200713 0.3135542
pe6 0.5254448 0.5245059 0.4741486 0.7659262 0.4145126
me 0.4738712 0.4593846 0.3786187 0.4669346 1.0000000
So what's baffling me is how I transition these results into having actual estimates for the "ME"-variable, or if I can employ a two-step procedure in the plspm-framework that utilizes these 4 latent constructs (PU, LE, BE and PE).
So essentially what I'm interested in is thoughts on how to use this data to create a measure for the final ME-variable, and that there is a different way via the plspm-framework that is better than using a poor MV-measure ('me'-variable).
I had a look at Gaston Sanchez' guide to the pls-pm package, link At pp. 143-148 the two-step procedures are discussed, but it appears that manifest variables are connected to the final variable that is construed based on latent variables.