# 多重共線性についてわかりやすく解説！定義とVIFとその基準について詳しく！

> 当サイト【スタビジ】の本記事では、多重共線性について解説していきます。多重共線性とは「ある変数同士が一次従属（完全な線形関係）である場合が複数認められた場合」と定義されています。多重共線性があるデータに対して重回帰分析を適用することはできないので、真っ先に考慮すべき要素です。今回は多重共線性の定義と見分ける指標となるVIFについて解説します！

- URL: https://toukei-lab.com/multicollinearity
- 公開: 2023.08.08 / 更新: 2025.04.27
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、多重共線性について解説していきます。多重共線性とは「ある変数同士が一次従属（完全な線形関係）である場合が複数認められた場合」と定義されています。多重共線性があるデータに対して重回帰分析を適用することはできないので、真っ先に考慮すべき要素です。今回は多重共線性の定義と見分ける指標となるVIFについて解説します！
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です！

今回は多重共線性について解説していきます！

多重共線性とは<mark>「説明変数のある変数同士が強く相関している状態が複数起きている状態」</mark>と定義されています。

多重共線性がある場合、重回帰分析を適用することが難しく、目的変数に対して有意に影響を与える変数が増える、あるいは見逃す可能性があるので、データ分析においては対応しなければならない要素です。

:::talk{who="umatan" side="right"}
多重共線性があるデータはたくさんあるので、データを精査せずに分析を行うと取り返しのつかないことがあるので注意が必要だよ！
:::

この記事では、多重共線性の定義とそれを見分けるVIFについて解説します！

:::point
**・多重共線性について解説！**\
**・VIFについて解説！**
:::

以下のYouTube動画でも解説していますので、あわせてチェックしてみてください！

::youtube{#g8h_SqE-sS8}

## 多重共線性について解説！

![studies book](/wp-content/uploads/2019/09/Book-lover-amico-min-e1617876607238-1024x885.png)

早速、**多重共線性**について解説します！

多重共線性とは<mark>「説明変数のある変数同士が強く相関している状態が複数起きている状態」</mark>と定義されています。

多重共線性の問題点として、<mark>相関が高い説明変数があると目的変数に有意に影響する説明変数が増える、あるいは見逃してしまう</mark>ことです。

例を見てみましょう！これは年齢・年収・足の遅さについて疑似相関があるか見たものです。

![疑似相関](/wp-content/uploads/2023/08/24c843eb4712f02b55b729d1fa3a4828-1024x576.jpg)

目的変数が年収、説明変数が年齢と足の遅さとしましょう。

この時、足の遅さと年齢は相関係数が高い状態、つまり多重共線性があると考えます。

そして年齢と年収は高い相関にあることも考えられますが、<mark>疑似相関により年収と足の遅さにも高い相関が生まれてしまいます</mark>。

したがって足の遅さは本来全く関係がないはずなのに、相関係数が高く見えてしまっているので、有意な変数として選択される可能性が非常に高いです。

疑似相関については以下の記事で解説しています！

<https://toukei-lab.com/correlation-causal>

このように、本来関係ない変数までも有意な変数として取り込んでしまう可能性が高いので注意する必要があります。

## VIFについて解説！Pythonを使ってみてみよう！

![Social strategy](/wp-content/uploads/2020/07/Social-strategy-amico-e1635488817231-1024x916.png)

そこで多重共線性を見分ける指標として**VIF**が挙げられます。VIFは以下のような式で表せます。

$VIF = \frac{1}{1-R_{j}}$

<mark>$R_{j}$は説明変数jを他の全ての説明変数に回帰したときの決定係数</mark>となります。つまりある変数がほかの変数で説明できるのなら、その変数は不要であると考えることができます。

[決定係数](/evaluation#i-2)は以下の記事で記事で解説していますので合わせてチェックしてみてください！

<https://toukei-lab.com/evaluation#i-2>

<mark>多重共線性の基準として、VIFが10以上であれば多重共線性がある</mark>と考えられています。またVIFが<mark>5以下であれば多重共線性を持っている可能性は非常に低い</mark>と考えられています。

実際にpythonを用いてカルフォルニアの住宅価格データからVIFを見てみましょう！

VIFを見るために、statsmodels.stats.outliner_influenceのvariance_inflation_factor関数を使用してみます！

```python
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.datasets import fetch_california_housing
import pandas as pd
import numpy as np

df = fetch_california_housing()
x = pd.DataFrame(df.data,columns=df.feature_names)
vif = pd.DataFrame()
vif["VIF"] = [variance_inflation_factor(x.values, i) for i in range(x.shape[1])]
vif.index = x.columns
vif
```

![vif_1](/wp-content/uploads/2023/08/66c19942ab4ba346fdb64ccc04cde373-2.png)

これを見るとVIFが高い変数がいくつかあることが分かりますね！実際に相関係数がどうなっているかヒートマップで見てみましょう！

```python
import seaborn as sns
sns.heatmap(x.corr())
```

![heatmap](/wp-content/uploads/2023/08/eb22bf7a906b7f73af3d68cd620dade7.png)

今回は比較的相関係数が高いAveRoomsとAveBedrmsに注目し、AveBedrmsを削除した場合のVIFを見てみましょう！

```python
del x["AveBedrms"]
vif = pd.DataFrame()
vif["VIF"] = [variance_inflation_factor(x.values, i) for i in range(x.shape[1])]
vif.index = x.columns
vif
```

![vif_修正](/wp-content/uploads/2023/08/44d29d2792be3bad9a9ed98c7bbb20d6.png)

これでAveRoomsのVIFが10以下になり、先ほどのデータより多重共線性が低い状態になったことが分かりますね！

## 多重共線性　まとめ

ここまでご覧いただきありがとうございました！

本記事では**多重共線性**についてまとめました！

多重共線性が関わってくる手法として[回帰分析](/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90)が挙げられますので、こちらの記事も見ると良いでしょう！

<https://toukei-lab.com/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90>

このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。

そして僕の経験を詰め込んだデータサイエンス特化のスクール[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)を運営していますので，興味のある方はぜひチェックしてみてください！

### AIデータサイエンス特化スクール「スタアカ」

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

データサイエンスに関する記事はこちら！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/datascience-book>

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください！

<https://toukei-lab.com/datascientist-school>