nBentler {nFactors} | R Documentation |
This function computes the Bentler and Yuan's indices for determining the number of components/factors to retain.
nBentler(x, N, log=TRUE, alpha=0.05, cor=TRUE, details=TRUE, minPar=c(min(lambda) - abs(min(lambda)) +.001, 0.001), maxPar=c(max(lambda), lm(lambda ~ I(length(lambda):1))$coef[2]), ...)
x |
numeric: a vector of eigenvalues, a matrix of
correlations or of covariances or a data.frame of data |
N |
numeric: number of subjects. |
log |
logical: if TRUE does the maximization on the log values. |
alpha |
numeric: statistical significance level. |
cor |
logical: if TRUE computes eigenvalues from a correlation
matrix, else from a covariance matrix |
details |
logical: if TRUE also return detains about the
computation for each eigenvalues. |
minPar |
numeric: minimums for the coefficient of the linear trend to maximize. |
maxPar |
numeric: maximums for the coefficient of the linear trend to maximize. |
... |
variable: additionnal parameters to give to the cor or
cov functions |
The implemented Bentler and Yuan's procedure must be used with care because the minimized function is not always stable. Bentler and Yan (1996, 1998) already note it. Constraints must be applied to obtain a solution in many cases. The actual implementation did it, but the user can modify these constraints.
The hypothesis tested (Bentler and Yuan, 1996, equation 10) is:
(1) qquad qquad H_k: λ_{k+i} = α + β x_i, (i = 1, ..., q)
The solution of the following simultaneous equations is needed to
find (α, β) in
(2) qquad qquad f(x) = sum_{i=1}^q frac{ [ λ_{k+j} - N α + β x_j ] x_j}{(α + β x_j)^2} = 0
and qquad qquad g(x) = sum_{i=1}^q frac{ λ_{k+j} - N α + β x_j x_j}{(α + β x_j)^2} = 0
The solution to this system of equations was implemented by minimizing the following equation:
(3) qquad qquad (α, β) in inf{[h(x)]} = inf{log{[f(x)^2 + g(x)^2}}]
The likelihood ratio test LRT proposed by Bentler and Yuan (1996, equation 7) follows a
chi^2 probability distribution with q-2 degrees of freedom and
is equal to:
(4) qquad qquad LRT = N(k - p)<=ft{ {ln ( {{n over N}} ) + 1} right}
- Nsumlimits_{j = k + 1}^p {ln <=ft{ {{{λ _j } over {α + β x_j }}} right}}
+ nsumlimits_{j = k + 1}^p {<=ft{ {{{λ _j } over {α + β x_j }}} right}}
With p beeing the number of eigenvalues, k the number of eigenvalues to test, q the p-k remaining eigenvalues, N the sample size, and n = N-1. Note that there is an error in the Bentler and Yuan equation, the variables N and n beeing inverted in the preceeding equation 4.
A better strategy proposed by Bentler an Yuan (1998) is to used a minimized chi^2 solution. This strategy will be implemented in a future version of the nFactors package.
nFactors |
numeric: vector of the number of factors retained by the Bentler and Yuan's procedure. |
details |
numeric: matrix of the details of the computation. |
Gilles Raiche
Centre sur les Applications des Modeles de Reponses aux Items (CAMRI)
Universite du Quebec a Montreal
raiche.gilles@uqam.ca, http://www.er.uqam.ca/nobel/r17165/
David Magis
Research Group of Quantitative Psychology and Individual Differences
Katholieke Universiteit Leuven
David.Magis@psy.kuleuven.be, http://ppw.kuleuven.be/okp/home/
Bentler, P. M. and Yuan, K.-H. (1996). Test of linear trend in eigenvalues of a covariance matrix with application to data analysis. British Journal of Mathematical and Statistical Psychology, 49, 299-312.
Bentler, P. M. and Yuan, K.-H. (1998). Test of linear trend in the smallest eigenvalues of the correlation matrix. Psychometrika, 63(2), 131-144.
## ................................................ ## SIMPLE EXAMPLE OF THE BENTLER AND YUAN PROCEDURE # Bentler (1996, p. 309) Table 2 - Example 2 ............. n=649 bentler2<-c(5.785, 3.088, 1.505, 0.582, 0.424, 0.386, 0.360, 0.337, 0.303, 0.281, 0.246, 0.238, 0.200, 0.160, 0.130) results <- nBentler(x=bentler2, N=n) results plotuScree(x=bentler2, model="components", main=paste(results$nFactors, " factors retained by the Bentler and Yuan's procedure (1996, p. 309)", sep="")) # ........................................................ # Bentler (1998, p. 140) Table 3 - Example 1 ............. n <- 145 example1 <- c(8.135, 2.096, 1.693, 1.502, 1.025, 0.943, 0.901, 0.816, 0.790, 0.707, 0.639, 0.543, 0.533, 0.509, 0.478, 0.390, 0.382, 0.340, 0.334, 0.316, 0.297, 0.268, 0.190, 0.173) results <- nBentler(x=example1, N=n) results plotuScree(x=example1, model="components", main=paste(results$nFactors, " factors retained by the Bentler and Yuan's procedure (1998, p. 140)", sep="")) # ........................................................