Rによるデータ分析

Rによるサンプルの類似度の主成分分析

Rによる主成分分析の基本 にあるサンプルの類似度の主成分分析の続きです。

基本の主成分分析による、サンプルの類似度の分析

Rによる主成分分析の基本 のコードと、以下は同じです。

setwd("C:/Rtest")
Data <- read.csv("Data.csv", header=T)
DataName <- Data$Name
# Nameの列を別名で保管する
Data$Name <- NULL
# データからNameの列を消して、Xの列だけにする
pca_model <- prcomp(Data, scale=TRUE)
# 主成分分析
summary(pca_model)
# 「Cumulative Proportion」が累積寄与率。

pca_data1 <- as.data.frame(pca_model$x) # 主成分得点を得る

pca_dataA <- transform(pca_data1 ,name1 = DataName,name2 = "A")# サンプル名を追加

pca_data2 <- sweep(pca_model$rotation, MARGIN=2, pca_model$sdev, FUN="*") # 因子負荷量を計算
pca_dataB <- transform(pca_data2 ,name1=rownames(pca_data2),name2="B")
# 言葉の散布図
library(ggplot2)
library(plotly)
ggplotly(ggplot(pca_dataA, aes(x=PC1, y=PC2,label=name1)) + geom_text())
# 言葉の散布図
PCA
重なってわかりにくいですが、CとDが近く、他は散らばっています。

サンプルの類似度の分析のつづき

基本の分析だと、2つの主成分を散布図の縦軸と横軸にして考察します。

2つの主成分のすべての組合せを見る方法がありますが、「結局、どのサンプル同士が近いのか?」ということが、考察しにくいです。 そこで、 高次元を2次元に圧縮して可視化 の方法で、多次元を2次元にします。

なお、この例だと、基本の分析の時と特に変わらない結果になります。 意味のある主成分の数が、もっと増えると効果的な方法になります。

多次元尺度構成法で高次元を2次元に圧縮

主成分との関係の情報は不要で、サンプルの類似度だけを詳しく調べたい場合は、 多次元尺度構成法 を使って、 多数の主成分を2つに凝縮すると良いです。

library(MASS)# ライブラリを読み込み
pca_data11 <- pca_data1
row.names(pca_data11) <- DataName
Data11_dist <- dist(pca_data11)
# サンプル間の距離を計算
sn <- sammon(Data11_dist)
# 多次元尺度構成法
output <- sn$points
# 得られた2次元データの抽出
Data2 <- cbind(output, pca_data11)  # 元データと多次元尺度構成法の結果を合わせる。
ggplotly(ggplot(Data2, aes(x=Data2[,1], y=Data2[,2],label=row.names(pca_data11))) + geom_text())
# 言葉の散布図
PCA

この場合、CとDが「近い」となっています。

高次元データのネットワーク分析で、高次元を2次元に圧縮

高次元データのネットワーク分析 を使う場合です。

library(MASS)# ライブラリを読み込み
pca_data11 <- pca_data1
row.names(pca_data11) <- DataName
Data11_dist <- as.matrix(dist(pca_data11))
# サンプル間の距離を計算
library(igraph)
# パッケージを読み込み
diag(Data11_dist) <- 1
# 対角成分は1にする
Data11_dist2 <- 1/Data11_dist
# 近いほど小さい尺度に変換
diag(Data11_dist2) <- 0
# 対角成分は0にする
Data11_dist3 <- Data11_dist2 / max(Data11_dist2) *10
# 最大値が10になるように変換
Data11_dist3[Data11_dist3 < 1] <- 0
# 1より小さい場合は0に変換
DM.g<-graph.adjacency(as.matrix(Data11_dist3),weighted=T, mode = "undirected")
# グラフ用のデータを作る
plot(DM.g, edge.width=E(DM.g)$weight)
# グラフを作る
PCA

この場合、CとDだけでなく、EとFも「近い」となっています。

RStudioでグラフを扱う時の注意

RStudioで、このページのコードを扱う時の注意です。

上のコードの場合、散布図は、「Viewer」の所に出ます。 ネットワークグラフは、「Plots」の所にできます。 「グラフができない」となった時の確認ポイントです。
PCA PCA



Rによる主成分分析の基本

Rによる変数の類似度の主成分分析

Rによる質的変数の主成分分析

Rによるクロス集計表の主成分分析



Rによるデータ分析

Tweet データサイエンス教室