Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

593 views

Published on

組み込みデータのstate.x77を用いて、因子分析を行い、因子負荷量によるクラスター分析で米国の各州を分類する
(デモコードあり)

Published in: Education
  • Be the first to like this

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

  1. 1. 2015/10/24
  2. 2. 目 次 1. データ分析編の目的 2. 使用データについて 3. プロット図の出力 4. 因子分析 5. 因子得点によるクラスター分析 2
  3. 3. 1. データ分析編の目的 Rを用いてどのようにデータの分析を行 うことができるのかという例を紹介する 具体的には、Rに組込データとして収録 されているstate.x77という米国各州につい てのデータ(50×8)を用いて、州の類似 性や相違についての分析を行う 3
  4. 4. 2. 使用データについて Rの組込データとして収録されている stateという米国の州別データのうち、8変 数50レコードの state.x77を使用する 4 data(state) # 米国の州別データのロード help(state) # 内容一覧 state.x77 # 今回使用するデータ。 8変数50レコード。 summary(state.x77) # 基本統計量 pairs(state.x77) # 散布図行列描画
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 因子数の選択 エラーがでなかった各因子数の因子負荷量を表示 させる # 因子負荷量: 各変数の因子への貢献 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
  9. 9. 因子数の解釈 ここでは解釈しやすそうな2因子を選択 9
  10. 10. 独自因子 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
  11. 11. 5. 因子得点によるクラスター分析 11 # 因子分析の因子得点(ここでは2因子)をres1に格納 res1 <- factanal(state.x77, factors=2, scores="Bartlett")$scores # クラスター分析 res1.hc <- hclust(dist(res1), method="single") # 最近隣法 plot(res1.hc) # デンドログラム表示
  12. 12. 州の分類 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 任意のグループ数に州を分類し、因子負荷量を グループ毎に色分けでプロットする
  13. 13. 13 各州の特徴を可視化
  14. 14. 14

×