Estimates coefficient \(\alpha\) for a homogeneous composite score and returns a confidence interval for the population coefficient using one of several documented methods.
Arguments
- data
A numeric matrix or data frame of item scores (rows are respondents, columns are items). Either
dataorSmust be supplied. How incomplete rows are handled is governed bymissing: listwise deletion by default, or full information maximum likelihood withmissing = "fiml". Whenauxis supplied,datacontains both the item columns and the auxiliary columns, and the columns not named inauxare the items.- S
A symmetric covariance matrix among the items. If
Sis supplied,Nmust also be supplied; raw-data-only confidence interval methods ("adf","bootstrap_*","percentile","bca") are then unavailable, as aremissing = "fiml"andaux, since a covariance matrix has no incomplete cases.- N
Total sample size; required when
S(rather thandata) is supplied.- estimator
How \(\alpha\) is estimated:
"analytic"(the default) applies the closed-form equation to the observed covariance matrix, and"model_implied"takes the reliability implied by the \(\tau\)-equivalent single-factor model fit by maximum likelihood. See Details.- missing
How incomplete rows of
dataare handled:"listwise"(the default; complete-case analysis, the historical behavior) or"fiml"(full information maximum likelihood, using every case with at least one observed item). See Details.- aux
Optional character vector naming auxiliary variable columns of
data, entered as saturated correlates under full information maximum likelihood. Supplyingauximpliesmissing = "fiml". See Details.- ci_method
Method for constructing the confidence interval. See Details for which methods each estimator supports. The default
NULLresolves to"bonett"for the analytic estimator and to"mlr"for the model implied estimator (or"ml"when only a covariance matrix is supplied, since"mlr"needs raw data). Withmissing = "fiml"the analytic default is"ml", whose standard error comes from the FIML information matrix.- conf_level
Confidence level for the interval (1 - Type I error rate). Defaults to
0.95.- B
Number of bootstrap replications when a bootstrap method is selected. Defaults to
10000.- seed
Random number seed used for bootstrap reproducibility. Defaults to
NULL, which leaves the user's current RNG state intact; supply an integer for reproducibility. When set, the function saves and restores.Random.seedso the user's global RNG state is not polluted.
Value
A data.frame with columns term and value
and rows
"estimate" (sample coefficient \(\alpha\)),
"se" (standard error on the coefficient scale, NA for
methods that do not produce one; for the transformation-based
intervals "fisher", "bonett", and
"hakstian_whalen" it is the delta method back-transform of the
transformation-scale standard error, evaluated at the estimate),
"se_transformed" (only for those transformation-based
intervals: the standard error on the transformation scale, the
quantity the interval is built from, with the scale named in the
attribute se_transform_scale: "fisher_z",
"log(1-alpha)", or "cube_root"),
"lower_limit" and "upper_limit" (clamped to [0, 1]),
"conf_level", "N" (the cases the analysis used: the
complete cases under listwise deletion, every case with at least one
observed item under missing = "fiml"), "N_complete"
(the complete cases, so the cost of listwise deletion is visible at
a glance; equal to "N" under listwise deletion and for
covariance input), and "J" (number of items). The selected
coefficient, CI method, and missing-data treatment travel as the
attributes coefficient, ci_method, missing, and
(when supplied) aux; bootstrap calls also record B.
Details
Coefficient \(\alpha\) was first derived by Guttman (1945) as his \(\lambda_3\) and was subsequently popularized by Cronbach (1951), under whose name the coefficient is often informally cited. The attribution to Cronbach is historically incomplete; the modern literature increasingly refers to the coefficient simply as “coefficient alpha” (see, e.g., Sijtsma, 2009; Revelle & Zinbarg, 2009). DMAR follows that convention.
For a \(J\)-item composite \(Y = \sum_j X_j\) the population
coefficient is
$$\alpha = \frac{J}{J-1}\left(1 - \frac{\sum_{j} \sigma_{j}^{2}}{\sigma_{Y}^{2}}\right),$$
where \(\sigma_{j}^{2}\) is the variance of item j and
\(\sigma_{Y}^{2}\) is the variance of the composite. The sample
estimate substitutes sample variances. Under classical test theory,
\(\alpha\) equals the population reliability of the composite when
the items are essentially \(\tau\)-equivalent (i.e., equal factor
loadings); when loadings differ, \(\alpha\) is a lower bound on the
population reliability. For well-behaved homogeneous measurement
instruments coefficient \(\alpha\) and McDonald's (1999) coefficient
\(\omega\) (reliability_omega) typically yield very
similar values; \(\omega\) extends to congeneric items
(heterogeneous loadings) without the lower-bound caveat. For
ordered-categorical items see reliability_omega_categorical.
Two estimators of the same coefficient. The argument
estimator selects how \(\alpha\) is estimated from the data.
Both target the same population quantity, and they agree in the
population whenever the \(\tau\)-equivalent model holds; they differ
in a finite sample because they take different routes to it.
"analytic"The default. The closed-form equation above, applied to the observed covariance matrix. This is the classical coefficient, the number a hand calculation produces, and it makes no assumption beyond those of classical test theory.
"model_implied"The reliability implied by the \(\tau\)-equivalent (equal loadings) single-factor model fit by maximum likelihood. With a shared loading \(\lambda\) and error variances \(\psi_j^{2}\) the model implied reliability of the \(J\)-item composite is $$\alpha = \frac{(J \lambda)^{2}}{(J \lambda)^{2} + \sum_{j} \psi_{j}^{2}},$$ with maximum likelihood estimates substituted. Estimating through the model brings inference the formula cannot provide: a delta method standard error, a robust (Satorra-Bentler) variant under nonnormality, the profile likelihood interval, and a fit assessment of the \(\tau\)-equivalence claim itself. When the equal-loadings claim is doubtful, the congeneric
reliability_omegais the appropriate coefficient rather than either \(\alpha\).
Users of MBESS will recognize these as
ci.reliability(type = "alpha") and
ci.reliability(type = "alpha-cfa") respectively.
Missing data and auxiliary variables. By default incomplete
rows are listwise-deleted, which is unbiased only when the data are
missing completely at random and is inefficient always; the
mlmr vignette develops the argument at length. Setting
missing = "fiml" keeps every case with at least one observed
item and estimates by full information maximum likelihood, which is
consistent and efficient under the weaker missing at random (MAR)
assumption. The aux argument names auxiliary variables:
columns of data that are not part of the composite but are
correlated with the items or with the reasons values are missing.
They are entered as saturated correlates (Graham, 2003):
correlated freely with each other and with every item's residual,
never loading on the factor and never entering the composite, so the
measurement model is undisturbed while FIML uses their information.
Beyond recovering information, a good auxiliary makes the MAR
assumption itself more plausible, since missingness that depends on
the auxiliary becomes MAR once the auxiliary is conditioned on
(Collins, Schafer, & Kam, 2001). Supplying aux implies
missing = "fiml"; combining it with an explicit
missing = "listwise" is an error. Listwise deletion remains
the default so no existing result changes and the missing-data
treatment is always a visible, deliberate choice. How each estimator
uses FIML: the model implied estimator simply fits its model with
missing = "ml"; the analytic estimator applies the classical
formula, unchanged, to the FIML estimate of the item covariance
matrix (from a saturated model over the items and any auxiliaries),
so the estimand stays the classical coefficient and only the
covariance matrix it is computed from improves. Under
missing = "fiml" the available intervals are "ml" and
"ml_logistic" (both estimators; the standard error comes from
the FIML information matrix), "mlr" and "mlr_logistic"
(model implied estimator; the Yuan-Bentler robust standard error),
and the bootstrap methods, which resample rows (including the
partially observed ones) and refit by FIML on each replication. The
complete-data closed forms ("feldt", "fisher",
"bonett", "hakstian_whalen"), "adf", and
"likelihood" are errors with missing = "fiml" rather
than silently reverting to listwise deletion. Multiple imputation is
a different feature with a different interface and is out of scope
here.
Available confidence interval methods (set via ci_method). Some
belong to one estimator only, because a closed-form interval for the
sample coefficient and a model-based interval are not interchangeable;
requesting a method the chosen estimator cannot supply is an error that
names the estimator to use instead:
"feldt"Analytic estimator only. The F-distribution interval of Feldt (1965), exact under multivariate normality and parallel items.
"fisher"Analytic estimator only. Fisher's \(z'\) transformation (Fisher, 1950). Tends to overcover (Padilla, Divers, & Newton, 2012) and is generally not recommended.
"bonett"Analytic estimator only. Bonett's (2002) log transformation. The default for that estimator; well-behaved under normality.
"hakstian_whalen"Analytic estimator only. Cube-root transformation of Hakstian and Whalen (1976).
"mlr","mlr_logistic"Model implied estimator only. Wald interval using the robust (Satorra & Bentler, 1994) standard error from the fitted model. The default for that estimator; recommended among the closed forms when item distributions deviate from normality (Kelley & Pornprasertmanit, 2016). Requires raw data.
"likelihood"Model implied estimator only. Profile likelihood interval: the set of population values not rejected by the likelihood ratio test under the \(\tau\)-equivalent model, located by refitting under the nonlinear constraint that the model implied reliability equals each candidate value. Respects [0, 1], is not forced to be symmetric, and works from raw data or covariance input. Requires lavaan. It is unavailable with the analytic estimator because the interval and the point estimate would then refer to different quantities: the interval profiles the model implied coefficient while the estimate is the sample coefficient, so under a misspecified model the interval can exclude the estimate it accompanies.
"ml","ml_logistic"Available to both estimators, by the route each affords. With
"analytic"it is the closed-form ML standard error of van Zyl, Neudecker, and Nel (2000), computed directly from the covariance matrix; with"model_implied"it is the delta method standard error from the fitted model. The_logisticvariant applies Browne's (1982) logit transformation."adf","adf_logistic"Available to both estimators. With
"analytic"it is the asymptotic distribution-free standard error of Maydeu-Olivares, Coffman, and Hartmann (2007); with"model_implied"the model is fit by weighted least squares (Browne, 1984) and the delta method applied. Requires raw data and a relatively large sample size."bootstrap_se","bootstrap_se_logistic","percentile","bca"Available to both estimators. Nonparametric bootstrap intervals (Efron & Tibshirani, 1993): the rows of
dataare resampled with replacementBtimes and the chosen estimator is recomputed on each replication."percentile"takes the interval limits from the empirical quantiles of the bootstrap estimates (for a 95 percent interval, the 2.5th and 97.5th percentiles); it respects [0, 1] and is not forced to be symmetric about the estimate, but its coverage degrades when the estimator is biased or its variance changes with the parameter."bca"(bias-corrected and accelerated) adjusts the two quantile positions for exactly those features, estimating the median bias from the bootstrap distribution and the acceleration from the jackknife, and is second-order accurate where the percentile interval is first-order accurate (DiCiccio & Efron, 1996)."bootstrap_se"uses the standard deviation of the bootstrap estimates as a standard error in an ordinary normal-theory interval; the_logisticvariant builds that interval on the logit scale so the endpoints respect [0, 1]. Replications on which the estimator cannot be computed (for example, a model refit that does not converge) are dropped, and the interval is computed from the replications that return a value. Requires raw data and the boot package. The defaultB = 10000is an accuracy choice: the BCa adjustment pushes the working quantiles farther into the tails of the bootstrap distribution than the percentile interval uses, and stabilizing them takes more replications than the customary 2000; reduceBfor exploration, not for a reported analysis. Bootstrap results vary from run to run; supplyseedfor reproducibility."none"Return only the point estimate.
Comparison with other packages. The psych package
provides alpha, which reports coefficient
\(\alpha\) along with item-level diagnostics (item-total
correlations, alpha-if-item-deleted, and several alternative
coefficients). The emphasis in psych is broad exploratory
psychometric reporting. reliability_alpha in DMAR
differs in emphasis: it returns a single point estimate alongside a
principled confidence interval drawn from the methods compared in
Kelley and Pornprasertmanit (2016).
References
Bonett, D. G. (2002). Sample size requirements for testing and estimating coefficient alpha. Journal of Educational and Behavioral Statistics, 27(4), 335–340. doi:10.3102/10769986027004335
Browne, M. W. (1982). Covariance structures. In D. M. Hawkins (Ed.), Topics in applied multivariate analysis (pp. 72–141). Cambridge, UK: Cambridge University Press.
Browne, M. W. (1984). Asymptotically distribution-free methods for the analysis of covariance structures. British Journal of Mathematical and Statistical Psychology, 37, 62–83.
Collins, L. M., Schafer, J. L., & Kam, C.-M. (2001). A comparison of inclusive and restrictive strategies in modern missing data procedures. Psychological Methods, 6, 330–351. doi:10.1037/1082-989X.6.4.330
Cronbach, L. J. (1951). Coefficient alpha and the internal structure of tests. Psychometrika, 16(3), 297–334.
DiCiccio, T. J., & Efron, B. (1996). Bootstrap confidence intervals. Statistical Science, 11(3), 189–228.
Efron, B., & Tibshirani, R. J. (1993). An introduction to the bootstrap. New York, NY: Chapman & Hall/CRC.
Feldt, L. S. (1965). The approximate sampling distribution of Kuder-Richardson reliability coefficient twenty. Psychometrika, 30, 357–370.
Fisher, R. A. (1950). Statistical methods for research workers. Edinburgh, UK: Oliver & Boyd.
Graham, J. W. (2003). Adding missing-data-relevant variables to FIML-based structural equation models. Structural Equation Modeling, 10(1), 80–100. doi:10.1207/S15328007SEM1001_4
Guttman, L. (1945). A basis for analyzing test-retest reliability. Psychometrika, 10(4), 255–282.
Hakstian, A. R., & Whalen, T. E. (1976). A k-sample significance test for independent alpha coefficients. Psychometrika, 41, 219–231.
Kelley, K. (2007a). Confidence intervals for standardized effect sizes: Theory, application, and implementation. Journal of Statistical Software, 20(8), 1–24. doi:10.18637/jss.v020.i08
Kelley, K. (2007b). Methods for the behavioral, educational, and social sciences: An R package. Behavior Research Methods, 39(4), 979–984. doi:10.3758/BF03192993
Kelley, K., & Cheng, Y. (2012). Estimation of and confidence interval formation for reliability coefficients of homogeneous measurement instruments. Methodology, 8, 39–50. doi:10.1027/1614-2241/a000036
Kelley, K., & Pornprasertmanit, S. (2016). Confidence intervals for population reliability coefficients: Evaluation of methods, recommendations, and software for composite measures. Psychological Methods, 21, 69–92. doi:10.1037/a0040086
Satorra, A., & Bentler, P. M. (1994). Corrections to test statistics and standard errors in covariance structure analysis. In A. von Eye & C. C. Clogg (Eds.), Latent variables analysis: Applications for developmental research (pp. 399–419). Thousand Oaks, CA: Sage.
Yuan, K.-H., & Bentler, P. M. (2000). Three likelihood-based methods for mean and covariance structure analysis with nonnormal missing data. Sociological Methodology, 30, 165–200.
Maxwell, S. E., Delaney, H. D., & Kelley, K. (2027). Designing experiments and analyzing data: A model comparison perspective (4th ed.). Routledge.
Maydeu-Olivares, A., Coffman, D. L., & Hartmann, W. M. (2007). Asymptotically distribution-free (ADF) interval estimation of coefficient alpha. Psychological Methods, 12, 157–176. doi:10.1037/1082-989X.12.2.157
McDonald, R. P. (1999). Test theory: A unified treatment. Mahwah, NJ: Lawrence Erlbaum Associates.
Padilla, M. A., Divers, J., & Newton, M. (2012). Coefficient alpha bootstrap confidence interval under nonnormality. Applied Psychological Measurement, 36, 331–348. doi:10.1177/0146621612445470
Revelle, W., & Zinbarg, R. E. (2009). Coefficients alpha, beta, omega, and the GLB: Comments on Sijtsma. Psychometrika, 74, 145–154. doi:10.1007/s11336-008-9102-z
Sijtsma, K. (2009). On the use, the misuse, and the very limited usefulness of Cronbach's alpha. Psychometrika, 74, 107–120. doi:10.1007/s11336-008-9101-0
Terry, L. J., & Kelley, K. (2012). Sample size planning for composite reliability coefficients: Accuracy in parameter estimation via narrow confidence intervals. British Journal of Mathematical and Statistical Psychology, 65, 371–401. doi:10.1111/j.2044-8317.2011.02030.x
van Zyl, J. M., Neudecker, H., & Nel, D. G. (2000). On the distribution of the maximum likelihood estimator of Cronbach's alpha. Psychometrika, 65(3), 271–280. doi:10.1007/BF02296146
See also
reliability (general wrapper that dispatches by
coefficient),
reliability_omega,
reliability_omega_categorical,
reliability_kr20,
cfa_1 (single-factor CFA used internally),
ss_aipe_reliability,
alpha.
Other reliability:
cohen_kappa(),
diagnosis_agreement,
fleiss_kappa(),
icc(),
reliability(),
reliability_H(),
reliability_kr20(),
reliability_omega(),
reliability_omega_categorical()
Author
Ken Kelley kkelley@nd.edu
Examples
set.seed(113)
# Simulate six tau-equivalent items with population reliability ~ .8.
J <- 6
loadings <- rep(0.6, J)
eta <- rnorm(200)
errors <- matrix(rnorm(200 * J, sd = sqrt(1 - 0.6^2)), 200, J)
items <- outer(eta, loadings) + errors
colnames(items) <- paste0("y", seq_len(J))
# Default (Bonett's transformation) CI from raw data.
reliability_alpha(data = items)
#> term value
#> estimate 0.777
#> se 0.0246
#> se_transformed 0.11
#> lower_limit 0.723
#> upper_limit 0.82
#> conf_level 0.95
#> N 200
#> N_complete 200
#> J 6
# Same point estimate from a covariance matrix; CI requires N.
S <- cov(items)
reliability_alpha(S = S, N = 200, ci_method = "feldt")
#> term value
#> estimate 0.777
#> se <NA>
#> lower_limit 0.725
#> upper_limit 0.821
#> conf_level 0.95
#> N 200
#> N_complete 200
#> J 6
# The bootstrap intervals resample the rows and recompute the
# coefficient B times, so they are shown rather than run. The
# percentile interval reads its limits off the empirical quantiles of
# the bootstrap estimates:
# reliability_alpha(data = items, ci_method = "percentile",
# B = 10000, seed = 113)
# The bias-corrected and accelerated interval adjusts those two
# quantile positions for median bias and for acceleration, and is the
# better choice for a reported interval:
# reliability_alpha(data = items, ci_method = "bca", B = 10000,
# seed = 113)
# The default B = 10000 is an accuracy choice, not a formality, since
# BCa works farther into the tails of the bootstrap distribution than
# the percentile interval does (see Details).
# Full information maximum likelihood with an auxiliary variable,
# shown rather than run because it fits a model over the items and
# the auxiliary. Missingness on y2 depends on an auxiliary z (missing
# at random given z), so listwise deletion is biased and FIML with z
# is not. Supplying aux implies missing = "fiml":
# z <- eta + rnorm(200, sd = 0.5)
# d <- data.frame(items, z = z)
# d$y2[runif(200) < plogis(-1 + 1.5 * as.numeric(scale(z)))] <- NA
# reliability_alpha(data = d, aux = "z")