rプログラミング03 データ分析編

14
R プププププププ — ププププププ — 2015/10/24

Upload: wada-kazumi

Post on 14-Apr-2017

388 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Rプログラミング03 データ分析編

R プログラミング

— データ分析編 —

2015/10/24

Page 2: Rプログラミング03 データ分析編

目 次1. データ分析編の目的2. 使用データについて3. プロット図の出力4. 因子分析5. 因子得点によるクラスター分析

2

Page 3: Rプログラミング03 データ分析編

1. データ分析編の目的

  R を用いてどのようにデータの分析を行うことができるのかという例を紹介する 具体的には、 R に組込データとして収録されている state.x77 という米国各州についてのデータ( 50×8 )を用いて、州の類似性や相違についての分析を行う3

Page 4: Rプログラミング03 データ分析編

2. 使用データについて  R の組込データとして収録されているstate という米国の州別データのうち、 8変数 50 レコードの state.x77 を使用する

4

data(state) # 米国の州別データのロードhelp(state) # 内容一覧state.x77 # 今回使用するデータ。 8 変数 50 レコード。summary(state.x77) # 基本統計量pairs(state.x77) # 散布図行列描画

Page 5: Rプログラミング03 データ分析編

state.x77変数名とその内容

変数名 内容Population 1975 年 7 月 1 日時点の推定人口Income 1974 年の 1 人当たり収入Illiteracy 非識字率( 1970 年、人口 % )Life Exp 1969-71 年の平均余命Murder 人口 10 万人当たりの殺人・非過失故殺率

( 1976 年)HS Grad 高校の卒業率 (1970)Frost 州都・大都市の最低気温が氷点下の平均日数

( 1931-60 年) Area 面積(平方マイル) 5

Page 6: Rプログラミング03 データ分析編

3. プロット図の出力# 散布図行列を A4 サイズの png 形式で保存( 200 dpi   A4 縦)png(filename="pairs_x77.png", width=1654, height=2339, pointsize = 32) pairs(state.x77) dev.off()

# 8 変数のヒストグラムを A4 縦サイズにまとめて描画、 png 形式保存require(MASS) # truehist 関数が収録されているパッケージpng(filename="hist_x77.png", width=1654, height=2339, pointsize = 32) par(mfrow=c(4,2)) # 4 行 2 列に画面分割for (i in 1:8) truehist(state.x77[,i], xlab=colnames(state.x77)[i])dev.off()

6

Page 7: Rプログラミング03 データ分析編

4. 因子分析R での因子分析では、因子の数はユーザが指定する。いくつか試してみて、最適な数を決める

(fac2 <- factanal(state.x77, factors=2))(fac3 <- factanal(state.x77, factors=3))(fac4 <- factanal(state.x77, factors=4))(fac5 <- factanal(state.x77, factors=5))

8 変数で 5 因子は多すぎるというエラーメッセージが表示されるが、 2~4 因子の場合、因子数は十分という検定結果が表示されている

7

Page 8: Rプログラミング03 データ分析編

因子数の選択エラーがでなかった各因子数の因子負荷量を表示させる

# 因子負荷量: 各変数の因子への貢献par(mfrow=c(1,2)) # 1行2列に画面分割barplot(fac2$loading[,1])barplot(fac2$loading[,2])par(mfrow=c(2,2)) # 2行2列に画面分割barplot(fac3$loading[,1])barplot(fac3$loading[,2])barplot(fac3$loading[,3])par(mfrow=c(2,2)) # 2行2列に画面分割barplot(fac4$loading[,1])barplot(fac4$loading[,2])barplot(fac4$loading[,3])barplot(fac4$loading[,4])

8

Page 9: Rプログラミング03 データ分析編

因子数の解釈ここでは解釈しやすそうな 2 因子を選択

9

Page 10: Rプログラミング03 データ分析編

独自因子uniqueness はモデルで説明できない情報の比率

round(fac2$uniquenesses, 3)round(fac3$uniquenesses, 3)round(fac4$uniquenesses, 3)

> round(fac2$uniquenesses, 3)Population Income Illiteracy Life Exp Murder HS Grad Frost Area 0.859 0.498 0.353 0.337 0.005 0.146 0.681 0.651 > round(fac3$uniquenesses, 3)Population Income Illiteracy Life Exp Murder HS Grad Frost Area 0.813 0.474 0.266 0.240 0.050 0.167 0.005 0.613 > round(fac4$uniquenesses, 3)Population Income Illiteracy Life Exp Murder HS Grad Frost Area 0.584 0.473 0.005 0.165 0.050 0.219 0.301 0.327

round 関数で丸めて小数点以下 3 桁まで表示させている10

Page 11: Rプログラミング03 データ分析編

5. 因子得点によるクラスター分析

11

# 因子分析の因子得点(ここでは2因子)をres1に格納res1 <- factanal(state.x77, factors=2, scores="Bartlett")$scores# クラスター分析res1.hc <- hclust(dist(res1), method="single") # 最近隣法plot(res1.hc)# デンドログラム表示

Page 12: Rプログラミング03 データ分析編

州の分類

res1.cl6 <- cutree(res1.hc,k=6)res1.cl8 <- cutree(res1.hc,k=8)res1.cl10 <- cutree(res1.hc,k=10)

# 因子負荷量のプロット、分類色分けでplot(res1, col=rainbow(10)[res1.cl10], pch=20, ylim=c(-2.5,2.5), xlim=c(-2.5,2.5))abline(h=-3:3, v=-3:3, col="gray", lty=3)text(res1, rownames(state.x77))points(res1, pch=20, col=rainbow(10)[res1.cl10], cex=2)

12

任意のグループ数に州を分類し、因子負荷量をグループ毎に色分けでプロットする

Page 13: Rプログラミング03 データ分析編

13

各州の特徴を可視化

Page 14: Rプログラミング03 データ分析編

14

R プログラミング

— データ分析編 —

おわり