ex2 - nibb-unix/gitc202502-unix GitHub Wiki
-
まずコンソール上で
women
とタイプしてデータを表示せよ。women
データは身長(height)がinch、体重(weight)がpound であらわされている。これを、身長をcm、体重をkg の単位に直したい。以下の手順でこれを行え。-
women
から身長の列を抜き出し、これをcm に変換して、h
という変数に代入せよ。ただし、1 inch=2.54cm である。 -
women
から体重の列を抜き出し、これをkg に変換して、w
という変数に代入せよ。ただし、1 pound=0.454kg である。 -
data.frame(height=h, weight=w)
によって新しいデータフレームを作り、women2
という変数に代入せよ。
-
-
前問で作成した
women2
の各行について、その身長と体重からボディマス指数(BMI)を計算せよ。ただし、体重w
kg、身長h
m (cm ではない)の人のBMI はw/h^2
で定義される。
-
R 入門の講義で用いた
cancer
データを使って、以下の問題を考えよう。変数cancer
が残っていない場合は、作業ディレクトリを~/デスクトップ/gitc/data/2_R
に変更してからread.table
を使って読み込むこと(テキスト「データフレームの読込み1」)。- 男性で喫煙歴がある人のデータを抜き出し、結果を
cancer.subset
という変数に代入せよ。何人いるか。 - それらの人の
gene1
の発現データを取り出し、その平均値を計算せよ。 - 抽出した結果をタブ区切りテキストとして
cancer.subset.txt
というファイルに保存せよ。
- 男性で喫煙歴がある人のデータを抜き出し、結果を
-
散布図
-
gene1
とgene2
の散布図を作成し、gender
によって点を色分けせよ。 - 散布図に回帰直線を引け。この回帰直線へのあてはめは、有意水準を 0.01 として有意であると言えるか。
-
-
* テキストでは、gene1 の発現量
gene1
が性別gender
によって違いがあるという結論が t検定で得られ、また癌のステージstage
によっても違いがあるという結論が分散分析から得られた。ただし、癌のステージの中で明らかな違いがあるのは stage III のみであった(これはboxpot (gene1 ~ stage, cancer)
で確認できる)。 そこで、gender
の効果を考慮しつつstage
の比較を行うため、Trellis Plot の技法を使ったプロットを作成してみよう。これを行うlattice package
は R に標準で含まれているが、使う際にはライブラリのロードが必要である。> library(lattice) > bwplot(gene1 ~ stage | gender, cancer)
bwplot
は boxplot
と同様に箱ひげ図を作成するが、特定の因子によって条件付けしたプロットを作成できる。ここでは、
gender
によってまず被験者を female
と male
に分けて、そのそれぞれで箱ひげ図を作成している。この結果から
stage
の gene1
の発現量への効果について、どのような結論が得られるか考察せよ。
-
* 発現量の相関
-
cancer
データから各患者のgene1
からgene6
の発現量を抜き出した部分データフレームを作成し、変数expr
に代入せよ。 - 各遺伝子間の発現量の相関(散布図を描いたときに傾きを持つ直線上に分布する傾向)の強さは相関係数によって表される。相関係数は-1 から1 までの値を取り、0 が無相関を表す。相関係数が負の値のときは、傾きが負、すなわち一方が大きくなれば他方が小さくなる関係を表す。R では、行列の各カラム間の相関係数は、
cor
関数によって一度に計算できる。これを用いてexpr
の各カラム間の相関係数を計算せよ。 - 相関係数の絶対値が 0.5 以上のときに強い相関があるとして、
gene1
からgene6
を、発現の相関の強さによっていくつかのグループに分けることができるかを検討せよ。ただし、絶対値をとるのはabs
関数で行える。
-
-
与えられたベクトルに対し、二乗平均平方根(
root mean square
)を計算する関数をRMS
という名前で作成せよ。ただし、二乗平均平方根は、ベクトルの各要素を二乗した値の平均値の平方根であり、与えられた値(ベクトル)の平方根をとる関数はsqrt
である。また、関数はエディタを使って作成すること。作成した関数を使ってRMS(1:5)
を計算せよ。 -
* 「関数の作成(2)」のスライドで使用した
plotAll
関数について考えよう。- プログラムのソースコード(
plotAll.R
)を直接読み込むのではなく、エディタで開いてからマウスでコマンド全体を選択して実行してみよう(「エディタからのコマンドの入力と実行」参照)。これでplotAll
関数が定義される。これを用いてplotAll(cancer[,1:4])
を実行せよ。 -
plotAll
関数は、引数が一つのときは、そのデータフレーム内での総当たりのプロットを作成するが、対角線上とそれ以外とでは異なるコマンドでプロットを作成している。左上のプロット、およびその下の2行1列目のプロットと同じプロットを直接作成するplot
コマンドはそれぞれどのようなものか、plotAll.R
のプログラムから考えてみよ。ただし、タイトル(main
)やラベル(xlab,ylab
)をつけるところは難しいので無視してよい。
- プログラムのソースコード(