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 non-zero elements indicating relationships. Can be either inner, reflective, or formative matrix.

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 fa.

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 two-stage 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 to inner, reflective, or formative matrix.

  • estimator.tsls: parameter estimation with two-stage least squares regression. For inner matrix only.

  • estimator.plscLoadings: parameter estimation with Dijkstra's (2011) PLSc correction for loadings. For reflective matrix only.

  • estimator.efaLoadings: parameter estimation with one indicator block at at time with exploratory factor analysis using the fa function from the psych package. For reflective matrix only.

  • estimator.cfaLoadings: Estimates a maximum likelihood confirmatory factor analysis with lavaan. For reflective matrix only.

  • estimator.plsreg: parameter estimation with PLS regression. For inner 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/consistent-pls-estimators.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 unit-weighted 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"))

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.