オミックス統計学入門2014

  • 京都大学大学院医学研究科の修士対象講義は、2012年度に「インフォマティクス」2013年度に「統計学処理の基礎概念」を扱っています。2014年度は、遺伝疫学やオミックスデータ解析の論文の主張を読み取ったり、それを臨床展開することを念頭に置いた「解析初心者」を相手にした一番「簡単な」内容になる予定です(こちら)。
  • そのテキストの1つ目
  • Rmdフォーマットで書いてepub化してみました

(こちら)

  • 以下をRmdファイルとして保存してknitr()するだけ(やり方解説)
  • これで90分1回分かなー
  • こちらにそのうち現れる予定

# 関連因子解析とその臨床応用の基本
ここでは、因子が因子と関連があることと、ある因子についての情報を知りえたときに、その因子と関連のある別の因子について予測するということに関する、基礎事項を扱います。

「関連がある」ことが論文で報告されているときに、そのような関連はどのように示されるのかという点は前者に、
「関連すると報告された因子」を臨床に活用する場合にどう考えるのかという点は後者に相当します。

この基本を22列の分割表を例にして扱います。

## 分割表の基本:2行2列の分割表
### 行と列
| |A | B | 行の和 |
|:---:|:---:|:---:|:----:|
|**X**|  $n_{X,A}$ | $n_{X,B}$ |$n_{X}$ |
|**Y**| $n_{Y,A}$ | $n_{Y,B}$ | $n_{Y}$ |
|**列の和** | $n_{A}$  | $n_{B}$ | $n$ |

分割表の基本は2x2分割表です。行X、行Yと2行あり、A列、B列と列数も2です。
行の和、列の和は表の周辺にある数なので、周辺度数と言います。

## 行と列に関する2つの見方
### 関連
#### 関連と掛け算、期待値

行と列とに関連がないときには、行の和と列の和との情報(周辺度数)だけがあれば、表のセルの値を決めることができると考え、その値を「関連がない」という仮定の下での期待値と言い、そのような値で出来た表を「関連がない」という仮定の下での期待値表と言います。

|期待値表 |A | B | 行の和 |
|:---:|:---:|:---:|:----:|
|**X**|  $ne_{X,A}=\frac{n_X \times n_A}{n}$ | $ne_{X,B}=\frac{n_X \times n_A}{n}$ |$n_{X}$ |
|**Y**| $ne_{Y,A}=\frac{n_X \times n_A}{n}$ | $ne_{Y,B}=\frac{n_X \times n_A}{n}$ | $n_{Y}$ |
|**列の和** | $n_{A}$  | $n_{B}$ | $n$ |

#### 関連の強さ
##### $\chi^2$とp値
関連の強さは「関連がない」という仮定の下での期待値から、観測表がずれている程度で測ります。

$\chi^2 = \frac{(n_{X,A}-ne_{X,A})^2}{ne_{X,A}}+\frac{(n_{X,B}-ne_{X,B})^2}{ne_{X,B}}+\frac{(n_{Y,A}-ne_{Y,A})^2}{ne_{Y,A}}+\frac{(n_{Y,B}-ne_{Y,B})^2}{ne_{Y,B}}$

$\chi^2 = \sum_{i=X,Y,j=A,B}\frac{(n_{i,j}-ne_{i,j})^2}{ne_{i,j}}$

と書くこともできます。
分割表のセルの値がちょうど期待値になっているときに$\chi^2=0$であり、それ以外は必ず$\chi^2>0$となっています。

ずれの程度を計算する方法として、このようにすると好都合であり、この値を、2x2表の行と列とが関係ないかどうかを測るための$\chi^2$(カイ二乗値)と言います。

$\chi^2$値を用いて、「帰無仮説が正しいとすると、観測表が得られるのは珍しいことになるから、帰無仮説は信じないことにしよう〜帰無仮説の棄却」をするときには、$\chi^2$値をp値に変換します。
p値は小さいほど「帰無仮説を信じない方がよい」ことになります。

p値の小ささは「帰無仮説を信じない方がよい」程度の指標になりますが、関連の強さを評価するには、次のオッズ比も必要です。

