2つの相関関係が大幅に異なるかどうかを判断するにはどうすればよいですか?


9

2つのデータセット(B1、B2)のどちらが別のセット(A)とより適切に相関している(ピアソンr)かを判断します。すべてのデータセットに欠落データがあります。結果の相関が大幅に異なるかどうかをどのように判断できますか?

たとえば、8426の値はAとB1の両方に存在し、r = 0.74です。8798はAとB2の両方に存在し、r = 0.72です。

この質問は役立つかもしれないと思いましたが、答えはありません:あるシステムが別のシステムよりもはるかに優れていることを知る方法は?


大きなを想定できますか?n
Firebug

1
@Firebug nは通常7000と8760.の間になるだろう
greenglass

回答:


6

AはDV、Bはスケールでのスコア、CはB1またはB2のいずれかであることを示すダミーコードですlm(A~B+C+B*C)。交互作用項はB*C、相関が異なるかどうかを示しますが、Cの両方のレベルでのAとBの間の単純な勾配は、相関を示します。

ただし、このフレームワークの条件間のすべてのタイプの比較に適合させることはできません。cocorRパッケージは非常に有用であり、それは非常に単純持つウェブ上のポイント・アンド・クリック・インターフェースを。欠落データが異なると、独立したサンプルも従属サンプルもないことに注意してください。ここではリストワイズ削除を使用して、シンプルにしています(そして、パワーは問題ではありません)。


2
これが最も短い答えですが、cocorへのリンクが、私が必要とする情報に私を導きました。どうもありがとう。
グリーンガラス

15

AB1B2

Cor(A,B1)=0.92
Cor(A,B2)=0.86
ここに画像の説明を入力してください

目標は、これら2つのデータセットの相関関係が大幅に異なるかどうかを判断することです。ブートストラップサンプルを次のように取得します。

 B <- 10000
 cor1 <- cor2 <- rep(0, B)
 for(i in 1:B){
   samp <- sample(n, n, TRUE)  
   cor1[i] <- cor(A[samp], B1[samp])
   cor2[i] <- cor(A[samp], B2[samp])
 }

2つの相関のブートストラップ分布をプロットできます。 ここに画像の説明を入力してください

Cor(A,Bi)

Corr(A,B1)

(0.897,0.947)

Corr(A,B2)

(0.810,0.892)

間隔が(かろうじて)オーバーラップしないという事実は、私たちが観察したサンプル相関の違いが確かに統計的に有意であることを示すいくつかの証拠を与えます。

コメントでアメーバが指摘しているように、ブートストラップサンプルごとに違いを得ると、より「強力な」結果が得られます。 ここに画像の説明を入力してください

(0.019,0.108)

間隔が(かろうじて)0を除外していることに注意して、以前と同様の証拠があります。


欠損データの問題を処理するには、両方のデータセットに含まれているペアからブートストラップサンプルを選択するだけです。


7
cor1-cor2の95%CIを計算し、ゼロが含まれているかどうかを確認することで、この手順を改善できます。
アメーバ2017年

1
それは良い点です。これについては後ほど説明します。
knrumsey

クール、+ 1。
amoeba

1
この回答をありがとうございます。それは私が最終的に使用したものではありませんでしたが、それは非常に興味深く、有益に書かれていました。
Greenglass

7

r1=tanh1(r1)r2=tanh1(r2)r1=12ln(1+r11r1)r2=12ln(1+r21r2)

次に、フィッシャー変換された変数が正規分布になり、正規分布の確率変数の合計が正規分布になっているため、

z=r1r2SN(0,1)

S=S12+S22=1n13+1n23

H0:z=0P(z0)=2P(Z>|z|)

ttnt

-

@Joshによるコメントの後に、サンプル間の相互依存の可能性をある程度組み込むことができます(両方の相関関係がAの分布に依存することに注意してください)。独立したサンプルを仮定せず、コーシーシュワルツの不等式を使用せずに、次の上限を得ることができます(参照:2つの平均値の差の標準偏差を見つける方法は?):

SS1+S2

S1n13+1n23

2
これは私の推奨事項でしたが、フィッシャーのz変換の代替式はz = .5 * ln((1 + r)/(1-r))です。各rについてこれを行い、上記のように続行します。
dbwilson 2017年

@dbwilsonええ(+1)、同等です。提案を追加して、より幅広い読者にわかりやすくします。
Firebug

r1r2

