二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法現在、2要因分散分析(グループ×時間)を用いて複数グループのデータを分析していますが、JMPでボンフェローニ法を用いた事後検定を実行する方法を知りたいです。
通常、多重比較にはTukeyのHSD法を用いますが、Bonferroni補正を用いた比較結果も報告する必要があります。
JMPのヘルプドキュメントを確認したところ、一元配置分散分析における複数の比較方法(Tukey法、Dunnett法など)の説明が見つかりました。
しかし、特に「最小二乗平均」プラットフォームにおいて、二元配置分散分析後にボンフェローニ補正を適用する方法について明確な説明を見つけることができませんでした。
以下の点についてご助言いただけますでしょうか?
交互作用が有意である場合、JMPで2要因ANOVA(モデルの適合)後にボンフェローニ補正を用いた単純効果比較を行うための正しい手順は何ですか?
ノンパラメトリックな説明では、ボンフェローニ補正は「各t検定のp値に比較回数を掛ける」と表現されることがある。
この解釈はJMPでも受け入れられますか?それとも、ボンフェローニ補正のための推奨される組み込み方法がありますか?
何かご助言いただければ大変ありがたいです。
どうもありがとうございます。
よろしくお願いします、
基本的なデータ分析とモデリングRe: 二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法こんにちは、 @LossMarmot707 さん。はい、「各 t 検定の p 値を比較回数で乗算する」というのは、どのソフトウェアを使用してもボンフェローニ補正と同じです。しかし、なぜ相互作用がある状態で単純効果を比較したいのですか?これは非常に誤解を招く可能性があります。たとえば、各時点において 2 つのグループ間に大きな差があるかもしれませんが、時点全体で平均するとその差は非常に小さくなります。
追記:または、ボンフェローニ調整を行う別の方法として、[モデル仕様] プラットフォーム([モデル仕様] の横にある赤い三角形)で alpha を (alpha/k に変更します。ここで k は比較の数です)、その後、スチューデントの t 間隔を使用します。
Re: 二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法コメントありがとうございます。
ボンフェローニ補正は、複数の比較を行う際に第一種過誤を制御するための標準的な手法であると理解しています。
相互作用が有意な場合でも、主効果のみを解釈すると、全体的なパターンを誤解する可能性があります。そのため、各時点や濃度レベルなど、各条件ごとに効果を個別に検討することが一般的に推奨されます(つまり、単純な効果を比較します)。
相互作用の存在は、
「一方の要因の影響は、もう一方の要因のレベルによって変化する」
つまり、全体の平均値だけを見ると、データに含まれる重要なパターンを見落としてしまう可能性があるということだ。
したがって、本分析では、これらのパターンを明確にするために、二元配置分散分析に続いて事後比較を用いて、各条件内のグループ間の違いを調べた。
さらに、私がここで最初に質問したのは、統計ソフトウェアJMPを使用してボンフェローニ補正を用いた事後検定を実行する方法についてでした。
とはいえ、ご指摘のとおり、αをα/kに調整し、スチューデントのt検定を用いることは、ボンフェローニ補正を実施する便利な代替手段となり得るでしょう。
Re: 二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法交互作用項の赤い三角形メニューの[テストスライス]オプションで「単純効果検定」を実行でき、 [結合データテーブルの作成]でp値をデータテーブルに出力できます。
(1) [分析] > [モデルの適合]を選択します。
(2)Y変数を設定し、2因子交互作用(例えば「A、B、A*B」)を設定します。
デフォルト設定では、右側にレバレッジプロット(「A」、「B」、「A*B」)が表示されます。
(3)「A*B」の赤い三角形メニューをクリックし、 [テストスライス]を選択します。

You can see F Ratios and the p-values of "simple effect tests". But these p-values are not adjusted for multiplicity.
(4) Right-click on a table for a simple effect test, and select 【結合データテーブルの作成】.

