静粛に、只今統計勉強中

仕事でデータ分析をすることになったバリバリ文系アラフィフのおっさんが、独学で統計の勉強を始めました。

Excel VBAで偏相関係数を求める関数を作ってみた1

『統計学がわかる【回帰分析・因子分析編】』の第5章には、相関係数の解説があります。
相関係数は、多変量解析、すなわち変数が3つ以上の関係を分析しようとした途端に現れる難物、疑似相関多重共線性間接効果を把握する上で避けて通れない統計量だと思います。

相関係数

3つ以上の変数X、Y、Z1、Z2、…Znがあるとき、Z1、Z2、…Znの影響を取り除いたXとYの相関の強さを示す、と説明されます。

 

疑似相関

疑似相関は、正確には多変量というよりも、2変数の間に関係がないのに隠れた別の要因によって関係があるかのように見えてしまう状態のことです。

疑似相関については、ほくそ笑むさんの説明がとてもわかりやすいです。

上の記事を要約すると、疑似相関とは例えば、

  • 無作為抽出された小学生32人について、身長の高い子供の方が、算数の点数が高いという結果が出た
  • 実は、32人の学年(年齢)はバラバラだった。
  • 年齢が高いほど算数能力は高くなり、年齢が高いほど身長も高くなることは容易に推測できる
  • 年齢と算数能力に相関があり、年齢と身長にも相関があるため、身長と算数能力にも見かけ上の相関が見えている

というようなこと。年齢の影響を除いた身長と算数能力の相関係数を調べて疑似相関であることを見抜きます(相関係数の絶対値が十分に小さければ疑似相関と言えます)。

 

多重共線性

多重共線性は、重回帰分析の説明変数同士に強い相関がある状態のことで、これがあると重回帰モデルがおかしくなってしまうのだそうです。
なぜおかしくなるのか、初学者に分かりやすい説明が見当たらないのですが、

こちらのサイトを見るとなんとなくですが、そもそも重回帰モデルを組み上げるプロセスで説明変数が互いに独立していることを利用してしているから、のような気がします。
違っていたらごめんなさい。

で、多重共線性相関係数ですが、

こちらのサイトを見ると、どうやら多重共線性があると相関係数相関係数の正負が逆になったり、相関係数が求まらなかったりするようです。

この辺、あやふやなことばかり言って申し訳ないですが、後で(関数が完成したら)検証してみたいと思います。

 

間接効果

間接効果は、媒介分析(2変数間の因果関係を媒介する別の変数の影響を検討する方法)で検討される「媒介変数の影響」のことで、例えばX→Yに媒介変数Zを加えたときのX→Z→Yの赤い部分が間接効果。下のサイトの説明がとても分かりやすいです。

概念的には疑似相関と矢印の向きが違うだけなんですね。
ただ、実用上は相関係数よりも偏回帰係数を使うことのほうが多そうです。

 

ユーザー定義関数を作る

相関係数の計算式は、『統計学がわかる【回帰分析・因子分析編】』86ページで以下のように説明されます。

これをVBAでコーディングすると、

'偏相関係数を求める
Function P_Correl(目的変数, 説明変数, 統制変数)

    Dim tmp1, tmp2, tmp3
    
    tmp1 = WorksheetFunction.Correl(説明変数, 目的変数)
    tmp2 = WorksheetFunction.Correl(説明変数, 統制変数)
    tmp3 = WorksheetFunction.Correl(統制変数, 目的変数)

    P_Correl = (tmp1 - tmp2 * tmp3) / (Sqr(1 - tmp2 ^ 2) * Sqr(1 - tmp3 ^ 2))
    
End Function

こう。*1 実に簡単です。

ところで、変数が4つ以上になったらどうすればよいのでしょうか?

*1:相関係数を計算する上で引数に「目的変数」と「説明変数」というネーミングはいかがなものかというご意見もおありでしょうが、ついでに偏回帰係数偏回帰定数を求める関数も作ったので、統一感を持たせたかったのです。