2
$\begingroup$

I generate multiple responses using a multivariate normal distribution with means of 5 and standard deviation of 2; I want ten responses and set the correlation between responses to be 0.5.

Consequently, the means and inter-response correlation are constants, which presumably satisfies the tau-equivalence assumption of the classic response theory (Lord and Novick, 1969).

When I estimate Cronbach alpha over 250 simulated subjects, it is worth approximately 0.91.

Question: what is the relation between the correlation of 0.5 and Cronbach's alpha? Can I quantify one given the other?

Using R, this can be run using:

library(MASS)
library(psych)

size  <- 10 
mu    <- 5
sigma <- 2
rho   <- 0.50
# get a vector of size size with mu in it
Mus <- rep(mu, size)
# make a covariance matrix with sigma^2 on diagonal, and rho*sigma^2 off diagonal
on  <- diag(size) * sigma^2
off <- (array(1, c(size,size))-diag(size)) * sigma^2 * rho
Sigma <- on + off

# estimate alpha 1000 times with independent samples
liste <- seq(1,1000)

esta <- lapply(liste, function(x) {scoreItems(rep(1,size), mvrnorm(n = 250, Mus, Sigma))$alpha} )
esta <- unlist (esta)
means(esta)
# you should get approximately 0.925

Thanks.

$\endgroup$

1 Answer 1

2
$\begingroup$

If you want to calculate standardized alpha (or equivalently, if the variance of all of your variables is equal) then:

$$\alpha = \frac{K\bar{r}}{1 + (K-1)\bar{r}} $$

Where K is the number of variables and $\bar{r}$ is the mean correlation between the variables.

If you plug the numbers into the equation, you get a value of

> (10 * 0.5) / (1 + (10-1) * 0.5)
[1] 0.9090909

So you should get approximately 0.9091

There is no need to run a simulation in this case. You can set the empirical argument in the mvrnorm() function to TRUE, and mvrnorm will generate data which exactly matches the covariance matrix.

In addition, the sample size is irrelevant. (But if it's equal to, or less than, the number of items, you'll get a warning, and a slightly different result):

> esta <- psych::alpha(MASS::mvrnorm(n = 250, Mus, Sigma, 
+                                    empirical = TRUE))$total$raw_alpha 
> esta
[1] 0.9090909
> 
> esta <- psych::alpha(mvrnorm(n = 11, Mus, Sigma,
+                              empirical = TRUE))$total$raw_alpha 
> esta
[1] 0.9090909
$\endgroup$
1
  • 1
    $\begingroup$ thank you, this formula is indeed a perfect solution to my question. $\endgroup$ Commented Feb 26, 2018 at 20:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.