R Decision Tree (決定木)
#目的変数がカテゴリカル変数の場合は、目的変数がどのカテゴリーに
#属するのかを予測するための方法としては、ロジスティクス回帰
#分析や判別分析などの方法を用いることが可能
#決定木は全体を説明変数を用いて段階的にグループ分けする
#classification tree(目的変数がカテゴリカルの場合)
#regression tree(目的変数が量的変数の場合)
#※より実践的な内容はこちら
#############決定木よる生存解析#############
library(vcd)
head(OvaryCancer)
install.packages("mvpart")
library(mvpart)
result <- rpart(survival ~ stage + operation + xray,
weight = Freq, data = OvaryCancer)
library(graphics)
plot(result, uniform=TRUE, margin=0.2)
text(result, use.n=TRUE, all=TRUE)
#weightは集計データの場合に用いる部分、集計データの度数を
#表す変数を示している。個票データの際は指定不要。
#############量的変数を用いたグループ分け#############
library(mvpart)
result <- rpart(Species~.,data=iris)
result$control #結果におけるパラメータの表示
plot(result, uniform=T, margin=0.1)
text(result, use.n=T, all=T)
predict(result, type="class")
predict(result, type="prob")
iris$est <- predict(result, type="class")
#販売履歴データから、顧客区分(heavy,light等)をつけて、
#どの変数で分けられるのか見てみると面白いのではないか?
xtabs(~Species+est,data=iris)
#############順序カテゴリカルデータの場合#############
library(rpartOrdinal)
#############Practice################
library(vcd)
head(JointSports)
library(mvpart)
result <- rpart(opinion~year+grade+gender, weight=Freq,data=JointSports)
result
plot(result, uniform=T, margin=0.1)
text(result, use.n=T, all=T)
Titanic
Tita <- data.frame(Titanic)
result <- rpart(Survived~Class+Sex+Age, weight=Freq, data=Tita,
control=rpart.control(minsplit=1,cp=0.001))
#control=rpart.control(minsplit=1,cp=0.001)の条件付けは
#極めて重要、これ次第でうまく分かれるかどうか決まる
#minsplitはノードに含まれる最小観察数、cpはcomplexity parameter。
#cpが設定値以下の場合は分割を行わない。
summary(result)
plot(result, uniform=T, margin=0.1)
text(result, use.n=T, all=T)
result