これで、JMPのデータテーブルでテスト結果を確認できるようになりました。
(5)興味のない行を削除し、興味のある行だけを残します。
(6)「Prob>F」の列ヘッダーを右クリックし、 [新しい数式列] > [数式...]を選択します。数式エディタウィンドウが起動します。
(7)次の式を入力してください。

Min(:"Prob > F"n * N Row(), 1);
[わかりました]をクリックすると、数式が適用され、ウィンドウが閉じます。
(8)列名を「Adj. Prob > F」のように変更します。
(9) [編集] > [ジャーナル]を選択します。これで、ボンフェローニ補正済みp値の表を作成できます。

PS
個人的には(強く)「p値を計算するだけ」や「p値がすべて」という考え方はお勧めしません。2つの要因の相互作用を視覚的に把握するためには、より有益なグラフを作成する方法があります。
(A)上記の手順2の後、上部の枠線にある赤い三角形をクリックし、 [因子プロファイリング] > [相互作用プロット]を選択します。相互作用プロットが表示されます。

(B)上記の手順2の後、上部の枠線にある赤い三角形をクリックし、[因子プロファイリング] > [プロファイラー]を選択します。予測プロファイラーで[重ね合わせ相互作用]を選択します。このプロットは、因子が2つしかない場合の相互作用プロットと同じです。ただし、予測プロファイラーはインタラクティブなので、2つ以上の因子をインタラクティブに表示できます。

(C)グラフビルダーを使えば、さらに多くのグラフを作成できます。

多重比較補正を本当に行いたいのであれば、データ収集前にどの対比をテストするかを明確にしておく必要があったと思います。データを見てからテストする対比を選択すると、多重比較補正が正しく行われません。
Re: 二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法テストスライス手順の実行方法について、詳細な説明をいただき、誠にありがとうございました。
ご指導いただき、誠にありがとうございます。ご指示いただいた手順に基づいて分析を進めております。
現在行っている分析に関して、追加の質問をさせていただきたいと思います。
現在、私はJMPを用いて、薬剤投与試験から得られた動物実験データ(血圧、脈拍数など)を分析しています。
測定は毎週行われ、私は20週間分のデータを使って分析しています。
分析のために、
投与された薬剤の種類(グループ)と測定週を要因とする二元配置分散分析を実施しています。
有意な群間差が検出された場合、ボンフェローニ事後検定(Test Sliceを使用した単純効果検定)を実施したいと考えています。
しかし、二元配置分散分析自体は実行できるものの、
Test Sliceを使用した週ごとのグループ比較が期待どおりに表示されないため、その後の事後検定を実行することができません。
特に、
JMPでは、各治療群について、Y軸に測定値、X軸に測定週を示すグラフを分析ウィンドウに表示しません。
そして、これが問題の根本原因かもしれないと私は感じています。
可能であれば、以下の点についてアドバイスをいただければ大変ありがたいです。
考慮すべき潜在的な原因、または確認すべき設定は何ですか?
この状況を解決するために。
ご協力ありがとうございました。
Re: 二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法主要な固定効果を週とグループとし、2因子交互作用項を週*グループと表記します。動物のランダム効果も考慮に入れていると思いますので、それを動物識別と表記します。
Y = Week Group Week*Group Animal ID&Random Effect
モデルにランダム効果を含める場合、デフォルトの強調表示は「最小限のレポート」になります。その場合は、「効果の詳細」アウトラインを開く必要があります。その中に「グループ*週」アウトラインがあります。

または、起動ダイアログで「効果のレバレッジ」を選択する必要があります。

