重回帰分析をわかりやすく解説|統計解析ソフトRで実装

R
この記事は約9分で読めます。

ナバ
ナバ

この記事では重回帰分析の基礎について解説し、無償で使える統計解析ソフトのRで重回帰分析を実践する方法をご紹介します!

重回帰分析とは?

重回帰分析

重回帰分析とは目的の数値の変動を複数の要因でどの程度説明できるかを分析することです。

ここで、賃貸不動産の例で重回帰分析を考えてみましょう。

「物件の賃料」の変動はどのような要因で決まるでしょうか?

例えば「部屋の広さ」、「築年数」、「最寄り駅までの距離」といった要因が考えられます。

これらの要因を使って、物件の賃料の変動をうまく説明する式を作っていくのが重回帰分析です。

重回帰分析で作成する式は重回帰式または重回帰モデルと呼ばれます。

不動産の例で重回帰式を作ると下記のようになります。

y:目的変数、x1~xn:説明変数、 β0 :定数項、β1~βn:偏回帰係数

目的の変数を目的変数、説明に使用する変数を説明変数といいます。

重回帰分析では目的変数yの変動を最もうまく説明する偏回帰係数の組み合わせを最小二乗法というアルゴリズムによって決定します。

Rで重回帰分析をやってみよう

統計解析ソフトのRを使って重回帰分析を実践する方法をご紹介します。

データは、ボストン市の住宅価格データ「Boston」を使用します。

Bostonデータは、Rの標準ライブラリMASSにインストールされています。

しかし、この記事ではローカルのデータをインポートする方法を紹介したいので、下のボタンよりBostonデータをダウンロードし、任意のフォルダに保存してください。

各カラム(データ列)の意味は以下の通りです。

今回は、住宅価格の変動をうまく説明する式を作っていきます。

つまり、MEDV_PRICEが目的変数で、それ以外が説明変数の候補となります。

データの読み込み

CSVファイルの読み込みを実行するコードは次の通りです。

df <- read.csv("C:/Users/user/Documents/R_Study/boston.csv")

引用符で囲まれたC:/Users/user/Documents/R_Studyの部分はCSVファイルの保存先に応じて変更してください。

上記のコードを実行すると、CSVファイルのデータが “df” という名前の箱に格納されます。

<- (矢印)によって、データなどが格納された箱(上記の場合df)をオブジェクトといいます。

関数headを実行し、次のように先頭数行のデータが表示されれば、正常にデータが読み込まれています。

head(df)

データの可視化

データ分析で大事なことはデータの傾向を掴むことです。

なぜならデータの傾向によって、分析プロセスが変わってくるからです。

単に並んだ数値を眺めるだけでデータの傾向を掴むのは難しいでしょう。

データをグラフで可視化すれば、データの傾向が把握しやすくなります。

目的変数の分布

目的変数であるMEDV_PRICE(住宅価格)の分布をヒストグラムで確認してみましょう。

ヒストグラムを作成するコードは次の通りです。

hist(df$MEDV_PRICE)

“オブジェクト$カラム”と記述することで特定のカラムのみを抽出していま。

ヒストグラムとは、横軸に階級、縦軸に度数をとった統計グラフです。

21~25が最頻値で、26より右にいくにつれて段々下がっているのに、46~50で度数が少し上がっています。

このことから、実際は50より高い値でも50に丸められている可能性が考えられます。

そういう場合、MEDV_PRICEが50より高い観測データを分析に使用しない方が良い結果になる可能性があります。

今回は、50以上の値もそのまま使用します。

相関分析

目的変数と各説明変数の相関関係を可視化します。

相関とは2つの物事が互い影響し合うことであり、散布図によって可視化することができます。

相関の強さは相関係数という指標で表すことができます。

相関係数は -1 から1の間をとり、その絶対値が大きいほど相関が強いという解釈になります。

Rでは散布図と相関係数を同時に出力してくれる便利な機能を使うことができます。

この機能は標準では用意されていませんが、インターネットが繋がっていれば簡単に追加することができます。

この作業をパッケージのインストールといいます。

今回はpsychというパッケージを次のコードでインストールします。

install.packages("psych")

パッケージのインストールだけでは、その機能は使えません。
library(パッケージ名)というコードを実行する必要があります。

library(psych)

ここからpsychを使って散布図を出力していくのですが、今回は説明を簡単にするために変数を”RM”、”LSTAT”、”MEDV_PRICE”の3つに絞って散布図を出力します。

psychを使えば、全組み合わせの散布図を同時に出力できます。

df.s <- df[,c(7,14,15)]  #"RM"、"LSTAT"、"MEDV_PRICE"をdf.sに格納
psych::pairs.panels(df.s) #散布図を出力

左斜めの対角線上に各変数のヒストグラムが表示され、対角線より左下には散布図が、右上には相関係数が表示されています。

一番右上を見ると”RM”と”MEDV_PRICE”の相関係数は0.70ということで比較的強い相関があることが分かります。

