最終更新
リンドくん
たなべ先生、単回帰分析は理解できたんですけど、実際のビジネスって一つの要因だけじゃ説明できないことが多いですよね?
たなべ
その通り!鋭い気づきだね。
たとえば家の価格を予測するとき、広さだけじゃなくて築年数や駅からの距離、部屋数なんかも関係してくるよね。そういう複数の要因を同時に考えるのが重回帰分析なんだ。
データ分析を学び始めると、単回帰分析で一つの要因から結果を予測する方法を学びます。
しかし、実際のビジネスや研究の現場では、一つの要因だけで物事が決まることはほとんどありません。
たとえば、商品の売上を予測したいとき、価格だけでなく広告費や季節、競合の状況など、様々な要因が絡み合っています。
こうした複数の要因を同時に考慮して予測する手法が重回帰分析です。
この記事では、データサイエンス初心者の方でも理解できるよう、重回帰分析の基本概念から実装方法、注意点まで、段階的に解説していきます。
リンドくん
重回帰分析って、単回帰分析と何が違うんですか?
たなべ
一番大きな違いは説明変数の数なんだ。
単回帰分析が「一つの要因で結果を説明する」のに対して、重回帰分析は「複数の要因を組み合わせて結果を説明する」んだよ。
重回帰分析は、複数の説明変数(独立変数)を使って、目的変数(従属変数)を予測する統計手法です。
数式で表すと以下のようになります。
ここで、各項目を説明すると以下のようになります。
単回帰分析と重回帰分析の違いを具体例で見てみましょう。
単回帰分析の例: 広さだけで家の価格を予測
重回帰分析の例: 複数の要因で家の価格を予測
このように、重回帰分析では複数の角度から対象を見ることで、より現実に近い予測が可能になるのです。
実際のビジネスや研究では、一つの要因だけで結果が決まることはほとんどありません。
重回帰分析を使うことで、以下のようなメリットが得られます。
たとえば、「広告費を増やすと売上が上がる」という関係を調べるとき、季節性の影響を考慮しないと正確な判断ができません。
重回帰分析なら、季節の影響を考慮しつつ、広告費の純粋な効果を測定できるのです。
リンドくん
実際にPythonでやってみたいです!どうやって始めればいいですか?
たなべ
まずはシンプルな例から始めよう。
身近な例として、学生の成績を予測するモデルを作ってみるよ。勉強時間、睡眠時間、出席率の3つの要因から、テストの点数を予測してみよう!
まずは必要なライブラリをインポートします。
実際のデータを想定して、学生の学習データを作成してみましょう。
次に、実際に重回帰モデルを構築していきます。
構築したモデルの性能を評価してみましょう。
このコードを実行すると、以下のようなことがわかります。
モデルが完成したら、新しいデータで予測してみましょう。
このように、重回帰分析を使えば、複数の要因から目的変数を予測するモデルを簡単に構築できます。
リンドくん
係数の数値が出ましたけど、これってどう読み取ればいいんですか?
たなべ
係数の解釈はとても重要だね。
たとえば「勉強時間の係数が5.0」だったら、他の条件が同じなら、勉強時間が1時間増えるとテスト点数が5点上がるという意味なんだ。
重回帰分析で得られる各説明変数の係数は、他の説明変数を固定したときの、その変数の影響度を表します。
たとえば、以下のような結果が得られたとします。
これは以下のように解釈できます。
決定係数はモデルがどれだけデータのばらつきを説明できているかを示す指標です。
一般的に、R²が0.7以上であれば良いモデルと言えますが、分野によって基準は異なります。
社会科学では0.3〜0.5でも受け入れられることがありますし、物理実験では0.9以上が期待されることもあります。
実際の分析では、係数が統計的に有意かどうかも重要です。
これは、その変数が本当に目的変数に影響を与えているのか、それとも偶然なのかを判定します。
このコードを実行すると、各係数のp値が表示されます。
p値が0.05未満であれば、その変数は統計的に有意と判断できます。
リンドくん
何か気をつけないといけないことってありますか?
たなべ
実はいくつか重要な注意点があるんだ。
特に多重共線性という問題には気をつける必要があるよ。説明変数同士が強く相関していると、係数の解釈がおかしくなっちゃうんだ。
多重共線性とは、説明変数同士が強く相関している状態のことです。
これが起こると、以下のような問題が発生します。
たとえば、「身長」と「体重」の両方を説明変数に入れると、これらは強く相関しているため多重共線性が発生しやすくなります。
VIF(Variance Inflation Factor: 分散拡大係数)を使って多重共線性を確認できます。
VIFが10以上の変数がある場合は、以下のような対処が必要です。
重回帰分析は外れ値の影響を受けやすい手法です。
データに極端な値が含まれていると、モデル全体が歪んでしまう可能性があります。
外れ値が見つかった場合は、以下のような対処を検討しましょう。
すべての変数をモデルに入れればいいわけではありません。
不要な変数を入れすぎると、以下の問題が起こります。
変数選択の方法には以下のようなものがあります。
Pythonでの実装例:
リンドくん
重回帰分析って、複雑そうに見えて実は理にかなってるんですね!
たなべ
そうなんだよ!現実世界は複雑だから、複数の要因を同時に考える必要があるんだ。
重回帰分析を使いこなせるようになると、データ分析の幅がグッと広がるよ。ぜひ実際のデータで試してみてね!
重回帰分析は、データサイエンスにおける基本的かつ強力なツールです。
この記事で学んだ内容を振り返ってみましょう。
理論を学ぶことも大切ですが、実際に手を動かしてデータ分析を行うことが最も重要です。
まずは身近なデータを使って、今日学んだ重回帰分析を試してみましょう。
Kaggleなどの公開データセットを使って練習するのもおすすめです。
最初は小さなデータセットから始めて、徐々に複雑な問題に挑戦していくと良いでしょう。
データサイエンスは奥が深く、学ぶべきことはたくさんあります。
しかし、一歩一歩着実に進んでいけば、必ずスキルは向上します。重回帰分析は、その重要な一歩となるはずです。