##### オッズ比

$OR=\frac{n_{X,A}n_{Y,B}}{n_{X,B}n_{Y,A}}$という値をオッズ比と言います。

この値は、分割表のセルの値がちょうど期待値になっているときに$OR=1$になり、それ以外では、$1$より大きくなったり、小さくなったりします。$OR,\frac{1}{OR}$の値が$1$から離れれば離れるほど、帰無仮説から遠いことになります。

関連のありなし、関連の強さを知るためには、$\chi^2$とそれに対応するp値とを使って、帰無仮説が正しくないと信じるための根拠を与え、関連の強さを表す数値としてオッズ比を求めます。

行と列とを入れ替えても値が変わらないことにも注意します。

#### 関連の相対性、行と列の入れ替え
(A,B)の持ち具合と(X,Y)の持ち具合に関連があるかどうかを問題にします。
(A,B)(X,Y)とは対等なので、行と列とを入れ替えても構いません。

| |X | Y | 行の和 |
|:---:|:---:|:---:|:----:|
|**A**|  $n_{X,A}$ | $n_{X,B}$ |$n_{A}$ |
|**B**| $n_{Y,A}$ | $n_{Y,B}$ | $n_{B}$ |
|**列の和** | $n_{X}$  | $n_{Y}$ | $n$ |

関連の強さを表す$\chi^2$の値は、行列を入れ替えても変わりません。

### 因果・条件、感度・特異度、尤度・尤度比、事前確率・事後確率、PPV・NPV
#### 行と列との入れ替えは、不可
関連を考えるときには、行と列とを入れ替えることが可能でしたが、今度は入れ替えてはいけない場合を扱います。
XであるならばA(または)B、YであるためにA(またはB)である、というような場合には、(X,Y)は原因や条件を表し、(A,B)はその結果を表しています。
このような場合は、(X,Y)(A,B)とを入れ替えることはできません。

以降では、原因・条件とその結果とを問題にするときには、原因を行((X,Y)の方)に、結果を列((A,B)の方)に取ることにします。

#### 感度と特異度、条件付き確率
次のような疾患診断のための検査を考える。

| |A(検査が陽性である) | B(検査が陰性である) | 行の和 |
|:---:|:---:|:---:|:----:|
|**X(病気であるならば)**|  $n_{X,A}$ | $n_{X,B}$ |$n_{X}$ |
|**Y(病気でないならば)**| $n_{Y,A}$ | $n_{Y,B}$ | $n_{Y}$ |
|**列の和** | $n_{A}$  | $n_{B}$ | $n$ |

病気であるという条件の下(X)での検査の陽性(A)(条件付き確率)$\frac{n_{X,A}}{n_{X}}$と計算され、それは感度と言われる。
同様に病気でないという条件の下(Y)での検査の陰性(B)(条件付き確率)$\frac{n_{Y,B}}{n_{Y}}$と計算され、それは特異度と言われる。

#### PPV(Positive Predictive Value;陽性的中率)とNPV(Negative Predictive Value;陰性的中率)、尤度・尤度比、事前確率・事後確率
次のような疾患診断のための検査を考える。

| |A(検査が陽性である) | B(検査が陰性である) | 行の和 |
|:---:|:---:|:---:|:----:|
|**X(病気であるならば)**|  $n_{X,A}$ | $n_{X,B}$ |$n_{X}$ |
|**Y(病気でないならば)**| $n_{Y,A}$ | $n_{Y,B}$ | $n_{Y}$ |
|**列の和** | $n_{A}$  | $n_{B}$ | $n$ |

> 「病気であると、検査が陽性になる」

と考えているので、「病気である・ない」を行に、「検査の陽性・陰性」を列にとっている。

##### PPV
検査が陽性(A)であったという事実が与えられた下で、病気である(X)か、病気でない(Y)かは、それぞれ

> 病気である条件の下での検査の陽性率(条件付き確率)

> 病気ではない条件の下での検査の陽性率(条件付き確率)