これは住居の平均部屋数が多いほど、住宅価格は高くなることを意味し、一番左下の散布図でもその関係性が確認できます。

目的変数に対する相関係数が高い変数をモデルの説明変数に設定することで、モデルの精度向上が期待できます。

このように、データの特性を探索する手法の総称をEDAといいます。

EDAについては、下記で解説していますので、こちらもあわせてお読みください。

重回帰モデルの作成

重回帰モデルを作成していきます。

次の1行のコードを実行するだけです。

関数lmで式とデータを指定し、適当に名前をつけた箱に結果を格納するだけです。

あとはRが最小二乗法で最適な偏回帰係数を推定してくれます。

ans <- lm(MEDV_PRICE ~ RM + LSTAT , data = df.s)

ちなみに説明変数を指定する箇所をピリオド(.)にすると、データの(目的変数に指定したカラムを除く)全カラムを説明変数として指定します。

説明変数の数が多いときに便利です。

ans <- lm(MEDV_PRICE ~  . , data = df.s)  #上の式と同じ意味

分析結果の解釈

最後に重回帰分析の結果の解釈方法について解説します。

結果を確認するには、関数summary()を使います。

括弧の中には重回帰モデルの結果を格納した箱を指定します。

summary(ans)

summary()を実行すると下のような結果が返ってきます。

ここで特に確認すべき箇所は、赤枠の係数決定係数です。

それぞれの見方を解説します。

係数

Coefficients(係数)の出力のうち、特に重要なのが次の3つです。

偏回帰係数

Estimateは偏回帰係数、(Intercept)は切片(定数項)です。

偏回帰係数 と切片を式に当てはめると次のようになります。

この式の変数x1とx2にそれぞれRM、LSTATの値を代入することで住宅価格の推定値を求めることができます。

t値

目的変数の変動に対する各説明変数の影響度の強さを比較したいときにはt値を見ましょう。

偏回帰係数じゃダメなの?と思うかもしれませんが、偏回帰係数は変数間の単位の違いを考慮していません。

単位が全く違うもの同士の数値(例えば、体重[kg]と身長[cm])を比較しても全く意味がありません。

その点、t値は単位の違いを考慮しています。

影響度を比較するときはt値の絶対値を見ましょう。

絶対値とは符号を除いた値のことです。

今回の分析結果では、RMよりもLSTATの方がt値の絶対値が高いので、LSTATがより影響度が強いことが分かります。

p値と有意表記

p値はt値の大きさによって決まる確率で、p値が小さいほど、その係数を信じていいよという意味です。

RMの係数が本当は0だとすると、5.09479という係数がデータの偏りで生じる確率は 2×10のマイナス16乗(限りなく0)%ということ意味しています。

RMの係数が0とは言えないということは、RMの変動は目的変数の変動に強く影響している可能性が非常に高いということです

p値が高いと見るか低いと見るかは人が決めます。

一般的には1%と5%がよく判断基準として使われます。

この基準を有意水準といい、Rでは有意な説明変数に*印が表記されます。

p値が小さいほど*印が増えます(最大3つ)。

決定係数

決定係数とは、モデルの当てはまりの良さを0~1で表す指標で、1に近いほど当てはまりが良いとされます

当てはまりの良さとは、目的変数の変動をどの程度うまく説明できているかということです。

重回帰モデルを数値の予測に使用する際は、この決定係数を見て、当てはまりの良さを確認しましょう。

今回の重回帰分析における決定係数(Multiple R-squared)は0.6386ということで、当てはまりの良さとしては、まずまずです。

ここで注意すべきなのが決定係数は「説明変数の個数が多いほど高くなる」という欠点を持っていることです

説明変数が多いほど当てはまりが良いわけではありません

そこで考えられたのが、自由度調整済み決定係数です。

これはモデルに使っている説明変数の個数をペナルティとして補正した決定係数です。

今回の重回帰モデルに使用されている説明変数は2つだけなのでペナルティが小さいですが、補正前に比べて若干低くなっていることが分かります。

まとめ

ビジネスにおける分析でもよく使われる重回帰分析の基礎について解説し、統計解析ソフトのRで重回帰分析を実践する方法をご紹介しました。

本記事に関するご指摘、ご質問がございましたら、Twitterにてお気軽にメッセージをください。

Twitterアカウント@data_nava

Twitterでも統計学、機械学習について発信しておりますので、フォローいただけると嬉しいです!

データ分析について学びたい方にオススメの講座

【DataMix】データサイエンティスト育成コース

この講座は、未経験の方であってもデータサイエンティストのエントリー職として仕事に就けるレベルにまで引き上げることを目的とした講座です。

データサイエンティストに必要な知識やスキル、考え方を実践的に学ぶことができる約6か月間のプログラムです。

【DataMix】データサイエンティスト育成コースで学べる知識・スキル

・機械学習・統計学に関する基礎知識
・PythonとRによるプログラミング
・自然言語処理
・画像処理(Deep Learning)
・データサイエンスPJの進め方

コメント

タイトルとURLをコピーしました