+ +

Generalized structured component analysis (GSCA), generalized +structured component analysis with uniquness terms (GSCAM), +and integrated generalized structured component component analysis +(IGSCA) are all members of the broader GSCA family of composite-based +approaches to structural equation modeling introduced (Hwang and Takane 2004, 2014; Hwang et al. 2017, +2021).

+

Like the other composite-based approaches, such as partial least +squares path modelling (PLS), every GSCA-type method represents +constructs by a linear combination of its indicators. What originally +set GSCA apart from PLS is its global objective fit function, which aims +to maximize the averaged explained variance of its constructs and +indicators (Henseler 2012; Hwang and Takane +2014). Compared to The global objective fit function facilitates +multigroup hypothesis testing and constrained parameter estimation, +which would usually be more complicated using PLS (Hwang and Takane 2014). Additionally, compared +to likelihood-based SEM, GSCA models make no distributional assumptions +regarding the distribution of the indicators, constructs or their +associated errors.

+

An important distinction between each member of the GSCA family is +whether or not the measurement error is estimated and removed from the +indicator before computing the construct scores. Using GSCAM, +removing measurement error has enabled unbiased estimaties of path +coefficients and loadings associated with common factor constructs (Hwang et al. 2017, 2021). In contrast, +traditional GSCA produces biased estimates when the underlying construct +is a common factor. The limitation of GSCAM is that it +produces biased parameter estimates for composite constructs. Hence, +IGSCA was proposed as a way of handling both common factor and composite +constructs within the same integrated SEM model (Hwang et al. 2021). When the constructs are +correctly specified, simulation studies have shown that IGSCA produces +unbiased parameter estimates (Hwang et al. +2021).

+

We now discuss how (traditional) GSCA, GSCAM and IGSCA may +be estimated using the functions of the cSEM-package see Sections Implementation and Examples.

+
+

Syntax and Options

+

Suppose that a structural model ‘model’ is specified in Lavaan-syntax +and that data are given in form of an observation matrix +data. To estimate parameters now in this specified +structural model by means of GSCA for the given data, the user has to +call the function csem():

+
library(cSEM)
+#> 
+#> Attaching package: 'cSEM'
+#> The following object is masked from 'package:stats':
+#> 
+#>     predict
+#> The following object is masked from 'package:grDevices':
+#> 
+#>     savePlot
+
csem(.data = data, .model = model, .approach_weights = "GSCA")
+

Although the csem-function has many more input +arguments, it suffices in the case of GSCA in a first step to specify +the input arguments .model and .data and to +set the argument .approach_weights equal to +“GSCA”.

+

The argument .disattenuate indicates whether we allow +for the estimation and removal of measurement error from the indicators. +Its default value is TRUE resulting in either +GSCAM or IGSCA as the estimation method, only if there are +common factors specified in the model—meaning using +=~. Setting .disattenuate = FALSE leads to +‘standard’ GSCA, only if there are only composite constructs +specified in the model—meaning using <~. +IGSCA requires that .disattenuate = TRUE and for there to +be both common factors (=~) and composites +(<~) specified in model.

+

There are two other input-arguments which are of interest when +estimating parameters with GSCA or GSCAM: +.iter_max and .tolerance. Both will be +explained in the section Methods.

+
+
+

Usage & Examples

+
+

Example 1: Pure common factor model and GSCAM

+

In the following, a first application example of the +csem-function for the estimation with GSCA is presented. Data +are given in form of the dataset “satisfaction” that comes with the +cSEM-package. This dataset consists of 250 observations for 27 +indicators. These indicators are somehow related to 6 constructs. Before +estimation can be done, a model has to be specified for the +relationships among these variables. This model is a result of the +user’s ideas, hypotheses and theories about the original subject, which +is customer satisfaction in the example. The model specification has to +be done in lavaan-syntax. In the structural model, the tilde “~” is the +known regression operator. However, in the measurement model, the symbol +“<~” is used for pure composites whereas the symbol “=~” stands for +common factors. Note that the following specification is just one +possible way and does not reflect any common theory about customer +satisfaction but is used for illustration purposes only.

