sem-in-r / seminr

Natural feeling domain-specific language for building structural equation models in R for estimation by covariance-based methods (like LISREL/Lavaan) or partial least squares (like SmartPLS)
58 stars 19 forks source link

Comparison with lavaan? #132

Closed stevenhurwitt closed 4 years ago

stevenhurwitt commented 4 years ago

This might be a dumb question, but is it possible to use PLS with the same models as covariance-based methods such as those used in the lavaan package? I'm a little confused how the model structures translate (if they do).

For example the political_democracy data uses the model:

# measurement model
model = "ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
# regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
# residual correlations
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8"

But for PLS it looks like everything needs to be explicit variables when setting the structural and measurement models. Would it be correct to hardcode the latent variables into the dataset using the =~ statements from lavaan and analyze them using seminr? i.e.

pol_dem$ind60 = pol_dem$x1 + pol_dem$x2 + pol_dem$x3
pol_dem$dem60 = pol_dem$y1 + pol_dem$y2 + pol_dem$y3 + pol_dem$y4
pol_dem$dem65 = pol_dem$y5 + pol_dem$y6 + pol_dem$y7 + pol_dem$y8

Apologies for the ignorance, I am new to these methods and trying to figure out if it's possible to compare and contrast them and their results.

soumyaray commented 4 years ago

Please keep asking questions -- they are good ones!

  1. Just to be sure, note that PLS path modeling (PLS-PM) is not the same as PLS regression (PLSR). PLS-PM models constructs as composites (a kind of formative construct) using weighted sums of measurement items. In SEMinR, we define composites using the composite() function.

  2. PLS-PM cannot natively model reflective "common factor" constructs like covariance-based SEM (CB-SEM) does. The closest that PLS-PM can come to modeling reflective constructs is by doing a post-hoc adjustment to get nearly the same weights/paths as LAVAAN/LISREL (see Dijkstra & Henseler 2015). The reflective() function in SEMinR will try to do these post-hoc adjustments to simulate common factor results.

Dijkstra, T. K., & Henseler, J. (2015). Consistent partial least squares path modeling. MIS quarterly, 39(2). Available at: https://pdfs.semanticscholar.org/7e56/cb95c8996a46c5dff13267a651f382a73567.pdf

Let us know what else is confusing.

stevenhurwitt commented 4 years ago

Thanks for the clarification and reference! Helps me understand the software better and I’ll def look more into this and share with my collaborators

soumyaray commented 4 years ago

Sure thing @stevenhurwitt -- I'll close the issue for now as it is not a problem with SEMinR. But you are more than welcome to keep the discussion going here to resolve any further conceptual questions.

Please note that we also have a Facebook group where you can post questions, though Github is the preferred place if you have to post code: https://www.facebook.com/groups/seminr/