ご自身のデータを試す前に、以下の架空データを使って分析を試してみてください。
(1) [ファイル] > [新規] > [JSLスクリプト]を選択します。スクリプトエディタが開きます。
(2)以下のコードをスクリプトエディタにコピー&ペーストしてください。
Names Default To Here(1);
Random Reset(1111111);
n group = 2;
n animals per group = 10;
n week = 20;
data = [];
id = 0;
For(group = 1, group <= n group, group++,
For(i=1, i <= n animals per group, i++,
id++;
f = Random Normal();
For(week = 1, week <= n week, week++,
y = week + group + f + Random Normal();
If(week>=10 & group==1, y += 10 - week);
data|/=group||id||week||y;
);
);
);
dt = As Table(data, <
<COLUMN names=""></COLUMN>
<P>(3)スクリプトエディタで、 <STRONG>[編集]</STRONG> > <STRONG>[スクリプトの実行]</STRONG>を選択します。<BR /> (4)上記の分析を行い、それがあなたの望むものかどうかを確認してください。</P> <BR /> <P>グループ数が2つの場合は、<STRONG>多重比較</STRONG>オプションを使用して単純効果検定を実行できます。</P> <P>(1) Select the red triangle icon and select <STRONG>多重比較</STRONG>.<BR />(2) Select <STRONG>グループ*ウィーク</STRONG> in <STRONG>効果を選択してください</STRONG>.</P> <P>(3)<STRONG>最小二乗平均プロットを表示するに</STRONG>チェックを入れる。<BR /> (4)<STRONG>相互作用プロットを作成するに</STRONG>チェックを入れる。<BR /> (5) <STRONG>[オーバーレイの条件を選択]</STRONG>で<STRONG>グループを</STRONG>選択します。<BR /> (6) <STRONG>「OK」</STRONG>をクリックします。信頼区間付きの相互作用プロットが表示されます。</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yusuke_ono_2-1779454539349.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_2-1779454539349.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_2-1779454539349.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/104538i41B986728AA6396C/yusuke_ono_2-1779454539349.png" role="button" title="yusuke_ono_2-1779454539349.png" alt="yusuke_ono_2-1779454539349.png" /></span></SPAN></SPAN></P> <BR /> <P>(7) 再度、赤い三角アイコンを選択し、<STRONG>多重比較</STRONG>を選択します。<BR /> (8)<STRONG>推定タイプ</STRONG>の<STRONG>「最小二乗平均スライス推定」</STRONG>を選択します。<BR /> (9)<STRONG>スライスオプション</STRONG>で<STRONG>「スライス条件を指定</STRONG>」を選択します。<BR /> (10) <STRONG>「スライス用語の選択</STRONG><STRONG>」</STRONG>で選択します。<BR /> (11) (ボンフェローニ補正を行う場合)<STRONG>すべてのペアワイズ比較 - スチューデントのt検定</STRONG>を選択します。<BR /> (12) <STRONG>「わかりました」</STRONG>をクリックします。すべての結果が多重度に関して調整されていないことに注意してください。<BR /> (13) <STRONG>「すべてのペアワイズ差」</STRONG>テーブル内で右クリックし、 <STRONG>「結合データテーブルを作成」</STRONG>を選択します。</P> <P>(14)ボンフェローニ補正済みp値と信頼区間を計算する。</P> <BR /> <CODE class=" language-jsl">Min( :"Prob>|t|"n * N Row(), 1 )
:Difference - :Std Error * t Quantile( 1 - 0.05 / (2 * N Row()), :DF )
:Difference + :Std Error * t Quantile( 1 - 0.05 / (2 * N Row()), :DF )
2つの固定効果である主効果を 週 および グループ とし、それらの2因子間交互作用項を 週*グループとします。おそらく、これらの固定効果だけではなく、動物の各個体がもつ変量効果もモデルに含めているものと思います。この変量効果を、動物識別とします。つまり、モデルの効果として、次の4つが含まれているとします。
Y = Week Group Week*Group Animal ID&Random Effect
「モデルのあてはめ」にて変量効果を含めた場合、デフォルトの強調が最小レポートになります. その場合、レポートの効果の詳細アウトラインを開く必要があります。開くと、そのなかにグループ*ウィークアウトラインがあります。

もしくは、起動ダイアログにおいて、強調を効果てこ比にしてください。

自分自身のデータを試す前に、まずは綺麗な疑似データでうまくいくかどうかを試すことをお勧めしたいです。
(1) ファイル > 新規作成 > JSLスクリプトを選択します。 スクリプトエディタが開きます。
(2) 次のコードを、スクリプトエディタにコピペします。
Names Default To Here(1);
Random Reset(1111111);
n group = 2;
n animals per group = 10;
n week = 20;
data = [];
id = 0;
For(group = 1, group <= n group, group++,
For(i=1, i <= n animals per group, i++,
id++;
f = Random Normal();
For(week = 1, week <= n week, week++,
y = week + group + f + Random Normal();
If(week>=10 & group==1, y += 10 - week);
data|/=group||id||week||y;
);
);
);
dt = As Table(data, <
<COLUMN names=""></COLUMN> <P>(3) スクリプトエディタにて、<STRONG>編集</STRONG> > <STRONG>スクリプトの実行</STRONG>を選択します。</P> <P>(4) 前述の分析をしてみて、望みの結果が得られるかを試してください。</P> <BR /> <P><BR />もし2群の場合ならば、<STRONG>多重比較</STRONG>オプションを使うことも考えられます。</P> <P>(1) レポート先頭の赤い三角ボタンをクリックし、<STRONG>多重比較</STRONG>を選択します。<BR />(2) 呼び出されたウィンドウの<STRONG>効果の選択</STRONG>にて、<STRONG>グループ*ウィーク</STRONG>を選択します。</P> <P>(3) <STRONG>最小2乗平均プロットの表示</STRONG>をチェックします。<BR />(4) <STRONG>交互作用プロットを作成する</STRONG>をチェックします。<BR />(5) <STRONG>重ね合わせるモデル項を選択</STRONG>にて、<STRONG>グループ</STRONG>を選択します。<BR />(6) <STRONG>わかりました</STRONG>をクリックすると、信頼区間も描かれた交互作用プロットが作成されます。」</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yusuke_ono_5-1779456371304.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_5-1779456371304.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_5-1779456371304.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/104542i97FD4CA2DD1DB016/yusuke_ono_5-1779456371304.png" role="button" title="yusuke_ono_5-1779456371304.png" alt="yusuke_ono_5-1779456371304.png" /></span></SPAN></SPAN></P> <BR /> <BR /> <P>(7) 再び、レポート先頭の赤い三角ボタンから、<STRONG>多重比較</STRONG>を選択します。<BR />(8) <STRONG>推定値の種類</STRONG>で、<STRONG>最小2乗平均の輪切り推定値</STRONG>を選択します。<BR />(9) <STRONG>輪切りのオプション</STRONG>にて、<STRONG>輪切りする項を指定する</STRONG>を選択します。<BR />(10)<STRONG> 輪切りする項の選択</STRONG>にて、<STRONG>週</STRONG>を選択します。<BR />(11) (もし後ほどBonferroni調整を適用するのであれば) <STRONG>各ペアの比較 - Studentのt検定</STRONG>を選択します。<BR />(12) <STRONG>わかりました</STRONG>をクリックします. この結果は多重調整がなされていない点にご注意ください。<BR />(13) <STRONG>すべてのペアの平均差</STRONG>の表にて右クリックして、<STRONG>連結したデータテーブルの作成</STRONG>を選択します<STRONG>。</STRONG></P> <P>(14) Bonferroni調整したp値と信頼区間を求める計算式を作成してください。</P> <CODE class="language-jsl">Min( :"Prob>|t|"n * N Row(), 1 )
:Difference - :Std Error * t Quantile( 1 - 0.05 / (2 * N Row()), :DF )
:Difference + :Std Error * t Quantile( 1 - 0.05 / (2 * N Row()), :DF )
<以下は日本語のみでの説明>
20時点もある場合、その20時点で輪切りをすると、(群が2群であり、その2群での差を求めるだけであれば)調整したp値は元のp値を20倍することになります。もしデータを取る前に多重調整を宣言するのであれば、固定順序法(fixed order method)などの方法によっても多重性は調整できます。
20時点もある場合には、時点の効果をカテゴリカルデータではなく、連続変数としてモデル化することも考えられます。
先日の回答でも述べましたが、個人的にはp値を求めて終わりではなく、グラフビルダーなどで全体の傾向を見ることを強くお勧めいたします。上記のスクリプトを実行すると、週を横軸、測定値を縦軸にして、群ごとに色分けした各個体ごとの折れ線が描かれます。
Re: 二元配置分散分析後の事後検定:JMPでボンフェローニ補正を適用する方法今思い浮かんだのですが、動物IDを固定効果として設定しているか、または「方法」でEMS(従来型)を選択しているのではないでしょうか。その場合、動物IDは固定効果として扱われます。
動物識別にランダム効果を適用し、 EMS( タイプ)を設定した場合でも、多くの結果は固定効果モデルに基づいています。混合効果モデルに基づいているのは、期待平均二乗、分散成分推定値、検定分母合成、およびランダム効果に関する検定のみです。
あなたがやりたいこととは違うと思いますが、本当に動物識別を固定効果として扱いたいのであれば、動物識別をグループからのネストされた効果として設定する必要があります(つまり、動物ID[グループ] )。
If 動物識別 is numbered within each group as below, and the animal with 動物ID=1 in グループ=1 is different from 動物ID=1 in グループ=2, then you always need to set 動物識別 as a nested effect from グループ (,i.e. you need to set 動物ID[グループ]) (even if you treat 動物識別 as a random effect in REML estimation).
グループ動物識別
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
データが以下のようになっている場合、REML推定を実行する際には、ネストされた効果を指定する必要はありません。
(動物識別をネストされた効果として指定しても構いません。)
グループ動物識別
1 1
1 2
1 3
1 4
1 5
2 6
2 7
2 8
2 9
2 10
上記のモデルY = Group Week Group*Week Animal ID&Random Effect with nominalGroupand 週は、数ある統計モデルのうちの 1 つに過ぎないことに注意してください。ここでは JMP ソフトウェアでの設定方法と実行方法を示しただけであり、このモデルの妥当性については考慮していません。
いずれにせよ、最初のステップはプロットを描くことだと思います。

いま少し思い付いたのですが、
動物識別を固定効果として扱っているか、もしくは、手法を
EMS(従来)にしていないかと思いました。その場合、
動物識別は固定効果として扱われます。
動物識別を変量効果として設定しても、EMS(従来)にすると、多くの結果は動物識別を固定効果として扱った固定効果モデルに基づいています。期待平均二乗、分散成分推定値、F検定の分母、変量効果を考慮した検定だけが、動物識別を変量効果として扱った混合効果モデルに基づきます。
分析したいことではないと思いますが、万が一、本当に動物識別を固定効果として分析をしたいのであれば、動物識別をグループから枝分かれした効果「動物ID[グループ]」として設定する必要があります。
もし、以下のように動物識別が各群で番号付けされていて、また、第1群の動物ID=1が、第2群の動物ID=1と違う個体の場合には、その場合には動物識別を枝分かれ効果(つまり、動物ID[グループ])としなければいけません。(これは動物識別を変量効果として扱ってREML推定する場合にも、そう設定する必要があります。)
グループ動物識別
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
もしデータが次のようになっていて、Animal IDが変量効果として設定されていて、REML推定を行う場合には、動物識別を枝分かれ効果として指定する必要はありません。(別に枝分かれ効果として指定しても構いません。データが以下のような場合で、REML推定を用いる場合には、どっちでも構いません。)
グループ動物識別
1 1
1 2
1 3
1 4
1 5
2 6
2 7
2 8
2 9
2 10
なお、Y = Group Week Group*Week Animal ID&変量効果 でグループや週を名義尺度として扱うモデルは、他にもいろいろと考えられるモデルのうちの1つにすぎず、上記のことはソフトウェア上の設定方法や操作方法だけを述べているだけで、このモデルが妥当なものかは考えていません。
いずれにしても、まずはグラフを描いてみるのが最初のステップだと思います。
