#目的
- 自力で共発現解析のスクリプトを書けるようになること。
#対象
- R初心者で、オブジェクトやfor文とかよくわからない方。
#共発現解析をするための考え方~実際に一行ずつ走らせて、感覚的に理解しよう!
##Rにもともと用意されているデータセット、irisを基にイントロ
iris
a <- iris #編集できるように任意のオブジェクト(a)にirisを格納
a #aにirisデータが入っていることを確認できます。
##データの要素を確認
a[1, ] #1行目
a[, 1] #1列目
a[1, 1] #1行目かつ1列目
a[1:3, ] #1行目から3行目まで
##行名(row)、列名(col)が確認できる
rownames(a)
colnames(a)
##行数、列数が確認できる
nrow(a)
ncol(a)
a <- a[, 1:4] #5列目は文字なので数値のみを抜き出す
##列間の相関を計算する
cor(a[, 1], a[, 1]) #Sepal.LengthとSepal.Lengthの相関
cor(a[, 1], a[, 2]) #Sepal.LengthとSepal.Widthの相関
cor(a[, 1], a[, 3]) #Sepal.LengthとPetal.Lengthの相関
cor(a[, 1], a[, 4]) #Sepal.LengthとPetal.Widthの相関
#ちなみに1列目とn列目の比較ではなく、n列目と1列目の比較をしても計算結果は同じです。
#なんでか気になる人は「ピアソンの相関係数」の算出式を調べるといいと思います。
##手打ちで変えていくのはめんどくさいのでfor文を使って自動化しよう!
今回は4C2パターンの相関分析だが、実際の共発現解析だと数千、億パターンの相関分析をする必要があるので、自動化は必須です。
#自分との相関が1なのは当たり前なのでそのようなパターンは抜こう!
n <- 2
for(n in n:ncol(a)){
cor(a[, 1], a[, n])
}
オブジェクトに計算結果を入れていないから何も表示されない。
n <- 2
for(n in n:ncol(a)){
test <- cor(a[, 1], a[, n])
}
最後の結果だけしかでない
n <- 2
for(n in n:ncol(a)){
test <- c(test, cor(a[, 1], a[, n]))
}
一見できているように見えるけど本来結果は3つのはず
n <- 2
test <- c() #testに入っている数値を初期化するためのコマンド
for(n in n:ncol(a)){
test <- c(test, cor(a[, 1], a[, n]))
}
できた!
##この結果を表にしてまとめると
source <- rep(colnames(a)[1], times = 3) #rep(複製したいもの, times = 複製したい回数)
check <- data.frame(source = source,
value = test,
target = colnames(a)[2:4])
ここまで何をやっているのか分かったそこのあなた!
##では4C2の組み合わせの相関を計算するためにはどうしたらいいのだろうか?
ここまでの内容を理解出来たらそこのあなた!for文を使って全組み合わせを算出し、以下のような表でまとめてみよう!
source | value | target | |
---|---|---|---|
1 | A | -1~1 | B |
2 | A | -1~1 | C |
3 | A | -1~1 | D |
4 | B | -1~1 | C |
5 | B | -1~1 | D |
6 | C | -1~1 | D |
#次回の内容
R初心者のための共発現解析(相関分析) 実践編