カジュアルにコレポンを使う

コレスポンデンス分析はクロス集計の可視化に便利である。
散布図くらいカジュアルに使えるようになっておくと良いとの話を聞いたので、性年代別にコレスポンデンス分析を行いプロットする関数を書いた。
手抜きなのでデータでsexに性別、age10に10歳刻みの年代が入っている前提で書いていることに注意。
dataはデータ全体、qnameがコレポンの対象としたい列名(例えば"Q1"とか)を指す。

cav <- function(data, qname){
  require(ca)
  ds <- data.frame(data$sex, data$age10, data[, qname])
  name <- colnames(data[qname])
  colnames(ds) <- c("sex", "age10", name)
  res <- mjca(ds, lambda="Burt", ps="_")
  resn <- length(unique(ds$sex)) + length(unique(ds$age10))
  print(res$Burt[1:resn, -(1:resn)])
  plot(res, what = c("none", "all"), arrows = c(FALSE, TRUE), main=name)
  }