ex2 - nibb-unix/gitc202502-unix GitHub Wiki

復習問題2 R

お手元のPCで、Rを使って解いてください

印は応⽤問題です。時間に余裕があればトライしてみてください)
(基本演算編)
  1. まずコンソール上で women とタイプしてデータを表示せよ。women データは身長(height)がinch、体重(weight)がpound であらわされている。これを、身長をcm、体重をkg の単位に直したい。以下の手順でこれを行え。

    1. women から身長の列を抜き出し、これをcm に変換して、h という変数に代入せよ。ただし、1 inch=2.54cm である。
    2. women から体重の列を抜き出し、これをkg に変換して、w という変数に代入せよ。ただし、1 pound=0.454kg である。
    3. data.frame(height=h, weight=w) によって新しいデータフレームを作り、women2 という変数に代入せよ。
  2. 前問で作成した women2 の各行について、その身長と体重からボディマス指数(BMI)を計算せよ。ただし、体重 w kg、身長 h m (cm ではない)の人のBMI はw/h^2 で定義される。

(統計解析編)
  1. R 入門の講義で用いた cancer データを使って、以下の問題を考えよう。変数 cancer が残っていない場合は、作業ディレクトリを ~/デスクトップ/gitc/data/2_R に変更してから read.table を使って読み込むこと(テキスト「データフレームの読込み1」)。

    1. 男性で喫煙歴がある人のデータを抜き出し、結果を cancer.subset という変数に代入せよ。何人いるか。
    2. それらの人の gene1 の発現データを取り出し、その平均値を計算せよ。
    3. 抽出した結果をタブ区切りテキストとして cancer.subset.txt というファイルに保存せよ。
  2. 散布図

    1. gene1gene2 の散布図を作成し、gender によって点を色分けせよ。
    2. 散布図に回帰直線を引け。この回帰直線へのあてはめは、有意水準を 0.01 として有意であると言えるか。
  3. テキストでは、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) 
    

bwplotboxplot と同様に箱ひげ図を作成するが、特定の因子によって条件付けしたプロットを作成できる。ここでは、 gender によってまず被験者を femalemale に分けて、そのそれぞれで箱ひげ図を作成している。この結果から stagegene1 の発現量への効果について、どのような結論が得られるか考察せよ。

  1. 発現量の相関
    1. cancer データから各患者の gene1 から gene6 の発現量を抜き出した部分データフレームを作成し、変数 expr に代入せよ。
    2. 各遺伝子間の発現量の相関(散布図を描いたときに傾きを持つ直線上に分布する傾向)の強さは相関係数によって表される。相関係数は-1 から1 までの値を取り、0 が無相関を表す。相関係数が負の値のときは、傾きが負、すなわち一方が大きくなれば他方が小さくなる関係を表す。R では、行列の各カラム間の相関係数は、cor 関数によって一度に計算できる。これを用いて expr の各カラム間の相関係数を計算せよ。
    3. 相関係数の絶対値が 0.5 以上のときに強い相関があるとして、gene1 から gene6 を、発現の相関の強さによっていくつかのグループに分けることができるかを検討せよ。ただし、絶対値をとるのは abs 関数で行える。
(関数の作成)
  1. 与えられたベクトルに対し、二乗平均平方根( root mean square )を計算する関数を RMS という名前で作成せよ。ただし、二乗平均平方根は、ベクトルの各要素を二乗した値の平均値の平方根であり、与えられた値(ベクトル)の平方根をとる関数は sqrt である。また、関数はエディタを使って作成すること。作成した関数を使って RMS(1:5) を計算せよ。

  2. 「関数の作成(2)」のスライドで使用した plotAll 関数について考えよう。

    1. プログラムのソースコード( plotAll.R )を直接読み込むのではなく、エディタで開いてからマウスでコマンド全体を選択して実行してみよう(「エディタからのコマンドの入力と実行」参照)。これで plotAll 関数が定義される。これを用いて plotAll(cancer[,1:4]) を実行せよ。
    2. plotAll 関数は、引数が一つのときは、そのデータフレーム内での総当たりのプロットを作成するが、対角線上とそれ以外とでは異なるコマンドでプロットを作成している。左上のプロット、およびその下の2行1列目のプロットと同じプロットを直接作成する plot コマンドはそれぞれどのようなものか、plotAll.R のプログラムから考えてみよ。ただし、タイトル( main )やラベル( xlab,ylab )をつけるところは難しいので無視してよい。
⚠️ **GitHub.com Fallback** ⚠️