ダミー変数で重回帰分析を応用しよう!

ummy-eyecatch

重回帰分析は数字などの量的データによって行うものですが、それ以外の事柄でも数字に変換し、分析に取り入れることができます。そのときに使われるのが「ダミー変数 」です。この手法をうまく活用することで、重回帰分析に取り入れる要素を広げることができます。

そこで今回は、ダミー変数の作り方や活用事例、実際に分析をするときの注意点について紹介します。

ダミー変数とは何か?

ダミー変数とは、数字ではないデータを数字に変換する手法のことです。具体的には、数字ではないデータを「0」と「1」だけの数列に変換します。

例えば、消費税増税が景気に与える影響を見るために、増税前の期間を「0」、増税後を「1」とすることで、増税によって引き起こされた変化を考慮することができるようになります。

ダミー変数の作り方

データの作り方は、実務的に言えば大きく2つに分かれます。二者択一の場合(ex.含まれる/含まれない)と、3つ以上から選ぶ場合(ex.曜日) です。

二者択一のダミー変数を作成する場合

どちらか一方を「0」、もう片方を「1」と変換してデータを作ります。

  • はい→1、いいえ→0
  • 含まれる→1、含まれない→0
  • 男→1、女→0

なお、ダミー変数にそれぞれ名前をつけておくと分かりやすいです。計量経済学の分野では「○○ダミー」という名前をよく使われています。

複数から選択するダミー変数を作成する場合

この場合、含まれる要素の数に応じたダミー変数を作ることでデータに転換可能です。曜日をダミー変数にする場合であれば、

  • 月曜日ダミー : 月曜日を1、その他の曜日を0とした数列
  • 火曜日ダミー : 火曜日を1、その他の曜日を0とした数列
  • 以下、日曜日ダミーまで合計7通り作成

という手順で作成します。

同様に、別々に実施した3種類のキャンペーン(A/B/C)の実施期間による影響を見るのであれば、

  • キャンペーンAダミー:Aを行っている期間を1、それ以外を0とした数列
  • 以下、キャンペーンBダミー、キャンペーンCダミーも作成します

なお、実際に分析する際には、作成した複数種類のうち「含まれる要素の数から1つ少ない」ダミーを使用することになります。(詳細は割愛しますが、全てを同時に使うと分析結果が極めて信頼できなくなります)

ダミー変数を工夫した重回帰分析の分析事例

ダミー変数は、作り方自体はとてもシンプルですが、工夫次第で様々な分析に活かすことができます。以下に、具体的な分析事例を交えてご紹介します。

居酒屋の来店客数と「曜日」の関係

先ほど登場した曜日のダミーを使うと、例えば「曜日」がどの程度影響があるのかを見ることができます。

居酒屋を例に、「お店の前でのチラシの配布枚数」がどれくらい「来店客数を増やす」ことに繋がるのかを知りたいと、考えたとします。しかし、「金曜日」であれば居酒屋の客足は伸びますので、「金曜日」に「チラシを配った」場合に、チラシがどの程度効果を上げたのかはわかりません。

そのような場合に「金曜日」というダミー変数を用いて分析します。すなわち、お客さんが多いのは「金曜日」だからか、「チラシを配ったから」なのか、その両方なのか?を分析することになります。実際に分析をしてみた結果が以下の図です。分析には統計分析ツールadelieを利用しています。

how-to-use-dummy-variables_01

ここからは、「チラシを1枚配布するとお客さんが0.06人増える」「休みの前日は25人増える」という相関関係が見て取れます。仮にこれを「チラシの配布枚数」だけで相関関係を分析した場合でも、「1枚配布すると0.07人増える」という関係が見えてきますが、分析の当てはまりが非常に悪くなっているのが見てとれます。

how-to-use-dummy-variables_02

メルマガのコンバージョン率に「時間帯」は影響するか?

次に、「メルマガのコンバージョン率に影響する要因」の分析に「時間帯」を考える場合を考えてみます。

コンバージョン率も当然、多様な要素に影響を受けていますが、そのなかで、「夕方に送ると反応が良いのではないか?」という仮説を持ったとします。その場合に、送った時間も取り入れた分析を行うことができます。具体的には、9-12時ダミー/12-15時ダミー/15-18時ダミー、といった時間帯に分けたダミー変数を作成した分析を行います。

なお、上記のように3時間ごとで区切ったダミー変数が最適なのでしょうか?

実は、ダミー変数を活用した工夫のしどころはここにあります。機械的に3時間区切りをするのではなく、「出勤時間帯(8-9時)ダミー/昼休み(12-13時)ダミー/帰宅時間帯ダミー(19-20時)」の3つのダミー変数を設定した方がよりデータの動きを正確に表せる可能性もあります。このように、どのような現実の切り取り方をするか?はまさに分析者の「仮説力が試される」ところです。

「理由の分からない例外」を取り除く

最後に、「なぜだか分からないけど特殊な動きをしているところ」に後からダミー変数を作成する、という使い方ができます。これははおそらく、実務的に最も使い勝手が良い方法ではないかと思います。

初めにある程度の仮説を持った分析をしていたこれまでの2つの事例と違い、現実には「なんでこういう動きをしているかさっぱり分からないデータ」が混ざり込んでいることが多くあります。それはデータの取り方のミスかもしれないですし、滅多に起こらないことがたまたま起きた日なのかもしれません(台風が2回も直撃した週の売上が激減する、など)。原因はその時点では分かりません。

そこで、「例外」と判断される箇所にだけ「1」を設定したダミー変数を作成することで、その特殊性を分析の中に取り込むことができます。こうすることで、全体としての傾向と、何らかの局所的な例外、をひとつの分析のなかで同時に扱えるようになります。

ここでも具体例を示すと、8月の「アイスクリームの売上」が「最高気温」「降雨量」「通行人数」によって分析しているデータを考えてみたいと思います。これを分析すると、なぜか分からないが8月27日は売上が悪く、8月16日~18日は売上が非常に伸びている、という関係が読み取れます。この2カ所の「例外」を取り除くと、分析の精度が非常に高くなり、今後に向けて売上の予測も高い精度でできるようになります。

この記事を書いた人