最近、多重対応分析(Multiple Correspondence Analysis)を勉強していた。RではFactoMineRのMCA関数がいい感じである。
ただ、ベンゼクリの修正割合を計算できるというmodif.rate関数(GDAtools)がMCA関数には使えなかったので、その原因を探ってみた。
結論から言うと、modif.rate関数はspeMCA関数(GDAtools)には対応しているが、FactoMineRのMCA関数には対応していないようである。
ということでMCA関数用に修正してみた
(※2018年4月19日追記:途中のQの算出方法を間違っていたので訂正した)。
ModifRate <- function(mca){ Q <- length(mca$call$quali) seuil <- 1 / Q e <- mca$eig[, 1][mca$eig[, 1] >= seuil] pseudo <- (Q / (Q - 1) * (e - seuil)) ^ 2 mrate <- round(pseudo / sum(pseudo), 3) cum.mrate <- cumsum(mrate) return(data.frame(mrate, cum.mrate)) }
使い方。例はFactoMineRを流用している。
library(FactoMineR) data(tea) mca <- MCA(tea, quanti.sup = 19, quali.sup = 20:36, graph = FALSE) ModifRate(mca)
ベンゼクリの修正割合については、次の本のp.39に計算式が載っている。これ一冊で多重対応分析がさくっと勉強できる良書。
なお、いくつか多重対応分析を利用している研究を調べてみたが、Benzecri’s modified ratesの邦訳については、「ベンゼクリの修正割合」だったり、「修正比率」だったり、「Benzecriの修正」だったりと、いまいち安定していないようである。