rebus.pls {plspm} | R Documentation |
REBUS-PLS is an iterative algorithm for performing response based clustering in a
PLS-PM framework.
This function allows to perform all the steps of the REBUS-PLS Algorithm.
rebus.pls(pls, stop.crit = 0.005, iter.max = 100)
pls |
Object of class "plspm" returned by plspm . |
stop.crit |
Number indicating the stop criterion for the iterative algorithm. The author suggests using the threshold of less than 0.05% of units changing class from one iteration to the other as stopping rule. |
iter.max |
An integer indicating the maximum number of iterations. Default value = 100. |
REBUS-PLS is an iterative algorithm that starting from the global model allows us to detect local
models performing better than the global model. The algorithm is composed by 9 steps:
Step 1: The first step of the REBUS-PLS algorithm involves computing the global model on all the observed
units, by performing a simple PLS Path Modeling analysis (plspm
).
Steps 2 and 3: In the second step, the communality and the structural residuals of each unit from the global
model are obtained. The number of classes (K) to be taken into account during the successive
iterations and the initial composition of the classes are obtained by performing a Hierarchical
Cluster Analysis on the computed residuals (both from the measurement and the structural models).
Step 4: Choose the number of classes (K) to take into account according to the dendograme obtained
at Step 3.
Step 5: Once the number of classes to consider is choosen, the initial composition of the classes are
obtained according to results of the Hierarchical Cluster Analysis.
Step 6: A PLS Path Modeling analysis is performed on each formed class and K provisional local
models are estimated.
The group-specific parameters computed at the previous step are used to
compute the communality and the structural residuals of each unit from each local model.
Step 7: The Closeness Measure (CM) of each unit from each local model is computed.
Step 8: Each unit is, therefore, assigned to the closest local model, i.e. to the model from which
each unit shows the smallest CM value.
Step 9: Once the composition of the classes is updated, K new local models are estimated.
Step 5-9 have to be iterate until there is convergence on class composition.
The author suggests using the threshold of less than 0.05% of units changing class from one
iteration to the other as stopping rule.
In addition, a threshold of 6 units per class is fixed. If there is a class with less than 6 units, the algorithm stops.
This function allows us to perform in a unique function all the steps of the REBUS-PLS Algorithm.
In particular, firstly it computes the communality and structural residuals from the global model
and performs a Hierarchical Cluster Analysis on this residuals (by applying res.clus
function). Then it shows the obtained dendograme and ask to the user to choose the number of cluster
to be take into account.This value need to be an integer value higher than 1.
Once the number of classes to consider is choosen, this function performs the iteration steps of
the REBUS-PLS Algorithm and directly provides the final class membership for each unit,
summary results for the final local models, and the Group Quality Index (GQI) (Trinchera, 2007)
((by applying it.reb
function).
Once the convergence is achieved you should:
(i) Estimate the final local models
(ii) Validate the Group Quality Index
Both these last two steps can be performed by running local.models
.
N.B. Once compute the global model it is possible to obtain the same results as the ones obtained
by running rebus.pls
function, by running the function res.clus
and then the
function it.reb
.
If you want to test REBUS-PLS on several number of classes you need to run it.reb
function several times by changing nk. This allows you to not compute each time residuals from the
global model.
An object of class "rebus"
, basically a list with the following elements:
loadings |
Matrix of standardized loadings (i.e. correlations with LVs.) for each local model. |
path.coefs |
Matrix of path coefficients for each local model. |
quality |
Matrix containing the average communalities, the average redundancies, the R2 values, and the GoF values for each local model. |
segments |
Vector defining for each unit the class membership. |
origdata.clas |
The numeric matrix with original data and with a new column defining class membership of each unit. |
Laura Trinchera, Gaston Sanchez
Esposito Vinzi, V., Trinchera, L., Squillacciotti, S., and Tenenhaus, M. (2008) REBUS-PLS: A Response-Based Procedure for detecting Unit Segments in PLS Path Modeling. Applied Stochastic Models in Business and Industry (ASMBI), 24, pp. 439-458.
Trinchera, L. (2007) Unobserved Heterogeneity in Structural Equation Models: a new approach to latent class detection in PLS Path Modeling. Ph.D. Thesis, University of Naples "Federico II", Naples, Italy.
http://www.fedoa.unina.it/view/people/Trinchera,_Laura.html
plspm
, res.clus
, it.reb
, rebus.test
, local.models
## Not run: ## example of rebus analysis with simulated data data(sim.data) ## First compute GLOBAL model sim.mat <- matrix(c(0,0,0,0,0,0,1,1,0),3,3,byrow=TRUE) dimnames(sim.mat) <- list(c("Price","Quality","Satisfaction"), c("Price","Quality","Satisfaction")) sim.sets <- list(c(1,2,3,4,5),c(6,7,8,9,10),c(11,12,13)) sim.mod <- c("A","A","A") ## reflective indicators sim.global <- plspm(sim.data, sim.mat, sim.sets, sim.mod) sim.global ## run rebus.pls function on the sim.data and choose the number of classes ## to be taken into account according to the displayed dendrogram. rebus.sim <- rebus.pls(sim.global, stop.crit = 0.005, iter.max = 100) ## You can also compute complete outputs ## for local models by running: local.rebus <- local.models(sim.global, rebus.sim) ## ## ONCE COMPUTED THE GLOBAL MODEL IT IS POSSIBLE TO OBTAIN THE SAME RESULTS AS THE ONES ## OBTAINED BY RUNNING rebus.pls FUNCTION BY RUNNING THE FUNCTION res.clus ## AND THEN THE FUNCTION it.reb. ## ## Example: ## Once compute the global model you need to compute cluster analysis on residuals of the global model: sim.res.clus <- res.clus(sim.global) ## and then run the iteration algorithm: rebus.sim.twofunc <- it.reb(sim.global, sim.res.clus, nk=2, stop.crit=0.005, iter.max=100) ## ## rebus.sim = rebus.sim.twofunc ## End(Not run)