-----------------------------------------
系統推定に関わる統計的検定について(導入)
-----------------------------------------
今回の講義で使用している PAUP* version 4.0 には,系統推定に関わるさまざまな統計学的検定を行なうツールが備わっています.そのいくつかを下記に整理しておきます.
PAUP* で系統樹の信頼性評価を行なうためのツール
------------------------------------------
●ブーツストラップ(「Bootstrap」コマンド)
------------------------------------------
元形質データDの列(形質)から「重複」を許して同数だけ無作為再抽出をするという試行を複数回反復し(D1,D2,...),それぞれの試行(Di)ごとに推定された系統樹(Ti)における枝(クレード)の出現回数(ブーツストラップP値)をカウントする.
ブーツストラップP値はそのクレードが真実である証しではなく,単に元データがそのクレードをどれくらい支持しているかの指標とみなすべきである.PAUP*を用いてブーツストラップを実行すると,アウトプットに多数決合意樹(majority-rule consensus tree)が出力されるが,そ れ を 信 じ て は い け な い.見るべきは各クレードの出現頻度(P値)表である.多数決合意樹をブーツストラップ分析の結果として公表している例が多いが,それはまちがいである.なぜなら,ブーツストラップで得られた系統樹は元データそのものを用いて推定された系統樹ではないからだ.正しくは,元データDから推定された最適系統樹Tの枝ごとにそのブーツストラップP値を対応させることで,最適系統樹の枝ごとの信頼性を評価する.
PAUP* のコマンドラインでの入力例は下記の通り:
Bootstrap NReps=10000 #ブーツストラップ試行回数(数千回〜)
ConLevel=50 #P値50%以上のクレードのみカウント
NChar=Current #ブーツストラップはデータ全体
GrpFreq=Yes #クレードごとの頻度表を表示
Search=Heuristic / Swap=NNI MulTrees=No;
#発見的探索による系統樹推定
なお,ブーツストラップの際の発見的探索には時間をかける必要はなく,むしろ回数をかせいだ方が望ましい.したがって,同スコア解の枚挙をオフ(MulTrees=No)とし,探索時の branch-swapping の規模をデフォルトの TBR よりも小さくする(Swap=NNI あるいは SPR)と計算時間が節約できる.
----------------------------------------
●ジャックナイフ(「Jackknife」コマンド)
----------------------------------------
ジャックナイフでは,ブーツストラップと同じく,元の形質データDの列(形質)から無作為再抽出をするが,その際「重複」は許さない.したがって,元の形質数よりも少ない抽出数を設定する.ジャックナイフにより得られた形質データのそれぞれ(Di:i=1,2,...)ごとに推定された系統樹(Ti)における枝(クレード)の出現回数(ジャックナイフP値)をカウントする.
PAUP* でのコマンドライン指定の例は下記の通り:
Jackknife NReps=10000 #ジャックナイフ試行回数(数千回〜)
Resample=Normal #通常の形質列の無作為再抽出
PctDelete=50 #再抽出割合%の指定,ここでは50%抽出
ConLevel=50 #P値50%以上のクレードのみカウント
GrpFreq=Yes #クレードごとの頻度表を表示
Search=Heuristic / Swap=NNI MulTrees=No;
#発見的探索による系統樹推定
ブーツストラップ結果の解釈と同一の注意が,ジャックナイフ結果の解釈についてもあてはまる.得られたクレードのP値表を元データから推論された最適系統樹の枝と対応させること.
「Jackknife」コマンドには,Parsimony jackknife(Farris et al. 1995)のオプションが付いている.これは「Resample=Jac」の設定によって実行される計算で,形質列のサンプリングのし方が,通常のジャックナイフとは異なる(後述).巨大系統樹の推定によく用いられる手法だが,PAUP* ではもともと大きなサイズのデータを読みこませること自体が不可能だろうが.
---------------------------------
●樹長分布――g1統計量と崩壊指数
---------------------------------
樹長分布(tree-lenghth distribution)とは,最節約法に基づいて計算された系統樹の樹長(tree-length)の頻度分布を指す.最節約系統樹を最小値とする樹長分布は,形質データがもつ系統学的情報を評価する手がかりを与えると同時に,あるクレードに対する一種の信頼性評価のための方法をも与える.
PAUP*では,いくつかの方法により樹長分布を求めることができる:
・網羅的探索法(「AllTrees」コマンド)
AllTreesコマンドはすべての系統樹をもれなくチェックするので,OTU数が10程度であれば,このコマンドを用いて正確な樹長分布を求められる.大域的最節約解のみが必要であれば,より計算時間が短くてすむ分枝限定法(branch-and-bound method:「BandB」コマンド)がPAUP*には実装されている.したがって AllTrees コマンドの存在意義は現在では正確な樹長分布をつくることだけである.
・無作為系統樹サンプリング(「RandTrees」コマンド)
OTU数が多くなると,上述の AllTrees コマンドでは計算が不可能になる.その場合は系統樹集合から無作為に系統樹をサンプリングし(数万個〜数十万個のオーダーで),そのサンプルに基づいて樹長分布を推定するという方法が使える.PAUP*の「RandTrees」はそのためのコマンドである.たとえば:
RandTrees NReps=100000 #系統樹サンプル数を100,000個
FDtype=BarChart; #樹長分布を棒グラフで表示
とコマンドライン入力すると,樹長分布の推定値が得られる.
樹長分布の形を記述する統計量として「g1統計量」が用いられている.これは確率分布の「歪度(skewness)」の尺度であり,元データが系統学的情報(シグナル)を多く含んでいるほど小さい値になる(分布形は右に歪む).逆に,元データが系統学的情報ではなくランダムなノイズ(たとえばホモプラジーの頻発など)を含んでいるほど大きな値をとる傾向がある(分布形は左に歪む).Hillis & Huelsenbeck (1992) はg1統計量を用いた検定のための数表を作成している.PAUP*でも樹長分布を上記のコマンドで出力すると,g1統計量の値が自動的に計算される.
樹長分布を利用したクレードの信頼性評価のひとつに「崩壊指数(decay index)」あるいは「Bremer support 指数」とよばれる数値がある.これは最節約系統樹のあるクレードCを消滅させるのに必要な樹長の増分と定義される.要するにCをもたないという樹形上の制約を科して求めた最節約系統樹の樹長とそういう制約を置かずに推定しクレードCをもつ最節約系統樹の樹長との差が崩壊指数である.
PAUP*にはダイレクトに崩壊指数を計算するコマンドはないが,樹形制約(「Constraints」コマンド)を用いることで結果的に崩壊指数を計算することは可能である.系統樹探索に先立って,最節約分岐図に含まれるある3つのOTUから成るクレードC={1,2,3}の崩壊指数を計算するという状況を考える.このとき:
Constraints Clade_C=((1,2,3));
という特定の単系統性を要求する制約系統樹を指定し,この制約のもとであらためて系統樹探索をする.その結果得られた制約付き最節約系統樹の樹形と元の制約なし最節約系統樹との樹長の差がそのクレードCの崩壊指数である.
-----------------------------------------
●無作為化検定(PTP検定とTPTP検定)
-----------------------------------------
樹長分布の形を示すg1統計量よりももっと直接的に形質データの情報量を調べるために開発された方法が「PTP検定」(permutation tail probability test:Faith & Cranston 1991)である.
PTP検定では,元データに対して「無作為化(randomization)」という操作を施す.もし元データが系統学的情報(共有派生形質)を多く含んでいるとすると,形質列の中で形質状態を無作為化したならばホモプラジー(ノイズ)が増大するため,元データよりも樹長が著しく増加するだろう.一方,元データに情報が乏しく,ノイズが大きければ,たとえ無作為化したとしても,樹長にそれほど変化はないだろう.
したがって,元データの無作為化を複数回実行し,それぞれの試行のもとで得られた系統樹の樹長分布(樹長に関する帰無分布)を作成し,元データから得られた樹長がその帰無分布の下側棄却域(5%あるいは1%)に入ったならば,「元データはランダム・データである」という帰無仮説を棄却しよう,というのがPTP検定の骨子である.
PAUP*では「Permute」コマンドをもちいて形質データを無作為化することができ,PTP検定もこれによって実施することができる:
Permute Test=PTP #PTP検定
NReps=10000 #無作為化試行回数は10,000回
Search=heuristic; #各試行では発見的探索をする
さらに,あるクレードCが存在するという制約の有無のもとでPTP検定を行なうことにより,そのクレードの強度をテストしようというのが「T-PTP検定(topology-dependent PTP test)」である.これについても:
Permute Test=TPTP
NReps=10000
Constraints [constraint-name(e.g.,Clade_C)];
というオプション設定で実施することができる.さらに,二つのクレードの相対的な強度をPTP検定のもとでテストすることも可能:
Permute Test=Compare2
NReps=10000
Constraints [constraint-name1]
Constraints [constraint-name2];
この検定では二つの制約のもとで得られた最節約系統樹の樹長差を無作為化されたデータからつくられた帰無分布に照らしてテストするということになる.