Parameter estimation of a model matrix
Description
Estimates the parameters of a model matrix (inner
,
reflective
, or formative
).
Usage
1 2 3 4 5 6 7 8 9 10 11  estimator.ols(S, modelMatrix, W, ..., C = NULL, IC = NULL)
estimator.tsls(S, modelMatrix, W, ..., C)
estimator.plscLoadings(S, modelMatrix, W, ...)
estimator.efaLoadings(S, modelMatrix, W, ..., fm = "minres")
estimator.cfaLoadings(S, modelMatrix, W, ...)
estimator.plsreg(S, modelMatrix, W, ..., C)

Arguments
S 
Covariance matrix of the data. 
modelMatrix 
A model matrix with dependent variables on rows, independent variables on colums, and
nonzero elements indicating relationships. Can be either 
W 
Weight matrix, where the indicators are on colums and composites are on the rows. 
... 
All other arguments are either ignored or passed through to third party estimation functions. 
C 
Correlation matrix of the composites. 
IC 
Correlation matrix of the composites and indicators. 
fm 
factoring method for estimating the factor loadings. Passed through to 
Details
Parameter estimation functions estimate the parameters of a model matrix (inner
,
reflective
, or formative
). These functions can be used as parametersInner
,
parametersReflective
, and parametersFormative
arguments for
parameterEstim.separate
.
When twostage least squares regression is applied with estimator.tsls
, all
exogenous variables are used as instrumental varuables. There is currently no check of whether sufficient
number of instrumental variables are available.
estimator.plscLoadings
estimates the loadings by scaling the weights W
with the
correction factor c
presented by Dijkstra (2011). This produces a MINRES estimator,
which constraints the loadings to be proportional to the weights.
The PLSc code is loosely based on code contributed by Wenjing Huang and developed with the guidance
by Theo Dijkstra.
estimator.plscLoadings
estimates loadings with an unconstrained single factor model,
which requires at least three indicators per block. The loadings of
single indicator factors are estimated as 1 and two indicator factors as estimated by the
square root of the indicator correlation.
Providing C
or IC
allows for using disattenuated or otherwise
adjusted correlation matrices. If not provided, these matrices are calculated using S
and
W
.
A part of the code for estimator.plsreg
is adopted from the plspm package, licenced
under GPL3.
Value
A matrix with estimated parameters.
Functions

estimator.ols
: parameter estimation with OLS regression. Can be applied toinner
,reflective
, orformative
matrix. 
estimator.tsls
: parameter estimation with twostage least squares regression. Forinner
matrix only. 
estimator.plscLoadings
: parameter estimation with Dijkstra's (2011) PLSc correction for loadings. Forreflective
matrix only. 
estimator.efaLoadings
: parameter estimation with one indicator block at at time with exploratory factor analysis using thefa
function from thepsych
package. Forreflective
matrix only. 
estimator.cfaLoadings
: Estimates a maximum likelihood confirmatory factor analysis withlavaan
. Forreflective
matrix only. 
estimator.plsreg
: parameter estimation with PLS regression. Forinner
matrix only.
Author(s)
Mikko Rönkkö, Wenjing Huang, Theo Dijkstra
Mikko Rönkkö, Gaston Sanchez, Laura Trinchera, Giorgio Russolillo
References
Huang, W. (2013). PLSe: Efficient Estimators and Tests for Partial Least Squares (Doctoral dissertation). University of California, Los Angeles.
Dijkstra, T. K. (2011). Consistent Partial Least Squares estimators for linear and polynomial factor models. A report of a belated, serious and not even unsuccessful attempt. Comments are invited. Retrieved from http://www.rug.nl/staff/t.k.dijkstra/consistentplsestimators.pdf
Sanchez, G. (2013). PLS Path Modeling with R. Retrieved from http://www.gastonsanchez.com/PLS Path Modeling with R.pdf
Examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83  # Run the education example from the book
# Sanchez, G. (2013) PLS Path Modeling with R
# Trowchez Editions. Berkeley, 2013.
# http://www.gastonsanchez.com/PLS Path Modeling with R.pdf
education < read.csv("http://www.gastonsanchez.com/education.csv")
Support < c(0, 0, 0, 0, 0, 0)
Advising < c(0, 0, 0, 0, 0, 0)
Tutoring < c(0, 0, 0, 0, 0, 0)
Value < c(1, 1, 1, 0, 0, 0)
# Omit two paths (compared to teh model in the book) to achieve
# identification of the 2SLS analysis
Satisfaction < c(0, 0, 1, 1, 0, 0)
Loyalty < c(0, 0, 0, 0, 1, 0)
inner < rbind(Support, Advising, Tutoring, Value, Satisfaction, Loyalty)
reflective < diag(6)[c(rep(1,4),
rep(2,4),
rep(3,4),
rep(4,4),
rep(5,3),
rep(6,4)),]
formative < matrix(0, 6, 23)
colnames(inner) < colnames(reflective) < rownames(formative) < rownames(inner)
rownames(reflective) < colnames(formative) < colnames(education)[2:24]
education.model < list(inner = inner,
reflective = reflective,
formative = formative)
# Reverse code two variables
education[,c("sup.under","loy.asha")] <  education[,c("sup.under","loy.asha")]
S < cor(education[,2:24])
# PLSc with OLS regression
education.out < matrixpls(S,education.model,
disattenuate = TRUE,
parametersReflective = estimator.plscLoadings)
# PLSc with 2SLS regresssion
education.out2 < matrixpls(S,education.model,
disattenuate = TRUE,
parametersReflective = estimator.plscLoadings,
parametersInner = estimator.tsls)
# Disattenuated regression with unitweighted scales and exploratory factor analysis
# reliability estimates (with unconstrained MINRES estimator)
education.out3 < matrixpls(S,education.model,
disattenuate = TRUE,
weightFun = weightFun.fixed,
parametersReflective = estimator.efaLoadings)
# Disattenuated GSCA with 2SLS regression after disattenuated based on
# confirmatory factor analysis reliability estimates
education.out4 < matrixpls(S,education.model,
disattenuate = TRUE,
innerEstim = innerEstim.gsca,
outerEstim = outerEstim.gsca,
parametersInner = estimator.tsls,
parametersReflective = estimator.cfaLoadings)
# Compare the results
cbind(PLSc = education.out, PLSc_2sls = education.out2,
DR = education.out3, GSCAc = education.out4)
# Compare the reliability estimates
cbind(PLSc = attr(education.out,"Q"), PLSc_2sls = attr(education.out2,"Q"),
DR = attr(education.out3,"Q"), GSCAc = attr(education.out4,"Q"))
