Rによる回帰分析の実施手順を紹介
本日からRの使い方の実践として、「回帰分析」について紹介していきます。なお、回帰分析の理論については、こちらの特集内の【寄稿】回帰分析とその応用を参照ください。
『”R”で実践する統計分析|回帰分析編』は、全3回で、以下の構成で進めていきます。
回帰分析編 第1回:単回帰分析
回帰分析編 第2回:重回帰分析
回帰分析編 第3回:ロジスティック回帰分析
本日は第1回の単回帰分析です。
Rによる回帰分析
今回、利用するデータは、回帰分析とその応用① ~回帰分析は何のために行うのか?で紹介されていた広告宣伝費と来店者数のデータを拝借します。
* 出所: 柏木吉基(2012)『明日から使えるシンプル統計学』(技術評論社)p.124
それでは、Rを動かしていきます。データは、既にcsvファイル化されていると仮定して、早速、R環境に読み込ませましょう。
# csvファイルのデータのカラムは、次のように設定しています。
広告宣伝費 → advertizing.cost
来店者数 → visit.num
> data.lm <- read.table(“sample_lm.csv”, sep=”,”, header=T)
csvファイルですので、区切り文字は、”,”(カンマ)を指定しています。{sep=”,”}がその指定箇所です。また、ヘッダーがありますので、{header=T}で、その指定をします。ヘッダーがなければ、header=Fとします。TはTRUE、FはFALSEを指します。
# Rでのファイル読み込み対象のフォルダを確認するには、getwd関数を実行します。また、フォルダを変更したい場合は、setwd(“フォルダパス”)を実行します。パス指定に使用する区切りは、”/”(スラッシュ)で指定してください。
さて、データを{data.lm}という変数に格納しましたので、念のため、データを確認しましょう。
> data.lm
csvファイルに保存しているものと同じデータが表示されましたね。次に、データの傾向を事前に掴んでおきたいと思います。回帰分析の前に、データをグラフ化しましょう。以下のコマンドを実行します。
> plot(data.lm, col=2, main=”広告宣伝費と来店者数の関係”, xlab=”広告宣伝費(千円)”, ylab=”来店者数(人)”)
グラフを作成する際は、基本的に、plot関数を利用します。plot関数には、色々な引数が用意されており、その値を変更することで、グラフの出力を変更させることが可能です。今回は、{col=2}を指定することで、プロットの点を赤色に指定し、{main=”広告宣伝費と来店者数の関係”}を指定することで、グラフのタイトルを表示させています。また、xlabとylabで、それぞれX軸とY軸のラベルを設定しています。
# デフォルトでは、プロットの色は黒であり、タイトルは表示されません。軸のラベルも表示はされません。
二次元平面上にプロットした結果、広告宣伝費と来店者数は、正の相関関係がありそうですね。では、いよいよ、「回帰分析」の登場です。次のコマンドを実行しましょう。
> output.lm <- lm(data.lm$visit.num~data.lm$advertizing.cost)
回帰分析分析をする際は、基本的に、上記のコマンドを実行するだけでOKです。コマンドの{data.lm$visit.num~data.lm$advertizing.cost}が、モデル式のvisit.num=(advertizing.costの関係式)を意味しています。
# 正確には、今回は、単回帰分析を実践していますが、重回帰分析でも、やり方はほとんど同じです。
とは言え、このままだと、回帰分析を実行しただけですので、結果がまだ見れません。まずは、先ほど表示したグラフに、作成した回帰分析のモデル(直線)を表示してみましょう。
> abline(output.lm)
綺麗な直線が追加されましたね。上記のコマンドは、グラフ上に直線を引く時に使用するコマンドです。
ここまでで、データの読み込みを含めても、たったの「5行」しかRのコードを書いていません。かなり簡単な操作で、回帰分析が実行出来たことがお分かり頂けたと思います。
Rの結果解釈
それでは、Rで得られた結果を見ていきます。以下のコマンドを実行してください。
> summary(output.lm)
以下のような結果が出力されたと思います。
結果の解釈をしていきましょう。先ずは、モデル式の各変数の「係数」を確認します。{Coefficients:}の箇所を見ます。その中の{(Intercept)}がy切片に該当し、{advertizing.cost}が宣伝広告費の係数となります。y切片が「3.080(つまり、3.080×10^3=3080)」、宣伝広告費の係数が「5.252e-02(5.252×10^-2=0.05252)」と読み取れます。つまり、今回のモデル式は、{(来店者数) = 0.05252 × (宣伝広告費) + 3080} という結果になったことが分かります。
結果の見方は、少し慣れが必要そうですね。では、回帰分析とその応用① ~回帰分析は何のために行うのか?での上記データの回帰分析結果と比較してみましょう。
どうでしょうか?ほぼ同じ結果となっていますよね。Excelでは、グラフ上への近似式の追加機能により簡単に回帰分析が実施できますが、Rでも、そこまで難しい操作を必要とせずに回帰分析が実行できます。是非ともお試し頂けたらと思います。
次回は、Rによる重回帰分析となります。次回もお付き合い頂けたら幸いです。
おまけ: RStudioによるデータの読み込み
前回のおまけで、RStuioをおススメしたわけですが、折角ですので、RStuioで読み込んみましょう。RStuioのTools>Import Dataset>From Text Fileを選択します。ダイアログが表示されますので、読み込ませたいファイルを指定します。ファイルデータの読み込みの設定画面(Import Dataset)が表示されます。以下の項目を設定します。
# RStudioで読み込む場合は、フォルダパスにマルチバイト文字を含むとエラーが発生がしますので、注意が必要です。
・Name : データの格納先(変数名)
・Heading : ヘッダーが有るか無いか
・Separator : 区切り文字の種類の設定
・Decimal : 小数点の点の種類
・Quote : 引用符記号の設定
今回は、以下のように設定しましょう。
・Name : data.lm
・Heading : Yes
・Separator : Comma
・Decimal : Period
・Quote : Double quote(“)
設定が完了しましたら、右下の「Import」ボタンをクリックします。そうしますと、自分でコマンドを入力せずとも、指定したファイルのデータがdata.lmに読み込まれます。
便利な機能なのでぜひお試しください。
【当記事は、ギックスの分析ツールアドバイザーであるYuu.Kimy氏にご寄稿頂きました。】
Yuu.Kimy
ギックス分析ツールアドバイザー。普段は、某IT企業にてデータ活用の検討/リサーチ、基盤まわりに従事。最近の関心事は、Rの{Shiny}パッケージのWebアプリ作成、Pythonによるデータ分析、機械学習等々。週末は、家事と子どもの担当をこなす(?)家庭にやさしいエンジニア(の端くれ)。
【個人ブログ】http://yuu-kimy-note.