Rによるデータ分析

Rによる行列の分解

Rで 行列の分解 をする時の例は、下記になります。

データの入力

「C:/Rtest」のフォルダに、「Data.csv」という名前のcsvファイルがある事を想定しています。 また、このページの例のように、一番上の行に列の名前、一番左の列に行の名前が書かれているデータを想定しています。

library(ggplot2) # パッケージの読み込み
library(plotly)
# パッケージの読み込み
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data0 <- read.csv("Data.csv", header=T, row.names=1)
# データを読み込み
Data1 = as.matrix(Data0)
# データフレームを行列として読み込み

行列の分解

特異値分解(svd)の場合

Pt <- svd(Data1)
PtB = Pt$u
# 行側のパターンを作成
PtA = Pt$v
# 列側のパターンを作成

非負行列分解(NMF)の場合

library(NMF) # パッケージの読み込み
Pt <- nmf(Data1, 2)
# パターンが2個になるようにNMF
PtB = basis(Pt)
# 行側のパターンを作成
PtA = t(coef(Pt))
# 列側のパターンを作成

変数の類似度の分析

A = data.frame(PtA) # 行列をフレームにする
A$Name <-colnames(Data1)
# 名前の列を作る
A$Group <-'A'
# 名前の列を作る
ggplot(A, aes(x=A[,1], y=A[,2],label=Name)) + geom_text()
# 言葉の散布図

高次元2次元化散布図による、変数の類似度の分析

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

サンプルの類似度の分析

B = data.frame(PtB) # 行列をフレームにする
B$Name <-rownames(Data1)
# 名前の列を作る
B$Group <-'B'
# 名前の列を作る
ggplot(B, aes(x=B[,1], y=B[,2],label=Name)) + geom_text()
# 言葉の散布図

高次元2次元化散布図による、サンプルの類似度の分析

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

同時付置図

AB <- rbind(A,B) # データを合体する。
ggplot(AB, aes(x=AB[,1], y=AB[,2],colour=Group,label=Name)) + geom_text()
# 言葉の散布図

多次元同時付置図

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

NMFのパッケージについて

筆者が最初に上記のコードを使った時は、何も問題がなかったのですが、しばらくしてから使ったら、NMFのインストールでエラーが出るようになりました。 エラーメッセージを見て、「Biobase」と「BiocGenerics」というパッケージをインストールしたところ、エラーはなくなりました。 これらの2つのパッケージはCRANにはないので、インストールはBioconductorというサイトから圧縮ファイルをダウンロードして、 それを展開して使いました。



Tweet データサイエンス教室