目的 クロンバックのα信頼性係数を計算する psy パッケージには、cronbach 関数がある 使用法 alpha(x, detail=FALSE) 引数 x データ行列(行がケース,列が変数) detail 詳細な計算結果を返すかどうか ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/alpha.R", encoding="euc-jp") # クロンバックのα信頼性係数 alpha <- function( x, # 必要な変数のみからなるデータ行列(データフレームまたは行列) detail=FALSE) # 詳細情報を計算するかどうか { alpha0 <- function(x) { k <- ncol(x) # 変数の個数 VarCovMat <- var(x) # 分散共分散行列 Sy2 <- sum(VarCovMat) # 合計点の不偏分散(var(rowSums(x)) と同じ) Sj2 <- sum(diag(VarCovMat)) # 各変数の不偏分散の和 return(k/(k-1)*(1-Sj2/Sy2)) } x <- as.matrix(x) # 行列にする x <- subset(x, complete.cases(x)) # 欠損値を持つケースを除く k <- ncol(x) # 変数の個数(列数) if (is.null(colnames(x))) { # 変数名が無いときには仮の名前を付ける colnames(x) <- paste("X", 1:k, sep="") } vnames <- colnames(x) # 変数名を記録 stopifnot(k > 1, # 列数は2列以上であること nrow(x) > 1) # 行数も2行以上であること…さもなくば,中止 alpha <- alpha0(x) alpha2 <- cor2 <- R2 <- numeric(k) if (detail == TRUE && k >= 3) { # print メソッドの注を参照 z <- rowSums(x) for (i in 1:k) { x2 <- x[, -i] alpha2[i] <- alpha0(x2) cor2[i] <- cor(x[, i], rowSums(x2)) R2[i] <- summary(lm(x[,i] ~ x2))$r.squared } result2 <- data.frame(alpha_=alpha2, r_=cor2, R_=R2) rownames(result2) <- vnames return(structure(list(alpha=c(alpha=alpha), result2=result2), class="alpha")) } else { class(alpha) <- "alpha" return(alpha=alpha) } } # print メソッド print.alpha <- function(obj, digits=5) { fmt <- sprintf("alpha = %%.%if\n", digits) if (length(obj) == 1) { cat(sprintf(fmt, obj)) } else { cat(sprintf(fmt, obj$alpha), "\n") print(obj$result2, digits=digits) cat("alpha_ : それぞれの変数を除いたときの alpha\n") cat("r_ : それぞれの変数とその変数を除いたときの合計値との相関係数\n") cat("R_ : それぞれの変数をその変数以外の変数で予測したときの決定係数\n") } } 使用例 x <- matrix(c( # 8ケース,4変数のデータ行列例(ファイルから読んでも良い) 49, 44, 37, 54, 36, 36, 36, 42, 42, 51, 45, 35, 47, 67, 54, 40, 54, 59, 68, 54, 51, 55, 59, 67, 45, 36, 48, 46, 72, 49, 50, 58 ), byrow=TRUE, ncol=4) alpha(x) alpha(x, detail=TRUE) library(psy) cronbach(x) 出力結果例 > alpha(x) alpha = 0.74034 > alpha(x, detail=TRUE) alpha = 0.74034 alpha_ r_ R_ X1 0.66574 0.55994 0.42990 X2 0.73076 0.44440 0.55186 X3 0.59278 0.68019 0.60717 X4 0.72184 0.45892 0.48216 alpha_ : それぞれの変数を除いたときの alpha r_ : それぞれの変数とその変数を除いたときの合計値との相関係数 R_ : それぞれの変数をその変数以外の変数で予測したときの決定係数 > library(psy) > cronbach(x) $sample.size [1] 8 $number.of.items [1] 4 $alpha [1] 0.7403366 解説ページ