glb.algebraic {psych} | R Documentation |

The greatest lower bound solves the “educational testing problem". That is, what is the reliability of a test? (See `guttman`

for a discussion of the problem). Although there are many estimates of a test reliability (Guttman, 1945) most underestimate the true reliability of a test.

For a given covariance matrix of items, C, the function finds the greatest lower bound to reliability of the total score using the csdp function from the Rcsdp package.

glb.algebraic(Cov, LoBounds = NULL, UpBounds = NULL)

`Cov` |
A p * p covariance matrix. Positive definiteness is not checked. |

`LoBounds` |
A vector |

`UpBounds` |
A vector u =(u1, . . . , up) of length p with upper bounds to the diagonal elements xi. The default is u = v. |

If C is a p * p-covariance matrix, v = diag(C) its diagonal (i. e. the vector of variances *v_i = c_{ii}*), *C0 = C - Diag(v)* is the covariance matrix with 0s substituted in the diagonal and x = the vector *(x1, . . . , xp)* the educational testing problem is (see e. g., Al-Homidan 2008)

*(Sum i = 1 to p xi) -> min *

s.t.

*C0 + Diag(x) >= 0*

(i.e. positive semidefinite) and *xi ≤ vi, i = 1 ..., p*. This is the same as minimizing the trace of the symmetric matrix

*C0 + Diag(x)*

s. t. *C0 + Diag(x)* is positive semidefinite and *xi ≤ vi*.

The greatest lower bound to reliability is

* (sum cij (i \ne j) + sum xi )/ sum cij*

Additionally, function glb.algebraic allows the user to change the upper bounds *xi ≤ vi* to
*xi ≤ ui* and add lower bounds *li ≤ xi*.

The greatest lower bound to reliability is applicable for tests with non-homogeneous items. It gives a sharp lower bound to the reliability of the total test score.

Caution: Though glb.algebraic gives exact lower bounds for exact covariance matrices, the estimates from empirical matrices may be strongly biased upwards for small and medium sample sizes.

glb.algebraic is wrapper for a call to function csdp of package Rcsdp (see its documentation).

If Cov is the covariance matrix of subtests/items with known lower bounds, rel, to their reliabilities (e. g. Cronbachs *α*), LoBounds can be used to improve the lower bound to reliability by setting LoBounds <- rel*diag(Cov).

Changing UpBounds can be used to relax constraints *xi ≤ vi* or to fix *xi*-values by setting LoBounds[i] < -z; UpBounds[i] <- z.

`glb ` |
The algebraic greatest lower bound |

`solution` |
The vector x of the solution of the semidefinite program. These are the elements on the diagonal of C. |

`status` |
Status of the solution. See documentation of csdp in package Rcsdp. If status is 2 or greater or equal than 4, no glb and solution is returned. If status is not 0, a warning message is generated. |

`Call` |
The calling string |

Andreas Moltner

Center of Excellence for Assessment in Medicine/Baden-Wurttemberg

University of Heidelberg

William Revelle

Department of Psychology

Northwestern University Evanston, Illiniois

http://personality-project.org/revelle.html

Al-Homidan S (2008). Semidefinite programming for the educational testing problem. Central European Journal of Operations Research, 16:239-249.

Bentler PM (1972) A lower-bound method for the dimension-free measurement of internal consistency. Soc Sci Res 1:343-357.

Fletcher R (1981) A nonlinear programming problem in statistics (educational testing). SIAM J Sci Stat Comput 2:257-267.

Shapiro A, ten Berge JMF (2000). The asymptotic bias of minimum trace factor analysis, with applications to the greatest lower bound to reliability. Psychometrika, 65:413-425.

ten Berge, Socan G (2004). The greatest bound to reliability of a test and the hypothesis of unidimensionality. Psychometrika, 69:613-625.

For an alternative estimate of the greatest lower bound, see `glb.fa`

. For multiple estimates of reliablity, see `guttman`

Cv<-matrix(c(215, 64, 33, 22, 64, 97, 57, 25, 33, 57,103, 36, 22, 25, 36, 77),ncol=4) Cv # covariance matrix of a test with 4 subtests Cr<-cov2cor(Cv) # Correlation matrix of tests if(require(Rcsdp)) {glb.algebraic(Cv)} # glb of total score if(require(Rcsdp)) {glb.algebraic(Cr) } # glb of sum of standardized scores w<-c(1,2,2,1) # glb of weighted total score # glb.algebraic(diag(w) %*% Cv %*% diag(w)) alphas <- c(0.8,0,0,0) # Internal consistency of first test is known if(require(Rcsdp)) {glb.algebraic(Cv,LoBounds=alphas*diag(Cv))} # Fix all diagonal elements to 1 but the first: if(require(Rcsdp)) {lb<-glb.algebraic(Cr,LoBounds=c(0,1,1,1),UpBounds=c(1,1,1,1)) lb$solution[1] # should be the same as the squared mult. corr. smc(Cr)[1] } else {print ('I am sorry, you need to have the package Rcsdp installed to use glb.algebraic') }

[Package *psych* version 1.4.5 Index]

Part of the Personality Project Take our Personality Test