「モデルのあてはめ」でBy変数を使ったときに表示される「効果の要約」での「FDR」は、あくまでBy変数の各水準内だけでの検定に対するFDR調整p値となっています。
なお、FDR(偽発見率)は、FWER(familywise error rate)、つまり、「真の帰無仮説のうちで、いずれか1つが棄却される確率」を制御するものではありません。あくまで、『「棄却された帰無仮説の個数のなかで真の帰無仮説の個数が占める割合」の平均』を制御するために、Benjamini-Hochberg法で計算されたFDR調整p値です。
■JMP 19より、FDR Adjustという関数が追加されました。プログラミングが必要となりますが、この関数を使うと、生のp値(未調整のp値)から、FDR調整されたp値を計算することができると思います。以下にその手順を示します。
なお、下記のスクリプトはあくまでサンプルとして示しているものです。また、このスクリプトに対する責任は私個人だけにあり、所属組織は責任を負いません。
(1) [モデルのあてはめ]で回帰分析を実行します。
(2) 「パラメータ推定値」の表で右クリックすると呼び出されるポップアップメニューより、[連結したデータテーブルの作成]を選択します。この操作により、パラメータ推定値やp値が含まれたデータテーブルが作成されます。
(3) 上記(2)で作成されたデータテーブルのウィンドウをアクティブにした状態で、[ファイル]→[新規作成]→[JSLスクリプト]を選択します。スクリプトエディタが呼び出されます。
(4) 下記のコードを、(3)のスクリプトエディタにコピー&ペーストします。
Names Default To Here(1);
/* 現在、アクティブなデータテーブルに対する参照を取得 */
dt = Current Data Table();
/* 切片項の行を選択 */
dt << Select Where( :項 == "切片" );
/* 切片項の行を削除 */
dt << Delete Rows;
/* 未調整p値の取得 */
pval = Column(dt, "p値(Prob>|t|)")<<Get As Matrix;
/* JMP19の新機能 FDR Adjust関数を使って、FDR調整p値を求める */
FDR = FDR Adjust(pval);
/* FDRの列を追加 */
dt << New Column("FDR", Values(FDR), Format( "PValue", 12 ));
(5) [編集]→[スクリプトの実行]を選択します。
上記(2)のデータテーブルに、「FDR」という列が追加されるはずです。
■By水準ごとではなく、データ全体に対する検定も含まれてしまいますが、JMP 19より「応答のスクリーニング」にサブグループ分析の新機能が追加されました。
(1) [分析]→[モデルのあてはめ]を選択します。
(2) ウィンドウ右上の[手法]より[応答のスクリーニング]を選択します。
(3) 応答変数(Y変数)や効果を指定します。
(4) [サブグループ化]にBy変数を指定します。
(5) [実行]ボタンをクリックします。
こちらの結果の「FDR p値」は、By水準ごとだけではなく、データ全体に対する検定も加味したFDR調整p値となっています。
なお、繰り返しになりますが、FDR調整p値は、FWERを制御するものではなく、偽発見率を制御するものです。
Yusuke Ono (Senior Tester at JMP Japan)