jasp-stats / jasp-issues

This repository is solely meant for reporting of bugs, feature requests and other issues in JASP.
55 stars 29 forks source link

[Feature Request]: PLSc-SEM (Consistent Partial Least Squares Structural Equation Modeling) #2356

Open Apra119 opened 8 months ago

Apra119 commented 8 months ago

Description

To add new SEM Analysis

Purpose

To add SEM with Variance-based (consistent) for larger data

Use-case

No response

Is your feature request related to a problem?

No response

Is your feature request related to a JASP module?

SEM

Describe the solution you would like

No response

Describe alternatives that you have considered

R Package that I know use it is SEMinR

Additional context

SEMinR https://cran.r-project.org/web/packages/seminr/seminr.pdf

juliuspfadt commented 4 months ago

Thanks for the request @Apra119. Maybe @FloSchuberth would help me out here. What is the difference between consistent PLS and regular PLS?

FloSchuberth commented 4 months ago

@juliuspfadt: The difference between PLS and consistent PLS (PLSc) is that the latter performs a correction attenuation in case of reflectively measured latent variable (if the =~ operator is used). By default, PLS creates composites scores for the latent variable. If the reflective measurement model is true, the observed variables (x_i) are contaminated with random measurement error (epsilon): x_i = lambda_i * eta + epsilon_i. If you create a composite of these observed variables, i.e., c=w'x, also c contains random measurement error. In a next step, the composite scores are used in PLS to estimate the structural parameters using OLS regressions. One can show that the OLS estimates are likely to be biased if the variables contain random measurement error (see e.g., Schuberth et al. 2023). this bias can be addressed by a correction for attenuation. This is what PLSc does, see Dijkstra & Henseler (2015). As a consequence, PLSc produces consistent parameter estimates for latent variable models. In contrast, the normal PLS estimates are biased/inconsistent.
The good news is that PLSc is already implemented in cSEM and thus in JASP. You use the "disattenuate composite correlations" argument under the Model tab for this purpose. If the box is checked PLSc is applied otherwise PLS is used. Perhaps you can change the label from disattenuate composite correlations to "consistent partial least squares". Moreover, I suggest to limit the weighting approaches to PLS-PM and remove the other options. So in fact that menu "Weighting approach"under Estimation can be removed. In this case you make sure that users always use PLS or PLSc and none of the other approaches implemented in cSEM.

HTH

Best regards, Florian

References: Dijkstra, T. K., & Henseler, J. (2015). Consistent and asymptotically normal PLS estimators for linear structural equations. Computational Statistics & Data Analysis, 81, 10–23. https://doi.org/10.1016/j.csda.2014.07.008

Schuberth, F., Schamberger, T., & Henseler, J. (2023). More powerful parameter tests? No, rather biased parameter estimates. Some reflections on path analysis with weighted composites. Behavior Research Methods. https://doi.org/10.3758/s13428-023-02256-5

juliuspfadt commented 4 months ago

That is very helpful thank you. To clarify, you do not think JASP users should be able to control the weighting approach?

FloSchuberth commented 4 months ago

@juliuspfadt Yes I think that users should not be able control the weighting scheme. The reasons for that are the following: 1) In JASP you sse cSEM as a module for partial least squares SEM. So as user I would expect to run PLS-SEM if I choose this JASP module. If you choose a different weighting scheme this is not the case anymore. 2) You might run into conflicts because of differently selected options. For instance if you use weighting scheme GSCA with certain other options you might get cryptic error messages. 3) The other weighting schemes are not often used (except GSCA).

Therefore, I would reduce the features for the sake of ease of use even though you loose some features of cSEM, which as described above I think is not a big deal for JASP users.

Considering GSCA, cSEM currently provides just a rudimentary implementation of it. However, I am working on that. Therefore, in the future it might be an opportunity for JASP to add a new module for Generalized Structured Component Analysis, in which you can use again the csem function but just fix the weighting scheme to GSCA instead of PLS-PM. However, this is really sth. for the future.

juliuspfadt commented 4 months ago

Great. Thanks :)

juliuspfadt commented 4 months ago

one more question, what about the benchmark option under the prediction tab then?

FloSchuberth commented 4 months ago

I think you can leave that as it is. It just determines the benchmark to which you want to compare the PLS-SEM predictions. So this should be fine.

FloSchuberth commented 4 months ago

@juliuspfadt : Are you aware of that article: https://osf.io/download/65afcf6a99d010046662670a/ In their discussion they state: "However, JASP does have areas for improvement. Until version 0.18.1, its primary deficiency for basic PLS-SEM models lies in the absence of confidence intervals (via bootstrap) for crucial measures like HTMT and the accurate diagnosis of collinearity, such as information on the Variance Inflation Factor (VIF) of constructs in the inner model. The need for alternative modules, besides SEM/PLS, for this information is emphasized"

I believe most the limitations have been addressed in cSEM and therefore it should be easy to overcome them in JASP. Just some food for thoughts ;)

juliuspfadt commented 4 months ago

sounds like a new issue to me. Thank you. I think there is a lot to be done for PLS in JASP as you pointed out multiple times. Unfortunately I did not implement it, and I do not know when I can get around to it. Maybe you can take a look and add things. I think we have been tardy including you in the development and I apologize :) https://github.com/jasp-stats/jasp-issues/issues/2567

FloSchuberth commented 4 months ago

@juliuspfadt : Yes indeed this is a new issue.

Considering the new issue that you have created, I think in the description it it should be 1) Implement HTMT, 2) Confidence intervals for the HTMT and 3) implementation of VIF.

There are more suggestions that I have, I just need to find time to write up all things properly.

Ah no problem, it is how it is ;)