この例では、Fisherのz変換の応用を示します。詳細は、Fisherのz変換のセクションを参照してください。
次のステートメントは、2変量正規分布から抽出した変数X
とY
の独立した標本をシミュレートします。150個のオブザベーションからなる最初のまとまりは、既知の相関0.3を使用して標本化されます。150個のオブザベーションからなる2番目のまとまりは既知の相関0.25を使用して標本化され、100のオブザベーションからなる3番目のまとまりは既知の相関0.3を使用して標本化されます。
data Sim (drop=i); do i=1 to 400; X = rannor(135791); Batch = 1 + (i>150) + (i>300); if Batch = 1 then Y = 0.3*X + 0.9*rannor(246791); if Batch = 2 then Y = 0.25*X + sqrt(.8375)*rannor(246791); if Batch = 3 then Y = 0.3*X + 0.9*rannor(246791); output; end; run;
このデータセットを使用して、Fisherのz変換の次のような応用を示します。
母集団相関が指定の値に等しいかどうかのテスト
2つの母集団相関が等しいかどうかのテスト
異なる標本から計算した相関推定値の結合
次のステートメントを使用すると、両側対立仮説 に対する帰無仮説の検定を実施できます。この検定は、オプションFISHER(RHO0=0.5)を使用して要求します。
title 'Analysis for Batch 1'; proc corr data=Sim (where=(Batch=1)) fisher(rho0=.5); var X Y; run;
出力2.4.1に、Fisherの変換に基づく結果を示します。p値が0.0001未満であるため、この帰無仮説は棄却されます。
出力2.4.1:である場合のFisherの検定
Analysis for Batch 1 |
Pearson Correlation Statistics (Fisher's z Transformation) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Variable | With Variable | N | Sample Correlation | Fisher's z | Bias Adjustment | Correlation Estimate | H0:Rho=Rho0 | |||
95% Confidence Limits | Rho0 | p Value | ||||||||
X | Y | 150 | 0.22081 | 0.22451 | 0.0007410 | 0.22011 | 0.062034 | 0.367409 | 0.50000 | <.0001 |
次のステートメントを使用すると、2つの母集団相関とが等しいかどうかをテストできます。ここでは、帰無仮説を、対立仮説に対してテストします。
ods output FisherPearsonCorr=SimCorr; title 'Testing Equality of Population Correlations'; proc corr data=Sim (where=(Batch=1 or Batch=2)) fisher; var X Y; by Batch; run;
ODS OUTPUTステートメントは、表"FisherPearsonCorr"を、CORRプロシジャの出力データセット内に保存します。出力データセットSimCorr
には、両方のまとまりに関するFisherのz統計量が含まれます。
次のステートメントは、出力2.4.2のように、出力データセットSimCorr
を表示します。
proc print data=SimCorr; run;
をテストするためのp値は、差を平均がゼロで分散がの正規ランダム変数として扱うことにより導かれます。ここで、とは、それぞれ標本相関とに関するFisherのz変換です。また、とは、標本サイズです。
次のステートメントは、出力2.4.3のp値を計算します。
data SimTest (drop=Batch); merge SimCorr (where=(Batch=1) keep=Nobs ZVal Batch rename=(Nobs=n1 ZVal=z1)) SimCorr (where=(Batch=2) keep=Nobs ZVal Batch rename=(Nobs=n2 ZVal=z2)); variance = 1/(n1-3) + 1/(n2-3); z = (z1 - z2) / sqrt( variance ); pval = probnorm(z); if (pval > 0.5) then pval = 1 - pval; pval = 2*pval; run; proc print data=SimTest noobs; run;
出力2.4.3において、p値0.2795は、帰無仮説を棄却する根拠を提供しません。標本サイズおよびの大きさが十分でないため、差を有意水準で検出できません。
標本推定値およびは、それぞれおよびというオブザベーションの2つの独立した標本から計算されます。結合された相関推定値は、により与えられます。ここで、は、とのz変換の重み付きの平均です。
次のステートメントは、Batch
1とBatch
3を使用して、の推定値を計算します。
ods output FisherPearsonCorr=SimCorr2; proc corr data=Sim (where=(Batch=1 or Batch=3)) fisher; var X Y; by Batch; run; data SimComb (drop=Batch); merge SimCorr2 (where=(Batch=1) keep=Nobs ZVal Batch rename=(Nobs=n1 ZVal=z1)) SimCorr2 (where=(Batch=3) keep=Nobs ZVal Batch rename=(Nobs=n2 ZVal=z2)); z = ((n1-3)*z1 + (n2-3)*z2) / (n1+n2-6); corr = tanh(z); var = 1/(n1+n2-6); zlcl = z - probit(0.975)*sqrt(var); zucl = z + probit(0.975)*sqrt(var); lcl= tanh(zlcl); ucl= tanh(zucl); pval= probnorm( z/sqrt(var)); if (pval > .5) then pval= 1 - pval; pval= 2*pval; run; proc print data=SimComb noobs; var n1 z1 n2 z2 corr lcl ucl pval; run;
出力2.4.4に、の結合された推定値を示します。この表は、結合された標本からの相関推定値がr=0.2264であることを示しています。結合された推定値を使用する場合、の信頼区間は(0.10453,0.34156)です。この信頼区間には、母集団相関0.3が含まれていることに注意してください。