MAプロット

2 群間比較用のマイクロアレイデータあるいは RNA-seq カウントデータに対して、横軸を 2 群間の平均発現量、縦軸を 2 群間の発現量の比としてプロットした散布図を MA プロットという。例えば、遺伝子 i について、A 群における発現量が Ai、B 群における発現量が Bi であるとき、その縦軸の M 値と横軸の A 値は次のように計算される。M 値と A 値を計算する際に一般的に対数化した数値を用いる。

\[ M_{i} = \log_{2}\left(\frac{A_{i}}{B_{i}}\right) = \log_{2}(A) - \log_{2}(B) \] \[ A_{i} = \frac{1}{2}\log_{2}\left(A_{i}B_{i}\right) = \frac{1}{2}\left(\log_{2}(A) + \log_{2}(B)\right) \]

1 つの遺伝子が 1 つの点としてプロットされる。以下の図は少し極端なデータに対して MA プロットを描いたものである。大部分の発現量に変動のない遺伝子は灰色の部分にプロットされる。特にハウスキーピング遺伝子などもこの部分におおくプロットされる。また、マゼンタ色でプロットされる遺伝子については、B 群に比べて A 群で高発現している遺伝子や A 群に比べて B 群で高発現している遺伝子を表している。

MAplog

サンプル

MA プロットを描くとき、複製実験がある場合、それらから平均値を計算する。次に、各群の平均値をそれぞれ Ai と Bi とし、上式に基いて M 値と A 値を計算して points 関数でプロットする。

ここで利用するサンプルデータは 2 群間比較用の RNA-seq データであり、A 群 3 replicate、B 群 3 replicate からなる。

#サンプルデータの取り込み
data <- read.table("http://bi.biopapyrus.net/data/count2g.txt", header = TRUE, sep = "\t")

counts <- data[, -1]
rownames(counts) <- data[, 1]

#正規化
#量的データの合計が1000000となるようにする。
rpm <- sweep(counts, 2, 1000000 / colSums(counts), "*")

#サンプルの平均を対数化する。
mean.A <- log2(rowSums(counts[, 1:3]))
mean.B <- log2(rowSums(counts[, 4:6]))

#M-Aプロット座標
x <- (mean.A + mean.B) / 2
y <- mean.A - mean.B

#描画エリアを準備
plot(0, 0, type = "n", 
     xlab = "A value", ylab = "M value",
     main = "MA plot",
     xlim = c(0, 15), ylim = c(-6,6)
)

#M値とA値をプロット
points(x, y, pch = 20,cex = 0.5)
MAplog