読んだ。
Cell. 2016 Sep 8;166(6):1500-1511.e9
TIL (Tumor infiltrating lymphocyte) の発現解析をして、Activate/Dysfunction の順位付けをしている。
その中でminimal hypergeometric というものがあった。
Gene Ontology 解析ではannotation が有意に出現回数が多いかどうか、という検定が超幾何分布を使って行われる。袋の中にカードがあってそれを繰り返し非復元抽出する、というシチュエーションでよく使われる。
PCA をしてPC1 とPC2 でそれぞれActivate/Dysfunction, ActivateかつDyfunction/neither の2軸4パターンに分ける。
これはy=-x とy=x の対角線で軸を構成しており、x軸との相関係数がスコアとする。
このとき、四隅にある遺伝子がクラスター内で上位にくるかどうかをmHG の拡張であるXL-mHG test で検定している。
そもそもmHG はなにか、というと、PLoS Comput.Biol.,3(2007),p.e39 でシークエンスのモチーフ解析をしている。モチーフがあれば標識されて蛍光強度が強く検出されがちだから、得られた配列をシグナルでソートして、上位をtarget, 下位をbackground として、モチーフがあるかを1、ないかを0 とする。target とする、のシグナル閾値は適当に設定できる。
全体の配列数を, そのうちの真のモチーフをもつ配列が, target に分類した配列数を, のうちの真のモチーフ数を とすると、target のなかで真のモチーフ数の
変数 は
はいろいろ動かせるから多重検定補正が必要になるが、あとはなんやかんややってmHG score とp値が出せる。
R だとmHG パッケージでできる。
上位からいろんなパターンを試せるsemiparametric な手法なのでお手軽だが、試せすぎて柔軟すぎる感があるということで、1がいくつ含まれるかの と上位どれだけかの のふたつの変数を加えたXL-mHG test というものがあるらしい。
The XL-mHG test for enrichment: Algorithms, bounds, and power
The XL-mHG Test For Enrichment: A Technical Report
PLoS One. 2015 Nov 17;10(11):e0143196
Python だとxlmhg でできる。