MENU

R partykit で決定木分析を実行する方法

決定木分析をRで行う方法を紹介。

難しいプログラムが組めなくてもすぐに使える。

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

決定木分析のRパッケージの準備

決定木分析のパッケージrpartときれいな決定木の描画パッケージpartykitをインストールする。

インストールは初めの一回だけでOK。

install.packages("rpart")
install.packages("partykit")

library()で呼び出しておく。

library(rpart)
library(partykit)

決定木分析をRで行う実例

rpartパッケージのkyphosis(脊柱後弯症)データを使う。

脊柱後弯症Kyphosisをきたすことを予測しようとする分析で、月齢のAgeと、いくつの椎体が関係しているかのNumberと、手術をしたもっとも上のレベルの椎体の番号Startで予測する。

fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)

plot(as.party())できれいな決定木を描くことができる。

plot(as.party(fit))

作成された決定木を記述すると以下のようになる。

最初の分岐は、Start(手術をしたもっとも上のレベルの椎体の番号)が8.5以上かどうか。

Startが8.5未満だったら、Present(脊柱後弯症あり)の可能性が高い。

Startが8.5以上で、かつ、14.5以上であれば、全員がAbsent(脊柱後弯症なし)。

さらに、Startが14.5未満でも月齢55か月未満だと全員Absent。

月齢が55か月以上で、月齢111か月以上もほとんどAbsent。

月齢が55か月以上で、111か月未満であれば、Presentが半分を超えている。

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

決定木分析をRで行う場合のComplex parameter

printcp()で実測と決定木の予測のずれ(エラー)がどこで収束するかを見ている。

printcp()は、エラーが収束している分岐を見出す。

エラーが収束した分岐をcomplex parameter (CP)として採用する。

今回はこの場合、0.019608でエラーが収束していると読む。

エラーが小さく、決定木の大きさはそこそこ大きいことがCPの条件。

CP=0.0196808のときに、エラー(rel error)が収束している感じが見て取れる。

rel errorが大きく減少しなくなる点を指している。

> printcp(fit)
Classification tree:
rpart(formula = Kyphosis ~ Age + Number + Start, data = kyphosis)
Variables actually used in tree construction:
[1] Age   Start
Root node error: 17/81 = 0.20988
n= 81
CP nsplit rel error xerror    xstd
1 0.176471      0   1.00000 1.0000 0.21559
2 0.019608      1   0.82353 1.0588 0.22010
3 0.010000      4   0.76471 1.0588 0.22010

Complex parameterを使って決定木を剪定する方法

rpart関数の中に、CP=0.019608を代入して、剪定した決定木を作成する。

partykitで描いてみる。

fit1 <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis, cp=0.019608)
plot(as.party(fit1))

最初の分岐、Startが8.5以上かどうかだけで、かなり分けられるのが見て取れる。

Complex parameterによる剪定が行われるとこんなにざっくりした決定木になる。

まとめ

統計ソフトRのrprarパッケージとpartykitパッケージを使うと、簡単に決定木分析ときれいな決定木を描くことができる。

Complex parameterによって剪定を行って、より汎用性の高い決定木を作成することも簡単にできる。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次