R Quantification Theory (数量化理論)

##################数量化1類##################

#数量化1類は回帰分析において、説明変数にカテゴリカル変数が

#含まれる場合と同じ解析方法。

 

head(PlantGrowth)

summary(PlantGrowth)

 

tapply(PlantGrowth$weight, PlantGrowth$group, mean)

tapply(PlantGrowth$weight, PlantGrowth$group, quantile)

 

#tapplyはカテゴリカル変数を用いてグループに分けて、

#別の変数に対して平均等を行う関数

#最初の引数は目的変数、次の引数はグループ分けを行う変数

 

lm(weight ~ group, data = PlantGrowth)

 

#Rはgroupをカテゴリカル変数とみなし、自動的にダミー変数

#を作成する。数値で入力されたカテゴリカル変数は、

#量的変数としてみなされるため、factor(x)を用いてカテゴリカル

#変数に変換する

 

#数量化1類では、scoreを各グループの個体に割り当ててた場合の平均が0と

#なるようにscoreを補正する

result <- lm(weight~group, data=PlantGrowth)

score <- c(0,result$coefficients[2:3])

freq <- xtabs(~ group, data=PlantGrowth)

newscore <- score -score %*% freq / sum(freq)

newscore

##################数量化2類##################

#数量化2類は線形判別分析において、説明変数にカテゴリカル変数が

#含まれる場合と同じ解析方法。

 

#集計データの場合

#直接判別分析を行うことが出来ない。

#一度集計データから個票データに変更する必要あり

 

library(vcd)

head(BrokenMarriage)

 

dataBM <- data.frame(lapply(BrokenMarriage,

                    function(i) rep(i,BrokenMarriage[,"Freq"])))

#集計データを個票データに変換

result <- lda(formula = broken ~ gender + rank, data = dataBM)

 

#割り振られた判別確率を表示

predict(result)$posterior

 

#割り振られたグループの数を表示

table(predict(result)$class)

 

##################練習問題##################

head(ToothGrowth)

result <- lm(formula=len~supp+dose,data=ToothGrowth)

result

 

head(JointSports)

JS <- data.frame(lapply(JointSports,

                        function(i) rep(i,JointSports[,"Freq"])))

#集計データを個票データに変換

summary(JS)

 

result <- lda(formula=opinion~year+grade+gender,data=JS)

result

 

head(predict(result)$posterior)

head(predict(result)$class)

table(predict(result)$class)