Dear Andreas,
I agree with John that it is straight forward to just include your own function to do what both Rcmdr and psych do for finding alpha.

psych does not have any function to do the alpha if deleted option, mainly because I think alpha is not a particularly good (although very popular) estimate of reliability and it is even worse when using the delete one item option. The recent set of papers in Psychometrika by Sitjsma, Bentler, Green and me (the latter three commenting on the target paper by Sitjsma) discussing alpha summarizes the problems.

In terms of ease of use you might look at the guttman function in psych. Given a data matrix or correlation matrix, with all items keyed in the same direction, it will find 6 different estimates of reliability (finding standardized alpha). You might also want to examine the score.items and cluster.cor functions.

The keys vector in score.items, cluster.cor, and score.alpha is meant to allow you to score multiple scales at the same time (as well as reverse key some items) and then find the item-whole correlation as well as interscale correlations.

Following your suggestion, I will eventually add the drop out one item option to score.alpha.

Bill





At 7:47 PM -0500 2/3/09, John Fox wrote:
Dear Andreas,

I don't know whether there's another comparable function, but reliability()
from the Rcmdr package is very simple; here it is printed out (as you could
have done simply by typing its name -- I added the assignment arrow):

reliability <-
function (S)
{
    reliab <- function(S, R) {
        k <- dim(S)[1]
        ones <- rep(1, k)
        v <- as.vector(ones %*% S %*% ones)
        alpha <- (k/(k - 1)) * (1 - (1/v) * sum(diag(S)))
        rbar <- mean(R[lower.tri(R)])
        std.alpha <- k * rbar/(1 + (k - 1) * rbar)
        c(alpha = alpha, std.alpha = std.alpha)
    }
    result <- list()
    if ((!is.numeric(S)) || !is.matrix(S) || (nrow(S) != ncol(S)) ||
        any(abs(S - t(S)) > max(abs(S)) * 1e-10) || nrow(S) <
        2)
        stop(gettextRcmdr("argument must be a square, symmetric, numeric
covariance matrix"))
    k <- dim(S)[1]
    s <- sqrt(diag(S))
    R <- S/(s %o% s)
    rel <- reliab(S, R)
    result$alpha <- rel[1]
    result$st.alpha <- rel[2]
    if (k < 3) {
        warning(gettextRcmdr("there are fewer than 3 items in the scale"))
        return(invisible(NULL))
    }
    rel <- matrix(0, k, 3)
    for (i in 1:k) {
        rel[i, c(1, 2)] <- reliab(S[-i, -i], R[-i, -i])
        a <- rep(0, k)
        b <- rep(1, k)
        a[i] <- 1
        b[i] <- 0
        cov <- a %*% S %*% b
        var <- b %*% S %*% b
        rel[i, 3] <- cov/(sqrt(var * S[i, i]))
    }
    rownames(rel) <- rownames(S)
    colnames(rel) <- c("Alpha", "Std.Alpha", "r(item, total)")
    result$rel.matrix <- rel
    class(result) <- "reliability"
    result
}

As an alternative to loading the package, you could just put the function
definition in a file -- editing out the calls to gettextRcmdr, which are for
translation of the error messages -- and source() the file when you want to
use it. You'll probably also want the print method (obtained by
Rcmdr:::print.reliability):

print.reliability <-
function (x, digits = 4, ...)
{
    cat(paste("Alpha reliability = ", round(x$alpha, digits),
        "\n"))
    cat(paste("Standardized alpha = ", round(x$st.alpha, digits),
        "\n"))
    cat("\nReliability deleting each item in turn:\n")
    print(round(x$rel.matrix, digits))
    invisible(x)
}

I hope this helps,
 John

------------------------------
John Fox, Professor
Department of Sociology
McMaster University
Hamilton, Ontario, Canada
web: socserv.mcmaster.ca/jfox


 -----Original Message-----
 From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org]
On
 Behalf Of achristoffersen
 Sent: February-03-09 6:47 PM
 > To: r-help@r-project.org
 Subject: [R] cronbachs alpha - score.items(psych) vs reliability(Rcmdr)


 Dear all,

 I like the way the Rcmdr package computes reliability. E.g

 reliability(cov(d[,c("q1", "q2", "q3", "q4", "q5", "q6")],
 use="complete.obs"))

 will not only give me the alpha score, but also for each variable,
 alpha.score if deleted. However - when writing scripts it's very tiresome
to
 load the whole Rcmdr GUI just for this purpose. So I'm looking for an
 another package that delivers the same feature.

 the score.items function in the psych package i find is too complicated
(it
 requires a keys vector) and it doesn't report the "alpha if deleted"
score.

 What have I missed when googling for an alternative?

 Thx in advance

 Andreas
 --
 View this message in context: http://www.nabble.com/cronbachs-alpha---
 score.items%28psych%29-vs-reliability%28Rcmdr%29-tp21821595p21821595.html
 Sent from the R help mailing list archive at Nabble.com.

 ______________________________________________
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
 and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


--
William Revelle         http://personality-project.org/revelle.html
Professor                       http://personality-project.org/personality.html
Department of Psychology             http://www.wcas.northwestern.edu/psych/
Northwestern University http://www.northwestern.edu/
Attend  ISSID/ARP:2009               http://issid.org/issid.2009/

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to