July 26, 2014

Rで行こう!!〜その2

ものすごく高度な使い方が出来るらしいRを僕のような素人が使うのはちょっとハードルは高かったのですが、図を書くのは実はエクセルよりもずっと簡単!

Rを使うのにはアプリケーションをインストールしなくてはいけません。一番手軽で親しみやすいのは、エクセルやワードと同じように、単体のアプリケーションをインストールする事で、東大の農学研究科の門田さんのホームページに詳しいです。
http://www.iu.a.u-tokyo.ac.jp/~kadota/r_seq.html#install
マック板のインストールはこちらのpdfのほうが詳しいです。
http://www.iu.a.u-tokyo.ac.jp/~kadota/R_install_mac.pdf
ちなみに、このホームページはすごい充実ぶり。今度授業にモグリにいこうかな、、、

さて、ここでエア実験。次のようなウエスタンの定量の結果がでてきたとしましょう。
WTのタンパク質量:5.3, 2.9, 3.4, 5.2, 4.6
KOのタンパク質量:9.2, 7.4, 3.5, 6.9, 8.2

エクセルなどの表計算ソフトで
WT KO
5.3 9.2
2.9 7.4
3.4 3.5
5.2 6.9
4.6 8.2
こんなファイルを作って、適当な名前を付けて.csv形式で保存します(ここでは"exp_1.csv"にします。)。ちなみに、R関連のデータは全て一つのフォルダにまとめておくと便利です。僕自身はDropboxの下にRのフォルダを作って、その下にプロジェクトごとのフォルダを作り、全てのcsvファイルはそこに放り込んでいます。ファイル名にはスペースだとかハイフンだとか使わずにアンダーバー"_"を使うと、なんかちょっとだけ大人になったような気がしますね。文系の彼女からささやかな尊敬のまなざしをむけてもらえるかも(妄想と偏見はいってます…)。かつてこのキーを探すのに四苦八苦した思いがありますが、右下のシフトキーの隣です。

次に、Rを立ち上げて、作業ディレクトリを指定します。Macだったらcommand+Dでフォルダ指定のウィンドウが出てきます。もしくは、メニューの「その他」から「作業ディレクトリの変更…」を選びます。csvファイルを放り込んでいるフォルダを選べばオーケー。

箱ヒゲ図やbeeswarm図を書こうと思ったら、ちょっとおまじない。メニューの「パッケージとデータ」から「パッケージマネージャ」を選んで、beeswarmにチェックを入れておきます。

で、やる事は簡単。Rコンソール画面で次の文字を打ち込むだけ。このままコピペでコンソール画面に貼付けてリターンを押しても構いません。

data<-read.csv("exp_1.csv")
boxplot (data)

おおっ!!という間もなく、Quartz 2[*]というウインドウに箱ヒゲ図が現れます。ウィンドウの大きさをいじれば大きさもかえられますし、pdf形式で保存もできます。

こんな簡単で良いのだろうか、、、というのが第一印象でした。この図、エクセルで書こうと思ったらものすごく手間がかかる、というか、書けませんよね?

ただ、縦軸がゼロ起点でないのが気に入らないとか、boxplotに重ねてbeeswarm(全てのデータをプロットしたもの)を重ねたいとか、全てのグラフで決まった形式で同じ大きさで出力したいとか、いろいろ要望があると思います。僕自身は、この手のデータは全て次の命令文で出力する事に決めています。

postscript("出力したいファイル名.eps", horizontal = FALSE, onefile = FALSE,paper = "special", height = 4, width = 3);
data<-read.csv("拡張子csv付き読み込みたいファイル名.eps")
beeswarm (data, pch=16,col="blue", ylim=c(0,max(data, na.rm=T)))
boxplot (data, add=TRUE, ylim=c(0,max(data)))
dev.off()

こうすると、もとのcsvファイルを置いていたフォルダに、出力したいファイル名.epsというファイルが生成されるので、それをイラストレータやパワーポイント等に貼付ければ、図のいっちょ上がりです。

Rで便利なのは、この手の命令文をためておける点で、いったん気に入ったフォーマットで図がかければ、あとはそれをコピペで使えます。つまり、csv形式でどんどんいろいろなデータを保存していって、図にする時は同じ命令文で読み込みファイル名を変更するだけで、簡単に同じ図が作れます。eps形式のファイルはイラストレータにドラッグ&ドロップで貼付ける事が出来ますが、これはリンクで貼付けられているために、epsファイルの方が更新されれば自動的にイラストレータの図のほうも更新されるのもとっても便利です。たとえば、実験の例数が増えた時も、元のcsvファイルを書き換えて、以前図を作った時のRの命令文をもう一回Rコンソール画面に貼付けてリターンキーを押すだけ。全く同じフォーマットでイラストレータの図の更新が出来ます。

ちなみに棒グラフはもうちょっと面倒くさくて、
postscript("出力したいファイル名.eps", horizontal = FALSE, onefile = FALSE,paper = "special", height = 4, width = 3);
data<-read.csv("拡張子csv付き読み込みたいファイル名")
average<-apply(data, 2, mean, na.rm = T)
stdev<-apply(data, 2, sd, na.rm = T)
bar<-barplot(average, ylim=c(0,max(average+stdev)))
arrows(bar, average-stdev, bar, average+stdev, angle = 90, length = 0.1)
arrows(bar, average+stdev, bar, average-stdev, angle = 90, length = 0.1)
dev.off()


あー面倒くさ…という感じですが、いちおうこれでエクセル風の図を書こうと思えば、書く事は出来るようです。ただ、棒グラフにしてしまうと、いろいろな情報が消えてしまっている事が分かると思います。そもそも、nがいくつか、図からは分かりません。
(追記:また、エクセルだとエラーバーをつけるのにいちいち標準偏差を計算したセルを作って、グラフでエラーバーの追加を選んで、標準偏差のセルを指定して、と面倒くさいですね。Rなら、よみこむファイル名を変えてコピペ一発でオーケー)

最近特に思うのは、ここでやったようなエア実験ではなく、特に動物実験のような精神的に重めの実験の場合、一つ一つの実験データへの愛着を表現できるboxplot-beeswarmの方がしっくり来るなあ、ということです。例えば、このエア実験でも、KOのくせに一匹だけWTとかわらないけしからん奴がいますが、それが棒グラフでは分かりません。じっさいそういうことは往々にして起きるのですね。こそっと無かった事にしたくなったりもしますが、苦労した実験ほど一つ一つのデータに愛着が出てきますし、そのデータのすべてを論文で表現したい。そういう要望にRは簡単に答えてくれます。

あと、Rでグラフを書く、というのは、コマンドを入力して命令を実行するという点で、NGSデータのなんちゃって解析に通じるものがあるような気がします。これからはマッピングから普通の発現量解析ぐらいまでなら実験屋も普通にやらなければいけない時代だと思いますし、NGS解析へのハードルを低くするためにも、学生さんは特に、早いうちからエクセルでなくRで作図をする習慣を付けてみられてはいかがでしょうか!とりあえずデータ(WTとKOの2条件でなくても構いません)のcsvファイルを作って、上のRのコマンドをコピペで貼付けて実行してみて下さい。その有用性がすぐ分かると思います。

中川

No comments:

Post a Comment