+
library(cSEM)
+data(satisfaction)
+
+model <- "
+# Structural model
+QUAL ~ EXPE
+EXPE ~ IMAG
+SAT  ~ IMAG + EXPE + QUAL + VAL
+LOY  ~ IMAG + SAT
+VAL  ~ EXPE + QUAL
+
+# Measurement model (pure common factor)
+
+EXPE =~ expe1 + expe2 + expe3 + expe4 + expe5
+IMAG =~ imag1 + imag2 + imag3 + imag4 + imag5
+LOY  =~ loy1  + loy2  + loy3  + loy4
+QUAL =~ qual1 + qual2 + qual3 + qual4 + qual5
+SAT  =~ sat1  + sat2  + sat3  + sat4
+VAL  =~ val1  + val2  + val3  + val4
+"
+

Having specified the model to be estimated and the data, the user can +now call the csem-function:

+
results1 <- csem(
+  satisfaction,
+  model,
+  .approach_weights = "GSCA",
+  .disattenuate = TRUE,
+  .conv_criterion = "sum_diff_absolute",
+  .tolerance = 0.0001,
+  .iter_max = 100
+)
+

An additional argument is to set +.conv_criterion = "sum_diff_absolute", which checks for +convergence of the model fitting by taking the sum of the absolute +differences with each iteration of the internal alternating least +squares (ALS) algorithm. Depending on which type of GSCA is used, when +the sum of the absolute differences of the parameters (e.g., path +coefficients and loadings) changes less than .tolerance +between ALS iterations, then the algorithm has converged. The maximum +number of iterations is set by .iter_max.

+

The estimation results are stored in the object +“results1”:

+
results1
+#> ________________________________________________________________________________
+#> ----------------------------------- Overview -----------------------------------
+#> 
+#> Estimation was successful.
+#> 
+#> The result is a list of class cSEMResults with list elements:
+#> 
+#>  - Estimates
+#>  - Information
+#> 
+#> To get an overview or help type:
+#> 
+#>  - ?cSEMResults
+#>  - str(<object-name>)
+#>  - listviewer::jsondedit(<object-name>, mode = 'view')
+#> 
+#> If you wish to access the list elements directly type e.g. 
+#> 
+#>  - <object-name>$Estimates
+#> 
+#> Available postestimation commands:
+#> 
+#>  - assess(<object-name>)
+#>  - infer(<object-name)
+#>  - predict(<object-name>)
+#>  - summarize(<object-name>)
+#>  - verify(<object-name>)
+#> ________________________________________________________________________________
+

As indicated, the object “results1” is a list of class +cSEMResults with the list elements Estimates and +Information. Each sublist contains several elements which can +be accessed separately:

+
    +
  1. Estimates
  2. +
+
    +
  • Path_estimates
  • +
  • Loading_estimates
  • +
  • Weight_estimates
  • +
  • Inner_weight_estimates
  • +
  • Construct_scores
  • +
  • Indicator_VCV
  • +
  • Proxy_VCV
  • +
  • Construct_VCV
  • +
  • Unique_loading_estimates
  • +
  • Unique_scores
  • +
  • Construct_reliabilities
  • +
  • R2
  • +
  • R2adj
  • +
  • VIF
  • +
+
    +
  1. Information
  2. +
+
    +
  • Data
  • +
  • Model
  • +
  • Arguments
  • +
  • Type_of_indicator_correlation
  • +
  • Weight_info
  • +
+

Note that in this package’s conventions, the +Construct_reliabilities are always set to 1 in +GSCA-type models. This is because, in theory, we suspect that +GSCAM computes perfectly reliable (common factor) construct +scores because of the casewise removal of measurement error.

+

Depending on the research interests that the user has, the relevant +information and estimators can be extracted by the user.

+

For GSCA, as well as for PLS and the other approaches, some +postestimation functions are available: 1. ‘assess’ 2. +‘summarize’ 3. ‘verify’

+

Firstly, the ‘assess’-function provides the user with common +evaluation criteria and fit measures to assess the model:

+
assess(results1)
+

Next, if the user just wants a compact summary of the parameter +estimators and of the most important information concerning the +estimation, calling the ‘summarize’-function of the +cSEM-package will provide this.

