My understanding is that the original code for GSCA-M in cSEM scales the estimated weights, such that the variance of the construct scores is equal to $1$.
Importantly, this procedure is only relevant to GSCA models that are explicitly fitted to common factors (meaning that this applies to both GSCA-M and IGSCA).
The original code is linked here:
|
if(.disattenuate & all(csem_model$construct_type == "Common factor")) { |
|
W <- calculateWeightsGSCAm( |
|
.X = X, |
|
.csem_model = csem_model, |
|
.conv_criterion = .conv_criterion, |
|
.iter_max = .iter_max, |
|
.tolerance = .tolerance, |
|
.starting_values = .starting_values |
|
) |
|
|
|
# Weights need to be scaled s.t. the composite build using .X has |
|
# variance of one. Note that scaled GSCAm weights are identical |
|
# to PLS ModeA weights. |
|
W$W <- scaleWeights(S, W$W) |
|
|
I'm wondering why this is---or whether it is really---necessary given that both the indicators and the construct scores should be standardized and hence have a variance of $1$, anyways. Therefore, it's not clear to me why scaleWeights() should be necessary. In fact, I wonder if it might be a mistake to try to scale the weights.
In the past, the scaled weights for GSCA-M would then be used to compute the construct scores here:
|
## Calculate proxies/scores |
|
H <- X %*% t(Weights) |
But AFAICT, this is probably not compatible with GSCA-M or IGSCA's assumptions, because in GSCA-M, the construct scores $\mathbf \eta$ is equivalent to $\mathbf \eta = (\mathbf{X - UD}) \mathbf{W}$ and not $\mathbf \eta = (\mathbf{X}) \mathbf{W}$.
...So then perhaps this scaleWeights() procedure should not be applied to GSCA type models at all?
My understanding is that the original code for GSCA-M in cSEM scales the estimated weights, such that the variance of the construct scores is equal to$1$ .
Importantly, this procedure is only relevant to GSCA models that are explicitly fitted to common factors (meaning that this applies to both GSCA-M and IGSCA).
The original code is linked here:
cSEM/R/00_foreman.R
Lines 115 to 129 in c27461a
I'm wondering why this is---or whether it is really---necessary given that both the indicators and the construct scores should be standardized and hence have a variance of$1$ , anyways. Therefore, it's not clear to me why
scaleWeights()should be necessary. In fact, I wonder if it might be a mistake to try to scale the weights.In the past, the scaled weights for
GSCA-Mwould then be used to compute the construct scores here:cSEM/R/00_foreman.R
Lines 197 to 198 in c27461a
But AFAICT, this is probably not compatible with GSCA-M or IGSCA's assumptions, because in GSCA-M, the construct scores$\mathbf \eta$ is equivalent to $\mathbf \eta = (\mathbf{X - UD}) \mathbf{W}$ and not $\mathbf \eta = (\mathbf{X}) \mathbf{W}$ .
...So then perhaps this
scaleWeights()procedure should not be applied to GSCA type models at all?