isseiの解析日記

アイアナ代表・isseiの解析日記。統計学、Rを使ったデータ分析やAIなど

ヒートマップ→クラスタリング→PRAT

ヒートマップは変数や観測値の関係を同時に可視化できる優れた方法。

クラスタリングをして距離の近い(関連の強い)変数、観測値を並べ替えてくれるので直感的に把握しやすい。

ヒートマップでデータを観たあと、クラスタリング・予測に繋いでいくこともできる。

ヒートマップとクラスタリングは標準化した後と前で結果が変わるので注意(俺もプログラム間違えてたw)。


コードはこちら↓

#---written by Issei---#

#------ダミーデータ
set.seed(1)
norm <- rnorm(200)
Data <- matrix(c(norm[1:50]+4, norm[51:100]+2, norm[101:150]-2, norm[151:200]-4), nrow=20, ncol=10, byrow=T)
Data[, 6:10] <- -Data[, 6:10]
DataScale <- apply(Data, 2, scale)

#------ヒートマップ
#---最長距離法
library(RColorBrewer)
hmcol <- colorRampPalette(brewer.pal(10, "PRGn"))(64)	#ヒートマップの色の準備

library(gplots)
heatmap.2(t(DataScale), density.info="none", trace="none", col=hmcol)

#---Ward法(はずれ値に強い)
heatmap.2(t(DataScale), density.info="none", trace="none", col=hmcol, hclustfun=function(d) hclust(d, method="ward"))

#------サンプルのクラスタリング
#plot(Data.hclust <- hclust(dist(Data), method="ward"))
#rect.hclust(Data.hclust, k=4)
plot(Data.hclust <- hclust(dist(DataScale), method="ward"))
rect.hclust(Data.hclust, k=4)

#---クラス変数を作る
Dataclass <- data.frame(Data, class=as.character(cutree(Data.hclust, k=4)))


#------ついでにPART
library(mvpart)
mvpart(class~., data=Dataclass, size=5)		#実データでもこれだけ綺麗に分かれると気持ちいいな〜