読者です 読者をやめる 読者になる 読者になる

疫学と医療統計学と遺伝学と時々、大学院生活

疫学を専門とする大学院生の研究に関する備忘録的ページ。

R package'metap'を使用して、p値の統合をする

epidemiology Genetic epidemiology statistics R programming

こんにちは。今回は異なる環境や場所で行った同様の実験や研究によって導かれたp値を統合しようという試みがあった時の対処法について、Fisher's methodを取り上げて、今回は説明します。

FIsher's methodとは

i個あるp値のlogをとった値を足し合わせて、それに-2をかける。この統計量が2kのカイ二乗分布に従うと考えて、検定する。
 {\displaystyle -2 \sum_{i=1}^{k} \log(p_i) \sim \chi^2_{2k}}

Rでの記述

dtというデータがあり、今回はA、Bという二つの異なる場所で行われた実験で10個の項目を記録したと考えることにする。
以上の条件下では、metapパッケージのsumlog()関数を用いて下記のように記述できる。

#パッケージの読み込み
library(metap)

#metapのsumlog()関数を用いるとFisher's methodによるp値の統合が可能になる。
for (i in 1:10)
{
Pval = c(dt$A[i], dt$B[i])
dt$Pval[i] = sumlog(Pval)$p 
}

データが大きくなると、かなり時間もかかるのでご注意ください。なお、その他にも良い方法があれば、お教え下さい。
注意するのは、sumlogには1つの数値ベクトルしか入らないので、何かに格納(今回の例では"Pval")してから実行するのが良さそうです。

20160923
RF