目的 因子負荷量をソートして表示する。 print.loadings の sort=TRUE は,期待される結果を返さないので。 使用法 sort.loadings(x) 引数 x factanal 関数が返すオブジェクト ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/sort.loadings.R", encoding="euc-jp") # 因子負荷量の大きさの順に変数を並べ替える sort.loadings <- function(x) # factanalが返すオブジェクト { a <- x$loadings y <- abs(a) # 因子負荷量の絶対値 z <- apply(y, 1, which.max) # 各変数をどの因子に含めるべきか loadings <- NULL # 結果 for (i in 1:ncol(y)) { b <- a[z == i,, drop=FALSE] if (nrow(b)) { t <- order(b[, i, drop=FALSE], decreasing=TRUE) # 因子単位で並べ替え情報を得る loadings <- rbind(loadings, b[t,, drop=FALSE]) } } class(loadings) <- "loadings" # クラスの設定 return(loadings) # 結果を返す } 使用例 set.seed(123) library(MASS) x <- mvrnorm(n=Harman74.cor$n.obs, mu=Harman74.cor$center, Sigma=Harman74.cor$cov) ans <- factanal(x, factors=5, rotation="promax") sort.loadings(ans) 結果の出力例 > set.seed(123) > library(MASS) > x <- mvrnorm(n=Harman74.cor$n.obs, mu=Harman74.cor$center, Sigma=Harman74.cor$cov) > ans <- factanal(x, factors=5, rotation="promax") > sort.loadings(ans) Loadings: Factor1 Factor2 Factor3 Factor4 Factor5 Deduction 0.682 0.308 -0.253 -0.113 ProblemReasoning 0.657 -0.143 0.122 0.201 -0.124 VisualPerception 0.644 -0.147 0.219 NumberFigure 0.614 -0.255 0.291 -0.112 NumericalPuzzles 0.589 -0.115 0.296 PaperFormBoard 0.579 -0.453 0.124 0.263 Flags 0.564 0.147 -0.329 SeriesCompletion 0.530 0.200 Cubes 0.516 FigureRecognition 0.294 -0.109 0.262 SentenceCompletion 0.982 -0.154 PargraphComprehension 0.837 WordMeaning 0.110 0.665 0.137 -0.126 GeneralInformation 0.138 0.570 WordClassification 0.139 0.561 0.171 Addition 0.867 CountingDots 0.727 0.282 ArithmeticProblems 0.307 0.112 0.423 -0.138 Code -0.156 0.242 0.715 0.225 FigureWord 0.167 -0.154 -0.193 0.709 ObjectNumber 0.176 0.550 -0.106 WordRecognition -0.129 0.176 0.323 NumberRecognition 0.246 StraightCurvedCapitals 0.125 0.235 0.804 Factor1 Factor2 Factor3 Factor4 Factor5 SS loadings 3.573 3.144 1.993 1.958 1.032 Proportion Var 0.149 0.131 0.083 0.082 0.043 Cumulative Var 0.149 0.280 0.363 0.444 0.487 print 関数で sort=TRUE を指定したときの出力は,以下のようにしかならない > print(ans$loadings, sort=TRUE) Loadings: Factor1 Factor2 Factor3 Factor4 Factor5 VisualPerception 0.644 -0.147 0.219 Cubes 0.516 PaperFormBoard 0.579 -0.453 0.124 0.263 Flags 0.564 0.147 -0.329 NumberFigure 0.614 -0.255 0.291 -0.112 Deduction 0.682 0.308 -0.253 -0.113 NumericalPuzzles 0.589 -0.115 0.296 ProblemReasoning 0.657 -0.143 0.122 0.201 -0.124 SeriesCompletion 0.530 0.200 GeneralInformation 0.138 0.570 PargraphComprehension 0.837 SentenceCompletion 0.982 -0.154 WordClassification 0.139 0.561 0.171 WordMeaning 0.110 0.665 0.137 -0.126 Addition 0.867 CountingDots 0.727 0.282 Code -0.156 0.242 0.715 0.225 ObjectNumber 0.176 0.550 -0.106 FigureWord 0.167 -0.154 -0.193 0.709 StraightCurvedCapitals 0.125 0.235 0.804 WordRecognition -0.129 0.176 0.323 NumberRecognition 0.246 FigureRecognition 0.294 -0.109 0.262 ArithmeticProblems 0.307 0.112 0.423 -0.138 Factor1 Factor2 Factor3 Factor4 Factor5 SS loadings 3.573 3.144 1.993 1.958 1.032 Proportion Var 0.149 0.131 0.083 0.082 0.043 Cumulative Var 0.149 0.280 0.363 0.444 0.487