# # 強制分類法 # # #出典 # # Nishisato,S. 1984 Forced Classification: A Simple application of a quantification method. Psychometrika,49(1),25-36. # Nishisato,S. and Baba,Y. 1999 On Contingency,Projection and Forced Classification of Dual Scaling, Behaviormetrika,26(2),207-219. # #内容 # # 分割表を双対尺度法で分析する際、ある変数を基準として分類する。 # #引数 # # data 元になる分割表を渡す。 # criteria 基準とする変数の列ベクトルを指定する # FC <- function( data, criteria) { Fj <- data[,criteria] #分類に使う変数列Fjを取り出す F0 <- data[,-criteria] # F-Fj=F0行列を作る C <- t(Fj)%*%F0 #分析する行列 #青木先生の双対尺度法関数を使わせてもらう場合 source("http://aoki2.si.gunma-u.ac.jp/R/src/dual.R", encoding="euc-jp") source("http://aoki2.si.gunma-u.ac.jp/R/src/summary.dual.R", encoding="euc-jp") source("http://aoki2.si.gunma-u.ac.jp/R/src/plot.dual.R", encoding="euc-jp") result <- dual(C) return(result) } # 使用法 # # 第X列からY列目までを基準変数とした強制分類法 # FC(dat,c(x:y)) # # 使用例 # Nishisato and Baba(1999)のデータより F1 <- matrix(c( 1,0,1,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0, 0,1,0,1,0,1,0,1,0,1,1,0,1,0,0,1,0,1) ,byrow=FALSE,nrow=18) F2 <- matrix(c( 1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1, 0,0,1,0,1,0,0,1,0,0,1,1,0,0,0,0,1,0, 0,0,0,1,0,0,1,0,1,0,0,0,1,1,0,1,0,0) ,byrow=FALSE,nrow=18) F3 <- matrix(c( 1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0, 0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0, 0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1, 0,0,0,1,0,1,1,0,0,0,0,0,1,1,0,0,0,0) ,byrow=FALSE,nrow=18) F4 <- matrix(c( 1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0, 0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,0,0, 0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0, 0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1, 0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0) ,byrow=FALSE,nrow=18) F5 <- matrix(c( 1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0, 0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1, 0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0, 0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0, 0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0) ,byrow=FALSE,nrow=18) Ftotal <- cbind(F1,F2,F3,F4,F5) # F4を基準に双対尺度法で分類する FC(Ftotal,c(10:14)) # 使用例 2 # アイテムデータの場合 # 青木先生のサイトより dat <- data.frame( Cat.A=c("a", "c", "b", "a", "b", "b"), Cat.B=c("b", "b", "c", "b", "a", "c"), Cat.C=c("c", "a", "a", "c", "b", "b") ) # # 青木先生の関数でダミー変数に変更しておく # source("http://aoki2.si.gunma-u.ac.jp/R/src/make.dummy.R", encoding="euc-jp") # data <- make.dummy(dat) FC(data,c(4:6))