Rで基本統計量と決定木分析
内部勉強会の第2回目の内容です。
以下の内容とほぼ一緒ですが、勉強会のまとめとして管理しやすくなるように別記事として投稿しました。
2h0.hatenablog.jp
目標
- 基本統計量の解説とRの環境構築
- 分析手法の基礎的な知識を知る
プログラミング言語 R とは
R言語(あーるげんご)はオープンソース・フリーソフトウェアの統計解析向けのプログラミング言語及びその開発実行環境である。ファイル名拡張子は.r, .R, .RData, .rds, .rda。
R言語はニュージーランドのオークランド大学のRoss IhakaとRobert Clifford Gentlemanにより作られた。現在ではR Development Core Team[注 1] によりメンテナンスと拡張がなされている。
引用ソース: R言語 - Wikipedia
要するに統計に強い言語とのこと。
演習での実行環境は "R Studio" を利用していました。
以下、環境構築に参考したサイト。
qiita.com
演習1 Rを用いて基本統計量を求める
まず、コンソールとは以下の画像のようにコマンドを実行、結果を確認する画面と捉えるといいです。RStudioのコンソールを利用して演習時間では以下の 1)~3) を求めました。
x = c(90,58,60,71,23,40)
y = c(100,28,50,32,41,76)
1)xとyの平均
2)xとyの最大値、最小値
3)xとyの最頻値
4)xとyの分散
5)xとyの標準偏差
以下、自分の解答です。
注意点として"#"が書かれている行はコメント・補足事項です。
準備段階として以下のコマンドを実行。
"x"は変数、"<-"は"="に近い変数に代入する演算子、
"c()"は配列ベクトルを扱う際に用いるもの(語彙)*1
変数とは数字や文字列などの値を一つだけ保管する箱のような物で、配列とは値をいくつも保管することができます。値を保管すると何が幸せかと言うと、扱う値の変更や使い回し、更には管理が生の値そのままを使用するよりしやすくなります。("生の値"だとポインタとかと語弊が生まれそう)
また、変数も配列も言語特有の縛りを除けば、自分が好きな名前をつけることが可能です。
#x、yに対し配列としてそれぞれの値を格納。 x<-c(90,58,58,71,23,40) y<-c(100,28,50,32,41,76)
1)xとyの平均
xave<-mean(x) yave<-mean(y)
解答
# >は実際には入力せず、>の後から入力しています。コンソール内容のままの引用です。 > xave [1] 56.66667 > yave [1] 54.5
2)xとyの最大値、最小値
xmax<-max(x) ymax<-max(y) xmin<-min(x) ymin<-min(y)
解答
> xmax [1] 90 > ymax [1] 100 > xmin [1] 23 > ymin [1] 28
3)xとyの最頻値
xmode<-table(x) ymode<-table(y)
解答
> xmode x 23 40 58 71 90 1 1 2 1 1 > ymode y 28 32 41 50 76 100 1 1 1 1 1 1
4)xとyの分散、5)xとyの標準偏差
の2問については演習内で行わなかったのですが、こちらの記事後半にほぼ回答なるものがありましたので、参考まで…初学者の方だと関数の概念の理解が難しいのかな?
qiita.com
rstudio-pubs-static.s3.amazonaws.com
データ分析手法
・回帰分析
→変数間の関係を、結果(目的変数)と要因(説明変数)とし、回帰式でモデル化すること
・決定木分析
→樹木状のモデルを使って構造の理解、その分析結果から新規データの分類の予測を行うもの
・クラスター分析
→データ同士の類似度からデータをクラスター(集団)にまとめる分析方法
決定木分析の活用対象例
配布された資料に表にまとまっていたのですが、ざっくり説明すると
様々な業種・業態(金融、流通、小売、通信のサービス等々)で
データによる情報の把握や精度向上に役立てられているそうです。
演習2 決定木分析
今回の演習ではタイタニックのデータセットを使用して
「タイタニック号で生き残るのは誰か」という予測を
決定木を用いて予測します。
ということで、用意されていたデータセットで決定木を構築し、描画された木より予測を立てました。
手順を挙げます。
決定木の構築(1)
# rpartおよびrpart.plotパッケージの導入 install.packages("rpart") install.packages("rpart.plot") # パッケージの適用 library(rpart) library(rpart.plot) # データセットの読み込みとデータフレームへの変換 TitanicData<-data.frame(Titanic)
# データセットの確認 > Titanic , , Age = Child, Survived = No Sex Class Male Female 1st 0 0 2nd 0 0 3rd 35 17 Crew 0 0 , , Age = Adult, Survived = No Sex Class Male Female 1st 118 4 2nd 154 13 3rd 387 89 Crew 670 3 , , Age = Child, Survived = Yes Sex Class Male Female 1st 5 1 2nd 11 13 3rd 13 14 Crew 0 0 , , Age = Adult, Survived = Yes Sex Class Male Female 1st 57 140 2nd 14 80 3rd 75 76 Crew 192 20
# Freq は同じ属性を持つ人の数 > TitanicData Class Sex Age Survived Freq 1 1st Male Child No 0 2 2nd Male Child No 0 3 3rd Male Child No 35 4 Crew Male Child No 0 5 1st Female Child No 0 6 2nd Female Child No 0 7 3rd Female Child No 17 8 Crew Female Child No 0 9 1st Male Adult No 118 10 2nd Male Adult No 154 11 3rd Male Adult No 387 12 Crew Male Adult No 670 13 1st Female Adult No 4 14 2nd Female Adult No 13 15 3rd Female Adult No 89 16 Crew Female Adult No 3 17 1st Male Child Yes 5 18 2nd Male Child Yes 11 19 3rd Male Child Yes 13 20 Crew Male Child Yes 0 21 1st Female Child Yes 1 22 2nd Female Child Yes 13 23 3rd Female Child Yes 14 24 Crew Female Child Yes 0 25 1st Male Adult Yes 57 26 2nd Male Adult Yes 14 27 3rd Male Adult Yes 75 28 Crew Male Adult Yes 192 29 1st Female Adult Yes 140 30 2nd Female Adult Yes 80 31 3rd Female Adult Yes 76 32 Crew Female Adult Yes 20
決定木の構築(2)
4.決定木分析の実施
5.分析結果の確認
6.樹形図の描画
# 決定木の目的変数と説明変数を指定 # 目的変数「Survived」、説明変数「Class+Sex+Age」 titanic.rp<-rpart(Survived~Class+Sex+Age,weights=Freq,data=TitanicData,control=rpart.control(minsplit = 1)) # 樹形図のプロット prp(titanic.rp,type=4,extra=1)
データセットの見方とかrpart、prpのパラメータの指定の仕方とか確認しないとだ。
以下の画像のような樹形図がRStudioの"Plots"タブに表示されます。
決定木分析の結果より予測できること(すごい大事)
ということで、決定木分析の結果より樹形図が完成されました。
この決定木は結果(目的変数)に対する要因(説明変数)の中でもより結果に結びつくものは上にプロットされるそうです。
また、ノード(図中の丸)内に示された左側の数字は非生存者、右側は生存者を表しています。子同士のノードの生存者、非生存者それぞれの合計は親ノードの生存者、非生存者に対応しています。
"Yes"、"No"は結果(この木の場合Survived)に対する値で、つまり非生存者に対し生存者は多いかどうかを表しています。
この樹形図により新たにわかるようになった情報として
- 性別(Sex)が生存率に一番要因として関係し、女性は生存率高めで男性は低め
- 男性の生存率は 年齢(Age) > フロア(Class)の順番、女性の生存率はフロアが樹形図に現れている通りにより関係がある
- 男性の中でも大人(Adult)より子供(Child)、フロアは3階より1・2階が生存率が高い
- 女性はフロアが3階より1・2階と添乗員(Crew)の方が生存率が高い
が挙げられます。
*1:配列とベクトルについて誤解していたため訂正※http://cse.naro.affrc.go.jp/takezawa/r-tips/r/22.htmlを参考