Cronbach's alpha is a measure of internal consistency and often used for validating psychometric tests. It determines the internal consistency or average correlation of items in a survey instrument to gauge its reliability. This reduces to Kuder-Richardson formula 20 (KR-20) when the columns of the data matrix are dichotomous.

CronbachAlpha(x, conf.level = NA, cond = FALSE, na.rm = FALSE)

Arguments

x

\(n \times m\) matrix or dataframe with item responses, k subjects (in rows) m items (in columns).

conf.level

confidence level of the interval. If set to NA (which is the default) no confidence interval will be calculated.

cond

logical. If set to TRUE, alpha is additionally calculated for the dataset with each item left out.

na.rm

logical, indicating whether NA values should be stripped before the computation proceeds. If set to TRUE only the complete cases of the ratings will be used. Defaults to FALSE.

Value

Either a numeric value or

a named vector of 3 columns if confidence levels are required (estimate, lower and upper ci) or

a list containing the following components, if the argument cond is set to TRUE:

unconditional

Cronbach's Alpha, either the single value only or with confidence intervals

condCronbachAlpha

The alpha that would be realized if the item were excluded

See also

References

Cohen, J. (1960), A coefficient of agreement for nominal scales. Educational and Psychological Measurement, 20, 37-46.

Author

Andri Signorell <andri@signorell.net>, based on code of Harold C. Doran

Examples

set.seed(1234)
tmp <- data.frame(
  item1=sample(c(0,1), 20, replace=TRUE),
  item2=sample(c(0,1), 20, replace=TRUE),
  item3=sample(c(0,1), 20, replace=TRUE),
  item4=sample(c(0,1), 20, replace=TRUE),
  item5=sample(c(0,1), 20, replace=TRUE)
  )

CronbachAlpha(tmp[,1:4], cond=FALSE, conf.level=0.95)
#> Cronbach Alpha         lwr.ci         upr.ci 
#>      0.4029851      0.1565282      0.5912006 
CronbachAlpha(tmp[,1:4], cond=TRUE, conf.level=0.95)
#> $unconditional
#> Cronbach Alpha         lwr.ci         upr.ci 
#>      0.4029851      0.1565282      0.5912006 
#> 
#> $condCronbachAlpha
#>   Item Cronbach Alpha       lwr.ci    upr.ci
#> 1    1      0.1574074 -0.293641918 0.4692256
#> 2    2      0.5241379  0.269403595 0.7002402
#> 3    3      0.2537764 -0.145685462 0.5299313
#> 4    4      0.3455056 -0.004852612 0.5877143
#> 

CronbachAlpha(tmp[,1:4], cond=FALSE)
#> [1] 0.4029851
CronbachAlpha(tmp[,1:2], cond=TRUE, conf.level=0.95)
#> $unconditional
#> Cronbach Alpha         lwr.ci         upr.ci 
#>    -0.04678363    -0.97917368     0.44635684 
#> 
#> $condCronbachAlpha
#> list()
#> 

if (FALSE) {
# Calculate bootstrap confidence intervals for CronbachAlpha
library(boot)
cronbach.boot <- function(data,x) {CronbachAlpha(data[x,])[[3]]}
res <- boot(datafile, cronbach.boot, 1000)
quantile(res$t, c(0.025,0.975))   # two-sided bootstrapped confidence interval of Cronbach's alpha
boot.ci(res, type="bca")          # adjusted bootstrap percentile (BCa) confidence interval (better)
}