であり、$\frac{n_{X,A}}{n_{X}}$,$\frac{n_{Y,A}}{n_{Y}}$と計算される。
このとき、この2つの値は、「検査が陽性であるという事実があるとき」の病気である・ないという仮説の尤度と呼ばれる。

2つの尤度の比は検査が陽性のときの尤度比と呼ばれ、$LL(X/Y|A)=\frac{\frac{n_{X,A}}{n_{X}}}{\frac{n_{Y,A}}{n_{Y}}}=\frac{n_{X,A}}{n_{Y,A}}\times \frac{n_{Y}}{n_X}$である。

この検査が陽性のときの尤度比は、検査結果から病気であるかどうかを判断するときに役に立つ値である。

検査結果が無かったときに病気であるかないかを$\frac{Pre(X)}{Pre(Y)}$の比で想定していたとしたら、$\frac{Pre(X)}{Pre(Y)}\times LL(X/Y|A)$に考えを改める、という意味がある。

実際、検査をする前に、$\frac{n_{X}}{n_{Y}}$の比であると思っていたとすると

> $\frac{n_X}{n_Y}\times LL(X/Y|A) = \frac{n_X}{n_Y}\times \frac{n_{X,A}}{n_{Y,A}}\times \frac{n_{Y}}{n_X} = \frac{n_{X,A}}{n_{Y,A}}$

となる。

検査をする前に思っていた比$\frac{z}{w}$$z,w$を使って$\frac{z}{z+w}$とすると、これは、検査前に病気であると考える「事前確率」。

また、検査後の比$\frac{n_{X,A}}{n_{Y,A}}$を使った、$\frac{n_{X,A}}{n_{X,A}+n_{Y,A}} = \frac{n_{X,A}}{n_A}$は「事後確率」。

この検査が優性のときの尤度比と同様に、$\frac{n_{X,A}}{n_A}$も病気であるかないかの判断に役立つ。これをPPVと言う。

##### NPV

同様に、検査が陰性(B)であったという事実が与えられた下で、病気である(X)か、病気でない(Y)かは、それぞれ
> 病気である条件の下での検査の陰性率(条件付き確率)

> 病気ではない条件の下での検査の陰性率(条件付き確率)

であり、$\frac{n_{X,B}}{n_{X}}$,$\frac{n_{Y,B}}{n_{Y}}$と計算される。
このとき、この2つの値は、「検査が陽性であるという事実があるとき」の病気である・ないという仮説の尤度と呼ばれる。

2つの尤度の比は検査が陰性のときの尤度比と呼ばれ、$LL(X/Y|B)=\frac{\frac{n_{X,B}}{n_{X}}}{\frac{n_{Y,B}}{n_{Y}}}=\frac{n_{X,B}}{n_{Y,B}}\times \frac{n_{Y}}{n_X}$である。

この検査が陰性のときの尤度比は、検査結果から病気であるかないかを判断するときに役に立つ値である。

検査結果が無かったときに病気であるかないかを$\frac{Pre(X)}{Pre(Y)}$の比で想定していたとしたら、$\frac{Pre(X)}{Pre(Y)}\times LL(X/Y|B)$に考えを改める、という意味がある。

実際、検査をする前に、$\frac{n_{X}}{n_{Y}}$の比であると思っていたとすると

> $\frac{n_X}{n_Y}\times LL(X/Y|B) = \frac{n_X}{n_Y}\times \frac{n_{X,B}}{n_{Y,B}}\times \frac{n_{Y}}{n_X} = \frac{n_{X,B}}{n_{Y,B}}$

となる。

検査をする前に思っていた比$\frac{z}{w}$$z,w$を使って$\frac{z}{z+w}$とすると、これは、検査前に病気であると考える「事前確率」であるのは、PPVのときと同じ。

また、検査後の比$\frac{n_{X,B}}{n_{Y,B}}$を使った、$\frac{n_{X,B}}{n_{X,B}+n_{Y,B}} = \frac{n_{X,B}}{n_B}$は「事後確率」。

