現在JMPにおいては、PearsonもSpearmanもそのP値は、(z変換不要の)t分布近似の値である。しかし、Fisher z変換からのP値算出を切に熱望する。特に、最近の生物系の投稿論文では、相関係数PearsonもSpearmanも、よく見かける。その場合、Fisher z変換からのP値算出が圧倒的に多い。よろしくお願いしたい。また、信頼区間構成も可能な限りFisher z変換による95%信頼区間構成を望むものである。(なお、本件に関して正確法までは不要とする)
ご要望を寄せていただき、誠にありがとうございます。
また、弊グループ内でのやりとりに時間がかかり、返信が遅れましてすみません。
SAS Institute Japan株式会社 JMPジャパン事業部でテスターをしています小野と申します。
PearsonおよびSpearmanの相関係数に対するp値において、FisherのZ変換近似の方法もオプションとして追加してほしいとの要望を承りました。同方法を、要望リストに追加しました。さらに私たちのほうで検討を行いたいと思います。
現在の「多変量の相関」プラットフォームでは、PearsonおよびSpearmanの相関係数に対するp値は、Studentのt分布から計算されています。
Pearsonの相関係数に対しては、このStudentのt分布に基づくp値は、 次のような条件のもとで、正確なp値です。
- 各観測ベクトルの分布が、多変量正規分布からの独立同一分布である。
- 欠測値がない。
- 帰無仮説がH0: ρij = 0である(ここでρij は、第i変数と第j変数のあいだのPearsonの母相関係数)
JMPの現在の「多変量の相関」プラットフォームでは、Pearsonの相関係数に対する信頼区間は、FisherのZ変換近似(バイアス項を含まないもの)から計算されています。そのため、信頼区間が、ある定数c(-1.0<1.0)を含まないのであれば、帰無仮説「H0: ρij = c」が棄却されることを意味します(デフォルトの信頼係数は95%、つまり、有意水準5%となっています)。
標本サイズがある程度、大きければ、帰無仮説「H0: ρij = 0」に対する検定として、Studentのt分布に基づく検定も、FisherのZ変換に基づく検定も似た結果となります。ただし、特に小標本の場合には、両者の結果は違ったものです。このため、現在の「多変量の相関」プラットフォームでは、検定と信頼区間が食い違った結果になる可能性もあります(統計的検定では「H0: ρij = 0」が棄却されるのに、信頼区間が0を含むこともありうる。もしくは、その逆の関係になることもありうる。)これは、ユーザーの方々には、やや混乱をもたらす動作かもしれません。しかし、上記したStudentのt分布に基づく方法は、上記した条件のもとで正確な方法であり、かつ、計算も簡単です。一方、「正確」な信頼区間は計算がやや難しいです。そのような理由から、p値としてはStudentのt分布を用いて、信頼区間としてはFisherのZ変換近似を用いるのは合理的だと考えています。
現在の「多変量の相関」プラットフォームでは、Spearmanの相関係数に対する信頼区間は計算されません。
「正確」な検定や信頼区間については、私たちの知る限り、2つの方法があります。1つは、Pearsonの相関係数に対して、多変量正規分布を前提として計算される信頼区間です。この方法はρij≠0の場合には、数値積分が必要です。計算が複雑なこともあり、こちらの考えに沿った、ρij≠0に対する正確な検定、および、ρijに対する正確な信頼区間はそれほど普及していないと思われます。もう1つの正確検定は、並び替え検定に基づく方法です。並び替え検定は、条件付き「正確」な方法です。ρij≠0のときに、どのように並び替えを行えばいいのかが難しいです。いずれの正確な方法も、JMPでは実装されていません。唯一、「H0: ρij=0」のときの、Studentのt分布に基づく(多変量正規分布であるときの)正確な方法が、Pearsonの相関係数に対して提供されているだけです。
まとめると、現在のJMPでは次のような作りになっています。
- PearsonおよびSpearmanの相関係数に対するp値は、Studentのt分布に基づいて計算されます。
- Pearsonの相関係数に対する信頼区間は、FisherのZ変換(バイアス項なし)による近似で計算されます。
- Spearmanの相関係数に対する信頼区間は計算されません。
現在のJMP上にて、FisherのZ変換近似からp値を計算したい場合には、JMPスクリプト言語(JSL; JMP Scripting Language)にてプログラミングをする必要があります。コードは以下のようなものになります(以下のコードは、バイアス項なしのFisherのZ変換によるものです)。もし、以下のようなコードによるFisherのZ変換の計算に興味がある場合はご返信ください。コードについて解説いたします。また、以下は計算方法を分かりやすく提示するためのものですが、さらに汎用性があるコードにすることもできます。
r = 0.4;
n = 15;
z = 0.5 * Log((1+r)/(1-r));
up_z = z + Normal Quantile(0.975)*Sqrt(1/(n-3));
low_z = z - Normal Quantile(0.975)*Sqrt(1/(n-3));
Show((Exp(2*low_z)-1)/(Exp(2*low_z)+1));
Show((Exp(2*up_z)-1)/(Exp(2*up_z)+1));
p_z = 2*Normal Distribution(-Abs(z*Sqrt(n-3)));
Show(p_z);
t = r * Sqrt((n-2)/(1-r^2));
p_t = 2 * T Distribution(-Abs(t), n - 2);
Show(p_t);
長文、失礼いたしました。
ご要望を寄せて頂いたことを、重ねてお礼申し上げます。
上記の返信にて不十分・不明な点などございましたら、お手数ですがご返信ください。
小野さま
ご連絡ありがとうございました。
急ぎではないので、むしろ、丁寧に回答ありがとうございます。
つきましては、以下となります。
(1)Spearmanの相関係数に対する、Fisher Z変換によるバイアス補正ありの95%信頼区間構成は諦めます。
(2)PearsonおよびSpearmanの相関係数に対するp値に関しては、「Fisher Z変換」、「Studentのt分布(現搭載済み)」、「正確法」のうち、やはり、「Fisher Z変換」によるP値とうのを、論文に記載したいため、
PearsonおよびSpearmanの相関係数に対するp値に関しては、
1)FisherのZ変換の計算に興味がありコードについて解説希望
2)FisherのZ変換の計算に興味がありさらに汎用性があるコード解説希望
となります。
上の(2)で「正確法」は諦めます。
背景は、20-30例の臨床画像解析で用いたいため、小数例20-30例であるためです。
私は、現在、JMP15.2(win10の64bit版)を利用しています
引き続き、よろしくお願い致します。