目的 因子分析の適切性を判断する,カイザー・メイヤー・オルキンのサンプリング適切性基準(KMO, MSA)を計算する 使用法 kmo(x) 引数 x データ行列(行がケース,列が変数) ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/kmo.R", encoding="euc-jp") kmo <- function(x) # データ行列またはデータフレーム { x <- subset(x, complete.cases(x)) # 欠損値を持つケースを除く r <- cor(x) # 相関係数行列 r2 <- r^2 # 相関係数行列の要素の二乗 i <- solve(r) # 相関係数行列の逆行列 d <- diag(i) # 対角成分 p2 <- (-i/sqrt(outer(d, d)))^2 # 偏相関係数行列の要素の二乗 diag(r2) <- diag(p2) <- 0 # 対角成分は計算には用いない KMO <- sum(r2)/(sum(r2)+sum(p2)) MSA <- colSums(r2)/(colSums(r2)+colSums(p2)) return(list(KMO=KMO, MSA=MSA)) } 使用例 x <- matrix(c( # 5ケース,4変数のデータ行列例(ファイルから読んでも良い) 1, 5, 6, 4, 2, 14, 5, 3, 3, 3, 4, 2, 4, 2, 6, 6, 3, 4, 3, 5 ), ncol=4, byrow=TRUE) kmo(x) 出力結果例 $KMO [1] 0.53964 $MSA [1] 0.54997 0.68706 0.30804 0.53201 解説ページ