Skip to content

answer ex2

Sugichang edited this page Dec 19, 2024 · 1 revision

復習問題2 R

(基本演算編)
    h <- women[,1] * 2.54
    
    w <- women[,2] * 0.454
    
    women2 <- data.frame(height=h, weight=w)
    
  1. women2[,2] / (women2[,1]/100)^2
    
    • 値は 24.05638 23.65213 23.45671 ... 22.19570 22.26216 となる。
(統計解析編)
    1. 男性で喫煙歴がある人のデータを抽出し、その行数を数える。A %in% B (A がB の要素のうちどれかと一致する)を使う。

      cancer.subset <- subset(cancer, gender=="male" & smoking %in% c("former", "current"))
      nrow(cancer.subset)
      

      (→62 個)

    2. cancer.subset からgene1 の発現データを抜き出してその平均値をとる。

      mean(cancer.subset$gene1)
      

      (→11.44719)

    3. タブ区切りテキストファイルとして保存。

      write.table(cancer.subset, sep="¥t", file="cancer.subset.txt")
      
    1. gene1gene2 の散布図を作成し、gender によって点を色分けする。

      • 解1) x 軸、y 軸のデータを指定する一般的な書き方。xlab, ylab で、各軸のラベルを見やすく書き直している。

        plot(cancer$gene1, cancer$gene2, col=cancer$gender, xlab="gene1", ylab="gene2")
        
      • 解2) モデル式を使った書き方。

        plot(gene2 ~ gene1, cancer, col=gender)
        
      • (参考1) 解1 は attach を使うと以下のように簡潔に書ける。attach は変数名をデータフレームからとる(変数名のサーチパスに加える)ことを指示する。

        attach(cancer)
        plot(gene1, gene2, col=gender)
        
      • (参考2) プロットの色を変更したい場合は以下のような書き方がある。

        color <- c("red", "blue")  #色を1が赤、2が青に設定する
        plot(gene2 ~ gene1, cancer, col=color[gender])
        
        • (この動作を理解するために、color[cancer$gender] を実行して見よ)
    2. 散布図に回帰直線を引く。まず lm で線形モデルへのあてはめを行い、結果を変数(ex.lm)に格納する。それを用いてabline で回帰直線を引く。

      ex.lm <- lm(gene2 ~ gene1, cancer)
      abline(ex.lm)
      summary(ex.lm)
      
    • 回帰直線の有意性については、summary で確認する。出力結果の最後の行からp-value は0.3965 と有意水準より大きいので、有意ではない。
  1. gender によってデータを分割すると、stage による違いが観察されなくなった。これは、もともと観察されたstage III でのgene1 の発現量の減少は、stage III の患者がgene1の発現が低い女性に偏っているためであることを示唆している。このことは subset(cancer, stage=="stage III") によって確認できる。

    1. ,ii : cancer から5〜10 カラムを抜き出して変数 expr に代入し、corを実行する。

      expr <- cancer[,5:10]
      cor(expr)
      
    2. 相関係数の絶対値が0.5 以上であるかどうかは、以下のコマンドで調べられる。

      abs(cor(expr)) >= 0.5
      
(関数の作成)
  1. 関数は以下の通り。ただし仮引数 x は(関数内で一貫していれば)どんな名前に置き換えてもよい。RMS(1:5) の値は 3.316625 となる。

    RMS <- function(x) {
      return( sqrt(mean(x^2)) )
    }
    
    1. プログラム中に2つある plot コマンドのうち、最初のものは対角線上(x 軸と y 軸の名前が等しい場合)、2番目がそれ以外のプロットを作成する。タイトルやラベルを無視すると以下の通りになる。
      • (左上)plot(cancer[,1])
      • (2行1列目)plot(cancer[,2], cancer[,1])
    • タイトルやラベルまでつけると以下のようになる。
      • (左上)plot(cancer[,1], main=names(cancer[,1:4])[1])
      • (2行1列目) plot(cancer[,2], cancer[,1], xlab=names(cancer[,1:4])[2], ylab=names(cancer[,1:4])[1])
Clone this wiki locally