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)