Mais conteúdo relacionado
Semelhante a Rプログラミング03 「データ分析編」デモ (10)
Mais de wada, kazumi (20)
Rプログラミング03 「データ分析編」デモ
- 1. # データのロード
data(state)
# 使用データは state.x77。50 データ 8 変数。
state.x77 # データ一覧
# 01A どのようなデータか眺めてみよう
summary(state.x77) ##### 基本統計量
pairs(state.x77) ##### 散布図行列描画
# 散布図行列を A4 サイズの png 形式で保存
png(filename="pairs_x77.png", width=1654, height=2339, pointsize = 32) #### 200 dpi A4 縦
pairs(state.x77) ##### 散布図行列描画
dev.off()
# 8 変数のヒストグラムを A4 サイズにまとめて描画、png 形式保存
require(MASS) # truehist 関数が収録されているパッケージ
png(filename="hist_x77.png", width=1654, height=2339, pointsize = 32) #### 200 dpi A4 縦
par(mfrow=c(4,2)) # 4 行 2 列に画面分割
for (i in 1:8) truehist(state.x77[,i], xlab=colnames(state.x77)[i])
dev.off()
# 因子分析
# 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)
# 因子数を選ぶ
# ここでは元のデータの情報の大部分をカバーするよりも、
# 解釈しやすい因子を選択する方針とするので、まず因子負荷量
# をみて解釈可能性を検討する
# 因子負荷量: 各変数の因子への貢献
par(mfrow=c(1,2)) # 1 行 2 列に画面分割
barplot(fac2$loading[,1], las=2)
barplot(fac2$loading[,2], las=2)
par(mfrow=c(2,2)) # 2 行 2 列に画面分割
barplot(fac3$loading[,1], las=2)
barplot(fac3$loading[,2], las=2)
barplot(fac3$loading[,3], las=2)
- 2. par(mfrow=c(2,2)) # 2 行 2 列に画面分割
barplot(fac4$loading[,1], las=2)
barplot(fac4$loading[,2], las=2)
barplot(fac4$loading[,3], las=2)
barplot(fac4$loading[,4], las=2)
# 独自因子: モデルで説明できない情報の比率
round(fac2$uniquenesses, 3)
round(fac3$uniquenesses, 3)
round(fac4$uniquenesses, 3)
# 因子分析の因子得点(ここでは 2 因子)を res1 に格納
res1 <- factanal(state.x77, factors=2, scores="Bartlett")$scores
# クラスター分析
res1.hc <- hclust(dist(res1), method="single") # 最近隣法
#res1.hc <- hclust(dist(res1), method="ward.D2")
par(mfrow=c(1,1)) # 画面分割を元に戻す
plot(res1.hc) # デンドログラム表示
# デンドログラムを A4 横にファイル出力
png(filename="Dendrgram_x77.png", width=2339, height=1654, pointsize = 32) #### 200 dpi
A4 縦
plot(res1.hc) # デンドログラム表示
dev.off()
# とりあえずいくつかに分類してみる
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,3.5), xlim=c(-2,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])
############################################################