+
summarize(results1)
+#> ________________________________________________________________________________
+#> ----------------------------------- Overview -----------------------------------
+#> 
+#>  General information:
+#>  ------------------------
+#>  Estimation status                  = Ok
+#>  Number of observations             = 250
+#>  Weight estimator                   = gsca (gsca_m)
+#>  Type of indicator correlation      = Pearson
+#>  Path model estimator               = OLS
+#>  Second-order approach              = NA
+#>  Type of path model                 = Linear
+#>  Disattenuated                      = Yes (GSCAm)
+#> 
+#>  Construct details:
+#>  ------------------
+#>  Name  Modeled as     Order         
+#> 
+#>  IMAG  Common factor  First order   
+#>  EXPE  Common factor  First order   
+#>  QUAL  Common factor  First order   
+#>  VAL   Common factor  First order   
+#>  SAT   Common factor  First order   
+#>  LOY   Common factor  First order   
+#> 
+#> ----------------------------------- Estimates ----------------------------------
+#> 
+#> Estimated path coefficients:
+#> ============================
+#>   Path           Estimate  Std. error   t-stat.   p-value
+#>   EXPE ~ IMAG      0.6087          NA        NA        NA
+#>   QUAL ~ EXPE      0.9397          NA        NA        NA
+#>   VAL ~ EXPE      -0.2146          NA        NA        NA
+#>   VAL ~ QUAL       1.0365          NA        NA        NA
+#>   SAT ~ IMAG       0.0869          NA        NA        NA
+#>   SAT ~ EXPE      -0.0252          NA        NA        NA
+#>   SAT ~ QUAL       0.0378          NA        NA        NA
+#>   SAT ~ VAL        0.8275          NA        NA        NA
+#>   LOY ~ IMAG       0.3120          NA        NA        NA
+#>   LOY ~ SAT        0.5098          NA        NA        NA
+#> 
+#> Estimated loadings:
+#> ===================
+#>   Loading          Estimate  Std. error   t-stat.   p-value
+#>   IMAG =~ imag1      0.7098          NA        NA        NA
+#>   IMAG =~ imag2      0.9126          NA        NA        NA
+#>   IMAG =~ imag3      0.8375          NA        NA        NA
+#>   IMAG =~ imag4      0.5587          NA        NA        NA
+#>   IMAG =~ imag5      0.5597          NA        NA        NA
+#>   EXPE =~ expe1      0.7598          NA        NA        NA
+#>   EXPE =~ expe2      0.7736          NA        NA        NA
+#>   EXPE =~ expe3      0.6656          NA        NA        NA
+#>   EXPE =~ expe4      0.7000          NA        NA        NA
+#>   EXPE =~ expe5      0.7699          NA        NA        NA
+#>   QUAL =~ qual1      0.7414          NA        NA        NA
+#>   QUAL =~ qual2      0.8323          NA        NA        NA
+#>   QUAL =~ qual3      0.6879          NA        NA        NA
+#>   QUAL =~ qual4      0.8625          NA        NA        NA
+#>   QUAL =~ qual5      0.7625          NA        NA        NA
+#>   VAL =~ val1        0.7990          NA        NA        NA
+#>   VAL =~ val2        0.8373          NA        NA        NA
+#>   VAL =~ val3        0.6934          NA        NA        NA
+#>   VAL =~ val4        0.7247          NA        NA        NA
+#>   SAT =~ sat1        0.8996          NA        NA        NA
+#>   SAT =~ sat2        0.9048          NA        NA        NA
+#>   SAT =~ sat3        0.7715          NA        NA        NA
+#>   SAT =~ sat4        0.7462          NA        NA        NA
+#>   LOY =~ loy1        0.8532          NA        NA        NA
+#>   LOY =~ loy2        0.6211          NA        NA        NA
+#>   LOY =~ loy3        0.8294          NA        NA        NA
+#>   LOY =~ loy4        0.6554          NA        NA        NA
+#> 
+#> Estimated weights:
+#> ==================
+#>   Weight           Estimate  Std. error   t-stat.   p-value
+#>   IMAG <~ imag1      0.2665          NA        NA        NA
+#>   IMAG <~ imag2      0.3426          NA        NA        NA
+#>   IMAG <~ imag3      0.3145          NA        NA        NA
+#>   IMAG <~ imag4      0.2098          NA        NA        NA
+#>   IMAG <~ imag5      0.2101          NA        NA        NA
+#>   EXPE <~ expe1      0.2812          NA        NA        NA
+#>   EXPE <~ expe2      0.2864          NA        NA        NA
+#>   EXPE <~ expe3      0.2464          NA        NA        NA
+#>   EXPE <~ expe4      0.2591          NA        NA        NA
+#>   EXPE <~ expe5      0.2850          NA        NA        NA
+#>   QUAL <~ qual1      0.2438          NA        NA        NA
+#>   QUAL <~ qual2      0.2737          NA        NA        NA
+#>   QUAL <~ qual3      0.2262          NA        NA        NA
+#>   QUAL <~ qual4      0.2836          NA        NA        NA
+#>   QUAL <~ qual5      0.2508          NA        NA        NA
+#>   VAL <~ val1        0.3407          NA        NA        NA
+#>   VAL <~ val2        0.3570          NA        NA        NA
+#>   VAL <~ val3        0.2956          NA        NA        NA
+#>   VAL <~ val4        0.3090          NA        NA        NA
+#>   SAT <~ sat1        0.3236          NA        NA        NA
+#>   SAT <~ sat2        0.3255          NA        NA        NA
+#>   SAT <~ sat3        0.2775          NA        NA        NA
+#>   SAT <~ sat4        0.2684          NA        NA        NA
+#>   LOY <~ loy1        0.3824          NA        NA        NA
+#>   LOY <~ loy2        0.2784          NA        NA        NA
+#>   LOY <~ loy3        0.3717          NA        NA        NA
+#>   LOY <~ loy4        0.2937          NA        NA        NA
+#> 
+#> ------------------------------------ Effects -----------------------------------
+#> 
+#> Estimated total effects:
+#> ========================
+#>   Total effect    Estimate  Std. error   t-stat.   p-value
+#>   EXPE ~ IMAG       0.6087          NA        NA        NA
+#>   QUAL ~ IMAG       0.5720          NA        NA        NA
+#>   QUAL ~ EXPE       0.9397          NA        NA        NA
+#>   VAL ~ IMAG        0.4622          NA        NA        NA
+#>   VAL ~ EXPE        0.7594          NA        NA        NA
+#>   VAL ~ QUAL        1.0365          NA        NA        NA
+#>   SAT ~ IMAG        0.4756          NA        NA        NA
+#>   SAT ~ EXPE        0.6386          NA        NA        NA
+#>   SAT ~ QUAL        0.8955          NA        NA        NA
+#>   SAT ~ VAL         0.8275          NA        NA        NA
+#>   LOY ~ IMAG        0.5545          NA        NA        NA
+#>   LOY ~ EXPE        0.3256          NA        NA        NA
+#>   LOY ~ QUAL        0.4565          NA        NA        NA
+#>   LOY ~ VAL         0.4219          NA        NA        NA
+#>   LOY ~ SAT         0.5098          NA        NA        NA
+#> 
+#> Estimated indirect effects:
+#> ===========================
+#>   Indirect effect    Estimate  Std. error   t-stat.   p-value
+#>   QUAL ~ IMAG          0.5720          NA        NA        NA
+#>   VAL ~ IMAG           0.4622          NA        NA        NA
+#>   VAL ~ EXPE           0.9740          NA        NA        NA
+#>   SAT ~ IMAG           0.3888          NA        NA        NA
+#>   SAT ~ EXPE           0.6639          NA        NA        NA
+#>   SAT ~ QUAL           0.8577          NA        NA        NA
+#>   LOY ~ IMAG           0.2425          NA        NA        NA
+#>   LOY ~ EXPE           0.3256          NA        NA        NA
+#>   LOY ~ QUAL           0.4565          NA        NA        NA
+#>   LOY ~ VAL            0.4219          NA        NA        NA
+#> ________________________________________________________________________________
+

