こんにちは。
本日はRを使った重回帰分析の方法を説明していきます。
前回は単回帰分析の方法を説明しました。
【初心者向け】Rを使った単回帰分析【lm関数を修得】
単回帰分析:1つのデータ項目からあるデータ項目を予測する
重回帰分析:2つ以上のデータ項目からあるデータ項目を予測する
ということでした。
✅疑問
・Rを使った重回帰分析の方法を知りたい
・重回帰分析の結果の読み取り方を知りたい
これを書いている僕は医療職で働きながら大学院に通って4年目、RやSPSSなど統計ソフトの使い方を1から学び、現在は学会発表や論文投稿までできています。
では始めていきます。
Rを使った重回帰分析
データについては、前回の記事と同様にデータを読み込みます。
こちら
reg_demodataという名前のcsvファイルになっています。
↑「飲食店の数」、「人口」、「平均年齢」、「駅の数」、「交通量」が30行並んでいるデータになります。
こちらで読み込みます。
重回帰分析で「飲食店の数」を予測する項目を探っていきたいと思います。
重回帰分析での注意点
これから「飲食店の数」を予測していきたいわけですが、ここで注意点があります。
重回帰分析に投入する説明変数の数です。
重回帰分析では説明変数を1つ投入するたびに15名のデータが必要といわれています。
今回のデモデータではデータが30個しかないので投入できる変数は2個までですね。
説明変数をたくさん投入しすぎると、結果の信頼性が低下しますので注意してください。
重回帰分析を実行してみます
重回帰分析は単回帰分析と同じくlm関数を使います。
lm (目的変数~説明変数① + 説明変数②…)
です。
もしくは
です。
ちなみに
データ名 $ 項目名
で項目の列を抜き出せます。便利ですね。
ではsummary関数で結果を詳細に表示してみます。
↑詳細が表示されました。
確認する場所は赤丸をつけておきました。
CoefficientsのEstimateの部分を偏回帰係数といいます。
偏回帰係数から
y=955.525+0.02x_1-9.42x_2
という式ができ、
yは飲食店の数、955.525は切片(intercept)、x_1は人口、x_2は駅の数になります。
標準化偏回帰係数で項目の持つ影響を示せます
偏回帰係数はそれぞれの項目の持つ影響力を表す数値です。
ちょっと応用ですが、違う項目の間同士で偏回帰係数を比較するときは標準化偏回帰係数を求めます。
言葉が難しいですが、標準化とは全てのデータの平均を0、分散を1にすることです。
こうすることによって違うデータ間を比較できます。
標準化偏回帰係数を求める方法
今回の例ではデータは「demo」という名前です。
まずデータを標準化します。
scale(データ)でデータを標準化します。
↑これがデータを標準化した結果です。
標準化したデータ「sdemo」を重回帰分析にかけます。
標準化したデータはデータの形式が数値行列になっているため、このまま重回帰分析にかけるとエラーになります。
データフレーム型に変換します。
データフレームとは…
↑こちらがめちゃくちゃわかりやすく説明してくれています。R-tips
↑data.frame(データ)でデータフレームに変換できます。
この標準化したデータを重回帰分析にかけて結果をみていきいましょう。
またsummary関数をあててみます。
↑
Estimate:標準化変化域係数です。それぞれの説明変数が目的変数(飲食店の数)にどの程度影響を与えたかの数値です。
Pr:P値です。標準化偏回帰係数を結果で語るならここが5%未満の必要があります。
Adjusted R-aquared:調整済み決定係数です。決定係数とはその式の当てはまりの良さを表す指標で、「0-1」の範囲を取ります。1に近いほどあてはまりが良いとされていますが、今回は0.16と微妙ですね。
本日は以上となります。
重回帰分析もここまでデータを解釈できるとまずは良いと思います。
今後も有益な記事を書いていきます。
よろしくお願いします。