この検査が優性のときの尤度比と同様に、$\frac{n_{X,B}}{n_B}$$1-\frac{n_{X,B}}{n_B}=\frac{n_{Y,B}}{n_B}$病気であるかないかの判断に役立つ。$\frac{n_{Y,B}}{n_B}$をNPVと言う。

## 2行2列分割表の色々な計算値
|名称 || 意味 | 関係 |
|:---:|:---:|:---:|:----:|
|$\chi^2$|$\sum_{i=X,Y,j=A,B}\frac{(n_{i,j}-ne_{i,j})^2}{ne_{i,j}}$ | 帰無仮説からの距離 |p値に換算できる |
|p値| 省略 | 帰無仮説を信じない程度 | $\chi^2$から計算できる |
|オッズ比 | $\frac{n_{X,A}n_{Y,B}}{n_{X,B}n_{Y,A}}$  | 行と列との関連の強さ |$\frac{LL(X|A)}{LL(X|B)}$  |
|感度| $\frac{n_{X,A}}{n_{X}}$ | Xという条件でのAの条件付き確率|A観察のときのXの尤度と同じ|
|特異度|$\frac{n_{Y,B}}{n_{Y}}$| Yという条件でのBの条件付き確率|B観察のときのYの尤度|
|A観察のときのXの尤度|$\frac{n_{X,A}}{n_{X}}$|Xという条件でのAの条件付き確率|感度と同じ|
|B観察のときのXの尤度|$\frac{n_{X,B}}{n_{X}}$|Xという条件でのBの条件付き確率||
|A観察のときのYの尤度|$\frac{n_{Y,A}}{n_{Y}}$|Yという条件でのAの条件付き確率||
|B観察のときのYの尤度|$\frac{n_{Y,B}}{n_{Y}}$|Yという条件でのBの条件付き確率|特異度と同じ|
|$LL(X/Y|A)$|$\frac{n_{X,A}}{n_{Y,A}}\times \frac{n_{Y}}{n_X}$|A観察のときの尤度比(X/Y)||
|$LL(X/Y|B)$|$\frac{n_{X,B}}{n_{Y,B}}\times \frac{n_{Y}}{n_X}$|B観察のときの尤度比(X/Y)||
|Xの事前確率|$\frac{n_X}{n}$|||
|A観察のときのXの事後確率|$\frac{n_{X,A}}{n_A}$||PPVと同じ|
|A観察のときのYの事後確率|$\frac{n_{Y,A}}{n_A}$||1-PPV|
|B観察のときのXの事後確率|$\frac{n_{X,B}}{n_B}$||1-NPVと同じ|
|B観察のときのYの事後確率|$\frac{n_{Y,B}}{n_B}$||NPV|
|PPV|$\frac{n_{X,A}}{n_A}$||A観察のときのXの事後確率と同じ|
|NPV|$\frac{n_{Y,B}}{n_B}$||B観察のときのYの事後確率と同じ|

## Rの練習
22列の行列を分割表に見立て、それぞれの値の計算をしてみること。
```{r}
# 行列を作る
t <- matrix(sample(10:20,4),2,2)
t
# 周辺度数を出す
n.row <- apply(t,1,sum)
n.col <- apply(t,2,sum)
n <- sum(t)
n.row
n.col
n
# 期待値表を作る
t.e <- n.row %*% t(n.col) / n
t.e
# 期待値表の周辺度数を確認する
apply(t.e,1,sum)
apply(t.e,2,sum)
# chi^2
chi2 <- sum((t-t.e)^2/t.e)
chi2
# p値化する
pchisq(chi2,df=1,lower.tail=TRUE)
# chisq.test()を使う。ただし、Yates補正はしない
chisq.test(t,correct=FALSE)
# OR
t[1,1]*t[2,2]/(t[1,2]*t[2,1])
# 感度
t[1,1]/n.row[1]
# 特異度
t[2,2]/n.row[2]
# LL(X/Y|A)
t[1,1]/t[2,1] * (n.row[2]/n.row[1])
# Xの事前確率
n.row[1]/n
# PPV
t[1,1]/n.col[1]
# NPV
t[2,2]/n.col[2]
```