見て、あなたは見つける(相関関係)


66

数百の測定値があります。今、私は何らかのソフトウェアを利用して、すべてのメジャーをすべてのメジャーに関連付けることを検討しています。これは、数千の相関があることを意味します。これらの中には、データが完全にランダムである場合でも(統計的に)高い相関があります(各メジャーには約100個のデータポイントしかありません)。

相関関係を見つけた場合、相関関係を探したときの情報をどのように含めることができますか?

私は統計のレベルが高いわけではありませんので、ご容赦ください。


5
これは、複数の仮説検定が必要な理由の素晴らしい例です。

おそらく、順列手順を使用して、最大相関の有意しきい値、2番目に大きい相関の異なるしきい値などのヌル分布を生成できます。PythonまたはRでこれが数時間しかかからないことを願っています(Ha!有名な最後の言葉)。しかし、誰かがすでにこれを行ってコードをどこかに保存しているはずです。

4
@tmo Rこのマシン上では、300 100により行列の最大相関係数のヌル順列分布1000の実現を得るために18秒を要するxcorrel <- function(x, k=1) { n <- dim(x)[2] * (dim(x)[2]-1) / 2; v <- cor(x); sort(v[lower.tri(v)])[(n-k+1):n] }; sim <- replicate(1000, correl(apply(x,2,sample)))
whuber

回答:


74

これは、複数のテストの微妙ではあるが重要な側面を認識するため、明確な統計的思想家である誰かにふさわしい、すばらしい質問です。

ボンフェローニ法やシダック法(qv)など、複数の相関係数のp値を調整する(または同等に信頼区間を広げる)標準的な方法があります。ただし、これらは一般に相関係数の間で保持する必要がある固有の数学的関係のために、大きな相関行列ではあまりにも保守的です。(そのような関係のいくつかの例については、最近の質問とそれに続くスレッドを参照してください。)この状況に対処するための最良のアプローチの1つは、置換(またはリサンプリング)テストを行うことです。。相関を使用してこれを行うのは簡単です。テストの各反復で、各フィールドの値の順序をランダムにスクランブルし(固有の相関を破壊し)、完全な相関行列を再計算します。これを数千回(またはそれ以上)繰り返し、次に、たとえば97.5および2.5パーセンタイルを与えることにより、相関行列のエントリの分布を要約します。これらは、nullの下で相互対称の両側95%信頼区間として機能します相関がないという仮説。(多数の変数を使用してこれを初めて実行すると、固有の相関関係がない場合でも、相関係数の一部がどれほど高いかに驚くことになります。)

結果を報告するときは、どのような計算を行っても、以下を含める必要があります。

  • 相関行列のサイズ(つまり、調べた変数の数)。

  • 相関係数のp値または「有意性」をどのように決定したか(たとえば、そのままにしておく、Bonferroni補正を適用する、順列検定を行うなど)。

  • スピアマンランク相関など、相関の代替測定値を見たかどうか。行った場合は、実際に報告して使用している方法を選択した理由も示してください。


1
これはp値調整方法のかなり徹底した説明ですが、言われていないのは調整の基準です。従来は、家族ごとのエラー率でした。しかし、それは厳密な基準であり、何千もの比較を検討しているときには役に立ちません。その場合、Benjaminiによって最初に提案された誤検出率が現在一般的に使用されています。
マイケルチャーニック

非常によく定義された変数のペア(例:、...、、各とは変数)の相関関係を見たいだけなのに、どうでもいい他のすべての可能な組み合わせ(つまり、気にしません)?まだ修正が必要ですか?、C 、O 、R 、R X NYはNでxはI 、Y I C O R R X IY軸Jiはjでcorr(x1,y1)corr(xn,yn)xiyicorr(xi,yj) ij
ジェイス

@Jaseはい、そうです。補正量は、変数間の相互関係に依存します。シミュレーションベースの方法は、これらの修正を決定する唯一の実用的な方法です。
whuber

素敵な。あなたが議論したこの方法は、シリアル相関と不均一分散の問題の標準誤差も修正しますか?
ジェイス

@Jase異分散モデルで相関係数を解釈することは困難です。コメントは、多変量相関係数の推定ではなく、時系列設定の線形モデルを参照しているようです。
whuberの

10

Peter Flomの質問へのフォローアップの回答から、相関行列のより高いレベルの構造を調べる手法の方が良いように思えます。

因子分析、PCA、多次元スケーリング、変数のクラスター分析などの手法を使用して、比較的関連性の高い変数のセットに変数をグループ化できます。

また、どのような構造が存在すべきかについて理論的に考えることもできます。変数の数が多く、観測値の数が少ない場合、多くの場合、以前の期待にもっと頼る方が適切です。


1
(+1)@Peter Flomの回答に対するOPのコメントを踏まえた良いアドバイス。
whuber

7

これは、複数の比較の例です。これについては多くの文献があります。

たとえば、100個の変数がある場合、100 * 99/2 = 4950の相関があります。

データが単なるノイズである場合、これらの20分の1がp = .05で有意であると予想されます。247.5です

しかし、さらに先に進む前に、なぜあなたがこれをしているのかを言うことができれば良いでしょう。これらの変数は何ですか、なぜそれらを相関させるのですか、あなたの実質的なアイデアは何ですか?

または、高い相関関係を求めて釣りをしていますか?


3
私がこのようにやりたかったのは、データを理解することに心を開くためでした。私は確かにこれを上司や何かの欲求を満たすためにやっているわけではありません。この質問に対する一般的な答えが欲しいので、データの詳細には入りたくないので、将来すべての状況で使用できます。
デビッド

7

おそらく、データのランダムなサブセットに対して予備分析を行って仮説を作成し、残りのデータを使用してこれらの少数の仮説をテストすることができます。そうすれば、ほぼ同じ数の複数のテストを修正する必要がなくなります。(おもう...)

もちろん、このような手順を使用すると、最終分析に使用されるデータセットのサイズが小さくなるため、実際の効果を見つける能力が低下します。ただし、複数の比較の修正によって電力も削減されるため、必ずしも何かが失われるかどうかはわかりません。


5
(+1)これは一般的に素晴らしいアイデアです。ただし、大規模な相関行列の場合、統計が非常に多く、それらの多くが同時に偽に大きくなる可能性があるため、通常は調整に費用がかかります。そうしないと、ホールドアウトデータで消えてしまう多数の誤解を招く「重要な」相関関係を追いかけることになります。(たとえば、50の非相関標準正規変量から数百の描画でシミュレーションを実行します。これは目を見張るものです。)
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.