ダミー変数
カテゴリー変数を回帰分析に組み入れるためには、数値化しなければならない。このとき変数内の値(水準)を独立した変数とし、1,0の2値に変換する。新たに作られる変数は水準数 - 1である。すべての水準を変数にしてしまうと一つの変数がその他の変数で決定可能になってしまい、独立性をもてない(分析が出来なくなる)。
「青」は「赤」でも「黄」でもないものとして決定するので、「青」変数は作らない。
今回「性別」は「男」「女」の2水準なので、新たに作る変数は一つ(「男」ないし「女」)である。
ダミー変数の作成は原理は単純だが、Rでは手間がかかるので、関数を利用する。
recode.dummy.variables関数(socialStatisticsBasic.Rで読み込まれる自作関数)
- recode.dummy.variables(data,ref)
-
データフレーム中のカテゴリー変数をダミー変数に変換する
- data=データフレーム
- ref="元変数名.水準名"(ダミー変数から除外する値=基準値、"none"を指定すると全変数を出力する)
ダミー変数作成例
sales | week | event |
1400 | 水 | |
1180 | 木 | |
… |
1430 | 木 | |
1890 | 金 | 特売 |
2010 | 土 | 特売 |
土曜日を基準にしたい時には現変数名weekにweek内にある値"土"を"."(ドット)で連結して引数とする。
この指定をしない時には初期に設定されている最初のカテゴリを基準カテゴリとする。
これで回帰分析に掛けると「土曜日と比較して日曜日は、月曜日は、火曜日は、…」と回帰係数を読み取ることになる。
ダミー変数を用いた回帰分析
ダミー変数化されたdummy.dataを使って、得点に関して身長・年齢・性別で重回帰分析を行う。
※R標準の回帰分析のlm関数はカテゴリー変数を説明変数として投入すると自動的にダミー変数化して分析を行う。
同じ結果が出力される。ただしカテゴリー変数が3つ以上の水準を持つ時、どれを基準とするかの指定は少し面倒。
- モデル評価
-
- 決定係数(寄与率)Multiple R-squared: 0.9589
- 調整済み決定係数 Adjusted R-squared: 0.9585
- 分散分析
-
- 分散分析 F(3,322)=2501, p < 0.01
- 回帰係数
-
- 身長の係数が負の値なので身長が高ければ得点は下がる(身長1cmに付き得点は-0.01点下がる)。
- 年齢の係数が正の値なので年齢が高ければ得点も上がる(年齢1歳に付き得点は6.71点上がる)。
- 性別.男の係数が負の値なので男性ならば得点は下がる(男性であれば得点は-1.85点下がる)。
- 回帰係数の有意性
-
- 年齢 t(322) = 32.67, p < 0.01で1%水準で有意。
- 身長 t(322) = -0.30, p = 0.77で5%水準で有意ではない。
- 性別 t(322) = -5.81, p < 0.01で1%水準で有意。
linest関数(socialStatisticsBasic.Rで読み込まれる自作関数)
標準化回帰係数やVIFは標準のlm関数では出力されない。そこで自作関数linestを用いる。
- linest(fomula,data)
-
重回帰分析を行う(R標準のlm関数の拡張)。
- formula=回帰式(目的変数~説明変数1 + 説明変数2)
- data=データフレーム
- 標準化回帰係数beta
-
- 年齢の絶対値が0.98で最大であり、身長の絶対値が0.01で最小である。
- VIF
-