複雑な関係から真の関係を絞り込む(偏相関)

| 2 min read
Author: shuichi-takatsu shuichi-takatsuの画像

以前のブログで複数のデータ群間の関係の強さをみる「相関行列」を学びました。
今回は、他のデータの影響を除外して”2つのデータ群間の相関のみ”を導き出す「偏相関」について見ていきたいと思います。

Contents

偏相関とは

#

相関係数は「2つのデータ群間の関係の強さ」を示す値です。

相関係数は対象としているデータ以外からの影響の有無は考慮されていません。
データ群が互いに”独立”である場合なら、相関係数は2つのデータ群間の関係の強さ”のみ”を表しますが、データ群のすべてが”独立”であると判断できるケースは稀であり、多かれ少なかれデータ同士は互いに影響を与えていると考えた方が自然です。

相互に影響しあう複数のデータ群間の”関係の強さ”を確認するために他のデータ群の影響を取り除いた相関係数が「偏相関係数」です。

「統計解析シリーズ」で何度も使用しているjamoviを使って「偏相関」を計算してみましょう。

例題「仕様書作成工数の影響を取り除く」

#

ソフトウェア開発部隊から直近のプロジェクトのソフトウェア・メトリクスを収集しました。
データ項目は

  • 仕様書規模(頁)
  • 仕様書作成工数(人時)
  • レビュー指摘件数(件)

です。
それぞれのデータは以下のようになっていました。

仕様書規模(頁) 仕様書作成工数(人時) レビュー指摘件数(件)
40 26 10
95 46 21
83 48 19
97 40 20
50 30 11
65 32 13

これらのデータを使って相関行列・偏相関を確認します。

相関行列を確認する

#

最初は相関行列を確認します。
メニューの「分析」-「回帰分析」-「相関行列」を選択し、以下のように設定します。

相関行列として以下の表が出力されました。

相関の強弱の判断は以下の閾値で考えます。
(文献によって区分値が多少異なる場合がありますが、ここではおおよそで考えます)

-1 ~ -0.7: 強い負の相関
-0.7 ~ -0.5: 負の相関
-0.5 ~ 0.5: ほぼ相関なし
0.5 ~ 0.7: 正の相関
0.7 ~ 1: 強い正の相関

上記の判断基準でデータを見ると、すべての相関係数が「強い正の相関」を示しています。
p値もすべて有意を示しています。

2つのデータ群間だけの関係の強さを求めたい

#

先ほど得た相関行列のデータだけでは、相関係数が他のデータからどれだけ影響を受けているかを知ることは出来ません。
「仕様書規模(頁)」と「レビュー指摘件数(件)」の関係のみに絞って相関係数を見たい場合は「偏相関」を使います。

それでは「仕様書作成工数(人時)」の影響を除外した「仕様書規模(頁)」と「レビュー指摘件数(件)」の間の「偏相関」を求めたいと思います。

メニューの「分析」-「回帰分析」-「偏相関」を選択し、以下のように設定します。
「仕様書作成工数(人時)」は「統制変数」という項目に設定します。

偏相関として以下の表が出力されました。

相関行列で求めた相関係数は「0.981」でしたが、偏相関係数は「0.941」です。
p値は有意を示しています。
「仕様書作成工数(人時)」を除外したところ、相関係数の値自体は少し小さくなりましたが、依然として「強い正の相関」を示しているのがわかります。

まとめ

#

偏相関を使うと、2つのデータ群間の相関だけに絞って関係の強さを求めることができます。
影響を与えあうデータ間で相関係数を求める時にとても有効な手段になります。

偏相関を手計算で求めるのは骨の折れる作業ですが、統計解析ツール「jamovi」が煩雑な作業を軽減してくれます。
ぜひ利用してみてください。

統計解析ツール紹介やその活用方法をまとめています。

データ分析に活用して頂ければ幸いです。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  2. 自然言語処理初心者が「GPT2-japanese」で遊んでみた (2022-07-08)
  3. GitHub Codespaces を使いはじめる (2022-05-18)
  4. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  5. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  6. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  7. Nuxt3入門(第3回) - ユニバーサルフェッチでデータを取得する (2022-10-06)
  8. 第1回 OpenAPI Generator を使ったコード生成 (2022-06-04)
  9. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  10. Nuxt3入門(第2回) - 簡単なNuxtアプリケーションを作成する (2022-10-02)