Finally, the ‘verify’-function checks whether the calculated +results are admissible. That is to say, it is verified that all results +are consonant with the theory underlying the estimation. If the results +based on an estimated model exhibit one of the following defects they +are deemed inadmissible: - non-convergence - loadings and/or +reliabilities larger than 1 - a construct VCV and/or a model-implied VCV +matrix that is not positive (semi-)definite

+
verify(results1)
+#> ________________________________________________________________________________
+#> 
+#> Verify admissibility:
+#> 
+#>   admissible
+#> 
+#> Details:
+#> 
+#>   Code   Status    Description
+#>   1      ok        Convergence achieved                                                                   
+#>   2      ok        All absolute standardized loading estimates <= 1                                       
+#>   3      ok        Construct VCV is positive semi-definite                                                
+#>   4      ok        All reliability estimates <= 1                                                         
+#>   5      ok        Model-implied indicator VCV is positive semi-definite                                  
+#>   6      ok        Unspecified parameter estimates are equal to 0, in agreement with model specification  
+#> ________________________________________________________________________________
+

The output shows that the estimation results of the example are +admissible, every status is set to “ok”.

+

Having carried out the estimation of all parameters and having +established that they are all admissible, it is now question to +interpret the results. The influence of (exogenous) constructs on +(endogenous) constructs is described by the structural model and +expressed by the estimated path coefficients (reliabilities):

