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) # データフレームを行列として読み込み
Pt <- svd(Data1)
PtB = Pt$u # 行側のパターンを作成
PtA = Pt$v # 列側のパターンを作成
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()# 言葉の散布図
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()# 言葉の散布図
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のインストールでエラーが出るようになりました。 エラーメッセージを見て、「Biobase」と「BiocGenerics」というパッケージをインストールしたところ、エラーはなくなりました。 これらの2つのパッケージはCRANにはないので、インストールはBioconductorというサイトから圧縮ファイルをダウンロードして、 それを展開して使いました。