Learn R Programming

nFactors (version 2.3.1)

bentlerParameters: Bentler and Yuan's Computation of the LRT Index and the Linear Trend Coefficients

Description

This function computes the Bentler and Yuan's (1996, 1998) LRT index for the linear trend in eigenvalues of a covariance matrix. The related $\chi^2$ and p-value are also computed. This function is generally called from the nBentler function. But it could be of interest to use it for graphing the linear trend function to minimize and so to study it's behavior.

Usage

bentlerParameters(x, N, nFactors, log=TRUE, cor=TRUE,
                   minPar=c(min(lambda) - abs(min(lambda)) + .001,
                            0.001),
                   maxPar=c(max(lambda),
                            lm(lambda~I(length(lambda):1))$coef[2]),
                   resParx=c(0.01, 2), resPary=c(0.01, 2),
                   graphic=TRUE, resolution=30,
                   typePlot="wireframe", ...)

Arguments

x
numeric: a vector of eigenvalues, a matrix of correlations or of covariances or a data.frame of data
N
numeric: number of subjects.
nFactors
numeric: number of components to test.
log
logical: if TRUE the minimization is applied on the log values.
cor
logical: if TRUE computes eigenvalues from a correlation matrix, else from a covariance matrix
minPar
numeric: minimums for the coefficient of the linear trend to minimize.
maxPar
numeric: maximums for the coefficient of the linear trend to minimize.
resParx
numeric: restriction on the $\alpha$ coefficient (x) to graph the function to minimize.
resPary
numeric: restriction on the $\beta$ coefficient (y) to graph the function to minimize.
graphic
logical: if TRUE plot the minimized function "wireframe", "contourplot" or "levelplot".
resolution
numeric: resolution of the 3D graph (number of points from $\alpha$ and from $\beta$).
typePlot
character: plot the minimized function according to a 3D plot: "wireframe", "contourplot" or "levelplot".
...
variable: additionnal parameters from the "wireframe", "contourplot" or "levelplot" lattice functions. Also additionnal parameters for the eigenFrom

Value

  • nFactorsnumeric: vector of the number of factors retained by the Bentler and Yuan's procedure.
  • detailsnumeric: matrix of the details of the computation.

Details

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: \lambda_{k+i} = \alpha + \beta x_i, (i = 1, \ldots, q)$ The solution of the following simultaneous equations is needed to find $(\alpha, \beta) \in$ (2) $\qquad \qquad f(x) = \sum_{i=1}^q \frac{ [ \lambda_{k+j} - N \alpha + \beta x_j ] x_j}{(\alpha + \beta x_j)^2} = 0$ and $\qquad \qquad g(x) = \sum_{i=1}^q \frac{ \lambda_{k+j} - N \alpha + \beta x_j x_j}{(\alpha + \beta x_j)^2} = 0$ The solution to this system of equations was implemented by minimizing the following equation: (3) $\qquad \qquad (\alpha, \beta) \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)\left{ {\ln \left( {{n \over N}} \right) + 1} \right} - N\sum\limits_{j = k + 1}^p {\ln \left{ {{{\lambda _j } \over {\alpha + \beta x_j }}} \right}} + n\sum\limits_{j = k + 1}^p {\left{ {{{\lambda _j } \over {\alpha + \beta 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 use a minimized $\chi^2$ solution. This strategy will be implemented in a future version of the nFactors package.

References

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.

See Also

nBartlett, nBentler

Examples

Run this code
## ................................................
## 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,  details=TRUE)
results

# Two different figures to verify the convergence problem identified with
# the 2th component
bentlerParameters(x=bentler2, N=n, nFactors= 2, graphic=TRUE,
                  typePlot="contourplot",
                  resParx=c(0,9), resPary=c(0,9), cor=FALSE)
                  
bentlerParameters(x=bentler2, N=n, nFactors= 4, graphic=TRUE, drape=TRUE,
                  resParx=c(0,9), resPary=c(0,9),
                  scales = list(arrows = FALSE) )

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,  details=TRUE)
results

# Two different figures to verify the convergence problem identified with
# the 10th component
bentlerParameters(x=example1, N=n, nFactors= 10, graphic=TRUE,
                  typePlot="contourplot",
                  resParx=c(0,0.4), resPary=c(0,0.4))

bentlerParameters(x=example1, N=n, nFactors= 10, graphic=TRUE, drape=TRUE,
                  resParx=c(0,0.4), resPary=c(0,0.4),
                  scales = list(arrows = FALSE) )
                  
plotuScree(x=example1, model="components",
   main=paste(results$nFactors,
   "factors retained by the Bentler and Yuan's procedure (1998, p. 140)",
   sep=""))
# ........................................................

Run the code above in your browser using DataLab