+
results1$Estimates$Path_estimates
+#>            IMAG        EXPE       QUAL      VAL       SAT LOY
+#> IMAG 0.00000000  0.00000000 0.00000000 0.000000 0.0000000   0
+#> EXPE 0.60871855  0.00000000 0.00000000 0.000000 0.0000000   0
+#> QUAL 0.00000000  0.93972902 0.00000000 0.000000 0.0000000   0
+#> VAL  0.00000000 -0.21464964 1.03648282 0.000000 0.0000000   0
+#> SAT  0.08688662 -0.02524187 0.03776964 0.827523 0.0000000   0
+#> LOY  0.31199582  0.00000000 0.00000000 0.000000 0.5097822   0
+

The way estimated loadings and weights are provided is the same: The +user is always given a matrix which consists of the variables involved +in the respective submodel of GSCAM (resp. GSCA). For the +path estimates, the columns of the output matrix stand for the +constructs that exert an influence and the rows for those constructs +that are influenced.

+

For example, in the considered dataset the user gets for the path +coefficient “IMAG” on “EXPE” an estimated value of:

+
results1$Estimates$Path_estimates["EXPE","IMAG"]
+#> [1] 0.6087186
+

This value describes the influence of the construct “Consumer’s image +of the enterprise” on the construct “Consumer’s expectation”. As data +are standardized, parameter estimates are also standardized. Therefore, +they measure the change of a variable in standard deviations. This has +to be taken into account when interpreting the results. Thus, an +increase of “IMAG” by one standard deviation leads to an increase of +“EXPE” by 0.6087186 standard deviations. Furthermore, the path +coefficient in the example stands for the portion of the total variance +of the construct “EXPE” which is explained by the construct “IMAG”.

+

Next, the loadings are to be interpreted. The loading is the +correlation between a construct (resp. its proxy) and an indicator. +Obviously, this correlation always exists and can always be calculated. +To this end, it is important to point out that in the scope of the +cSEM-package three types of loadings are distinguished. The +type of a specific loading is dependent on the type of the construct +which is connected by the loading to an indicator.

+

With common factors, the loading represents the correlation between +the common factor scores and measurement-error free indicators. With +composites, there are either loadings from canonical composites or +loadings from nomological composites. The loadings of composite +constructs can be calculated either after the ALS algorithm (canonical +composites) or during (nomological composites).

+
+
+

Example 2: Pure composite model and GSCA

+

In the next example, the same model as in Example1 is considered. However, estimation is now +done with GSCA. As already mentioned, this can be achieved by setting +the argument ‘.disattenuate’ equal to FALSE. In this +case, estimators can be biased when constructs are of common factor type +and no pure composites.

+
cmp_model <- "
+# Structural model
+QUAL ~ EXPE
+EXPE ~ IMAG
+SAT  ~ IMAG + EXPE + QUAL + VAL
+LOY  ~ IMAG + SAT
+VAL  ~ EXPE + QUAL
+
+# Measurement model (pure common factor)
+
+EXPE <~ expe1 + expe2 + expe3 + expe4 + expe5
+IMAG <~ imag1 + imag2 + imag3 + imag4 + imag5
+LOY  <~ loy1  + loy2  + loy3  + loy4
+QUAL <~ qual1 + qual2 + qual3 + qual4 + qual5
+SAT  <~ sat1  + sat2  + sat3  + sat4
+VAL  <~ val1  + val2  + val3  + val4
+"
+
+results2 <- csem(
+  satisfaction,
+  cmp_model,
+  .approach_weights = "GSCA",
+  .disattenuate = FALSE,
+  .conv_criterion = "sum_diff_absolute",
+  .GSCA_modes = "CCMP",
+  .iter_max = 100
+)
+# TODO: Discuss difference between CCMP and NCMP
+