6

Mark Whiteからの有益なフィードバックを受けて編集(ありがとう!)

1つのオプションは、1つのモデルで両方の関係(B1とA、およびB2とA)を計算して、それらの間の差異も推定することです。これは、重回帰で簡単に実行できます。Aを従属変数としてモデルを実行し、次に、B1とB2のすべてのスコアを含む1つの連続変数、それがどの変数(B1またはB2)かを示すカテゴリー変数、およびそれらの間の相互作用を実行します。R:

> set.seed(24601)
> 
> library(tidyverse)
> library(mvtnorm)
> cov <- matrix(c(1, .4, .16,.4, 1, .4, .16, .4, 1), ncol=3, byrow=TRUE)
> mydata <- rmvnorm(n=100, sigma = cov)
> colnames(mydata) = c("A", "B1", "B2")
> head(mydata)
              A         B1         B2
[1,] -0.1046382  0.6031253  0.5641158
[2,] -1.9303293 -0.7663828 -0.7921836
[3,]  0.1244192 -0.4413581 -1.2376256
[4,] -3.2822601 -1.2512055 -0.5586773
[5,] -0.9543368 -0.1743740  1.1884185
[6,] -0.4843183 -0.2612668 -0.7161938

ここに私が生成したデータからの相関があります:

> cor(mydata)
           A        B1        B2
A  1.0000000 0.4726093 0.3043496
B1 0.4726093 1.0000000 0.3779376
B2 0.3043496 0.3779376 1.0000000
> 

モデルのニーズに合わせてデータのフォーマットを変更する(「ロング」に再フォーマット):

> mydata <- as.data.frame(mydata) %>% 
+   gather("var", "value", B1, B2)
> 

これがモデルです:

summary(lm(A〜value * var、data = mydata))

Call:
lm(formula = A ~ value * var, data = mydata)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.89310 -0.52638  0.02998  0.64424  2.85747 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.09699    0.09014  -1.076    0.283    
value        0.47445    0.09305   5.099 8.03e-07 ***
varB2       -0.10117    0.12711  -0.796    0.427    
value:varB2 -0.13256    0.13965  -0.949    0.344    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.891 on 196 degrees of freedom
Multiple R-squared:  0.158, Adjusted R-squared:  0.1451 
F-statistic: 12.26 on 3 and 196 DF,  p-value: 2.194e-07

ここでの結果(私の作成したデータから)は、B1とA(「値」係数の検定、B1は「var」係数の参照グループであるため)の間に有意な関係があることを示唆していますが、その差はAとのB1関係とAとのB2関係の間には意味がありません( "value:varB2"係数の検定)。

回帰係数ではなく相関関係について考えるのが好きな場合は、モデルを実行する前にすべての変数(A、B1、B2)を標準化すると、得られる回帰係数が標準化されます(ゼロ次相関、ただし解釈の点ではるかに近い)。

また、これにより分析がB1とB2の両方を持つケースのみに制限されることにも注意してください(リストごとの削除)。十分なデータが不足してパワー不足にならない限り、および欠落データがランダムに欠落している限り(または、データが無作為に欠落していても問題にならないように、合計データの割合が十分に小さい場合)、それで問題ありません。

B1とB2の両方の効果を推定するために分析を同じデータセットに制限しているという事実(欠落の異なるパターンに基づいて、わずかに異なるデータセットを使用するのではなく)には、相関関係の違いを少し解釈する利点がありますより簡単です。あなたがいる場合、それぞれに対して個別に相関を計算し、それらの違いをテストするには、基礎となるデータは、あなたが見るすべての差が違いな限りサンプルの違いによるものであろう---それぞれの場合に、わずかに異なっていることが問題に遭遇します変数間の実際の関係で。


2
スコアのlm(A~B1*B2)相関関係B1スコアにA 依存するB2かどうかをテストするのではないでしょうか?その相互作用項は、相関関係が異なるかどうかをテストしていません。2つの予測子が互いに相互作用するかどうかをテストしています。あなたは、ダミーのコードを作成することができますCコードかどうかのスケールがあることBですB1B2。次に、との間の相関関係がBAであるB1B2、であるか、つまり、相関関係が異なるかどうかに依存することがわかります。
マークホワイト

1
@MarkWhiteあらまあ、あなたは完全に正しいです!それをキャッチしてくれてありがとう。うわぁ!編集して修正します。
ローズハートマン2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.