Here, we also set .GSCA_modes = "CCMP", which models +composite constructs as canonical composites. Hence, loadings are only +estimated after the ALS algorithm converges. Nomological composites may +be modelled by setting .GSCA_modes = "NCMP".

+

For the path coefficient and the loading already considered in Example1, the estimated values are now:

+
results2$Estimates$Path_estimates["EXPE","IMAG"]
+#> [1] 0.6132821
+results2$Estimates$Loading_estimates["EXPE", "expe1"]
+#> [1] 0.70876
+

The interpretation of the estimators is the same as in the case of +GSCAM (see Example1). However, by +comparing these values with those calculated before, the bias in (some) +estimators when using GSCA becomes obvious. Thus, when interpreting +these values the user should keep in mind that the estimators might be +biased.

+
+
+

Example 3: Common factors and composites using IGSCA

+

Now, the specified model will contain both common factors and +composites. The aim is to consider models with at least one construct of +composite type.

+

We use the same dataset as before, but the constructs “EXPE”, “IMAG”, +“SAT” and “VAL” are now of composite type. This means that, these +constructs are interpreted such that they do not have an influence on +their respective indicators. Thus, they are only modeled as an (exact) +linear combination (composite) of their indicators. (We are not claiming +that EXPE, IMAG, SAT and +VAL are necessarily composite constructs, but we set them +as composites for pedagogical purposes. The same can be said for the +untouched common factor constructs—they are not necessarily true common +factors.) The structural model stays the same.

+
cf_cmp_model <- "
+# Structural model
+QUAL ~ EXPE
+EXPE ~ IMAG
+SAT  ~ IMAG + EXPE + QUAL + VAL
+LOY  ~ IMAG + SAT
+VAL  ~ EXPE + QUAL
+
+# Measurement model (common factors and composites)
+
+EXPE <~ expe1 + expe2 + expe3 + expe4 + expe5
+IMAG <~ imag1 + imag2 + imag3 + imag4 + imag5
+LOY  =~ loy1  + loy2  + loy3  + loy4
+QUAL =~ qual1 + qual2 + qual3 + qual4 + qual5
+SAT  <~ sat1  + sat2  + sat3  + sat4
+VAL  <~ val1  + val2  + val3  + val4
+"
+

Calling the csem-function in this case and setting the +argument .disattenuate equal to FALSE will +produce an error.

+

For a model like the specified one, i.e. with at least one construct +of composite type, estimation will be done using IGSCA:

+
results3 <- csem(
+  satisfaction,
+  cf_cmp_model,
+  .approach_weights = "GSCA",
+  .disattenuate = TRUE,
+  .conv_criterion = "sum_diff_absolute",
+  .GSCA_modes = "CCMP"
+)
+
results3$Estimates$Path_estimates["EXPE","IMAG"]
+#> [1] 0.6112965
+results3$Estimates$Loading_estimates["EXPE", "expe1"]
+#> [1] 0.7264398
+
+
+
+

References

+
+
+Henseler, Jörg. 2012. “Why Generalized Structured Component +Analysis Is Not Universally Preferable to Structural Equation +Modeling.” Journal of the Academy of Marketing Science +40 (3): 402–13. https://doi.org/10.1007/s11747-011-0298-6. +
+
+Hwang, Heungsun, Gyeongcheol Cho, Kwanghee Jung, et al. 2021. “An +Approach to Structural Equation Modeling with Both Factors and +Components: Integrated Generalized Structured Component +Analysis.” Psychological Methods 26 (3): 273–94. https://doi.org/10.1037/met0000336. +
+
+Hwang, Heungsun, and Yoshio Takane. 2004. “Generalized Structured +Component Analysis.” Psychometrika 69 (1): 81–99. https://doi.org/10.1007/BF02295841. +
+
+Hwang, Heungsun, and Yoshio Takane. 2014. Generalized Structured +Component Analysis: A Component-Based Approach to Structural Equation +Modeling. Chapman & Hall/CRC Statistics in the Social and +Behavioral Sciences. Chapman; Hall/CRC. +
+
+Hwang, Heungsun, Yoshio Takane, and Kwanghee Jung. 2017. +“Generalized Structured Component Analysis with Uniqueness Terms +for Accommodating Measurement Error.” Frontiers in +Psychology 8 (2137): 1–12. https://doi.org/10.3389/fpsyg.2017.02137. +
+
+
+