準備

パッケージの読み込み

今回の実習では、dplyr というパッケージを利用する。 インストール済みでない場合は、install.packages() でまずインストールする。インストールが済んだら、library()でパッケージを読み込む。

データの読み込み

前回の実習で使ったデータを利用する。 (前回ダウンロードしていない者は、データ (lec13-data.csv) をダウンロードし、プロジェクト内の data フォルダの中に保存する(このデータは架空のものである)。)

データセットを read.csv() で読み込み、 myd という名前で利用する。

データセットに含まれる変数を確認しよう。

## [1] "id"       "female"   "support"  "height"   "faheight"

このデータセットに含まれているのは、以下の変数である。

  • id: 個人のID(識別番号)
  • female: 女性であることを表すダミー変数(男性なら0、女性なら1)
  • support: 内閣を支持することを表すダミー変数(不支持なら0、支持なら1)
  • heihgt: 身長 (cm)
  • faheigt: 父親の身長 (cm)

データの一部を確認してみよう。

##   id female support height faheight
## 1  1      0       1  174.5    179.0
## 2  2      0       1  171.3    166.4
## 3  3      0       0  174.2    169.7
## 4  4      0       1  173.5    171.5
## 5  5      0       1  169.7    156.5
## 6  6      1       0  157.0    163.1
##        id female support height faheight
## 995   995      0       1  172.4    170.0
## 996   996      0       1  172.1    168.8
## 997   997      0       1  170.7    171.4
## 998   998      1       0  161.5    171.9
## 999   999      1       0  159.5    173.5
## 1000 1000      0       1  172.4    169.7

回帰分析の基礎

例題

親子の身長の関係に興味があるとしよう。ここでは、息子の身長 (height) と父親の身長 (faheight) の関係を調べたい。

私たちのデータの height には、息子の身長だけでなく、娘の身長も含まれているので、データセットから息子の行だけ抜き出したい。データセットには、女性を示すfemale という変数が含まれているので、この変数の値が0の行だけ抜き出せばよい。これは、dplyr パッケージの filter() で実行できる。男性だけのデータセット myd_m を作ってみよう。

男性だけ抜き出せたか確認してみよう。

## 
##   0 
## 500

female の値がすべて0なので、男性だけ抜き出せたことがわかる。

2変数の関係を調べる

息子の身長と父親の身長の関係を調べてみよう。2変数とも量的変数なので、散布図を作り、相関係数を求める。

## [1] 0.8121794

散布図と相関係数から、息子の身長と父親の身長の間には、強い正の相関がありそうだということがわかる。

原因と結果の関係を想定する

息子の身長と父親の身長の間に正の相関があることはわかった。この2つの変数の関係を理論的に考えてみると、父親の身長が高いことが原因であり、息子の身長が結果であるという関係(遺伝関係)が想定される。つまり、2つの変数には、因果関係がありそうだということが考えられる。では、原因と結果にはどのような関係があるだろうか。

変数間に因果関係が想定されるとき、結果となる変数のことを結果変数 (outcome variable)、原因となる変数のことを説明変数(explanatory variable[s])と呼んで分析を行う。私たちの例では、

  • 結果変数:息子の身長 (height)
  • 説明変数:父親の身長 (faheight)

である。

この2つの変数の間に「直線的な」因果関係を想定する。すなわち、次のような関数を想定する。

\[y_n = a + b x_n + \epsilon_n.\] ただし、\(n=1, 2, \dots, N\) (大文字の \(N\) が標本サイズ)で、\(\epsilon_n\) は誤差(つまり、散布図上ですべての点が直線上に乗るわけではなく、線と点にズレがあることを想定している)である。 直線を求めるとは、\(a\) (\(y\)切片) と \(b\)(直線の傾き)の値を求めるということである。このような関係を想定して直線を推定することを、「\(y\)\(x\) に回帰する (regress \(y\) on \(x\))」という。

回帰直線を求める

息子の身長を父親の身長に回帰しよう。Rで回帰直線 (regression line) を求めるには、lm() という関数を使う。lmlinear method のイニシャルであり、linear とは「線形」という意味である。大雑把にいうと、直線を推定する方法 (method) ということだ。 lm() の使い方は、lm(結果変数 ~ 説明変数, data = データセットの名前) である。これに fit(当てはめ)という名前をつけて実行してみよう。

これで、fit に回帰分析の実行結果が保存された。この結果の詳しい読み方は、『計量経済学』の講義で説明する。

ここでは、\(a\)\(b\) の推定値を取り出そう。これらの値は係数(coefficients)と呼ばれており、coef() を使うと取り出せる。先ほど保存した fit から係数を取り出してみよう。

## (Intercept)    faheight 
## 125.9522573   0.2763852

値を1つずつ取り出したいときは、次のようにする。

## (Intercept) 
##    125.9523
##  faheight 
## 0.2763852

切片 (intercept) \(a\) の推定値が約125.95、父親の身長 (faheight) の係数 \(b\) の推定値が約0.28であることがわかる。つまり、求める回帰直線は、 \[\widehat{息子の身長} = 125.95 + 0.28 \times 父親の身長\] である。 この式で、「息子の身長」の上についている記号は「ハット」と読み、実際の値ではなく予測値(または推定値)であることを示す。

この回帰直線を、図にしてみよう。plot() で散布図を描いた後に、abline() で直線を引く。abline() では、a (切片) と b(直線の傾き)を指定する。

次に、この直線の意味を考えよう。既に述べたとおり、この直線は、 \[\widehat{息子の身長} = 125.95 + 0.28 \times 父親の身長\] という式で表される。では、この式の126.95 と 0.28 は何を表しているのだろうか。

まず、切片である125.95が表しているのは、「父親の身長」が0のときの、息子の身長の予測値である。つまり、父親の身長が0cm であれば、息子の身長は平均すると125.95cm だろうと予測することになる。ただし、身長が0cmの父親は存在しないので、この例では、この数字自体に意味はない(このような意味のない値を推定することを避ける方法は『計量経済学』で解説する)。一般的には、「説明変数の値が0のときの結果変数の予測値」が切片の意味である。

次に、「父親の身長」の係数の推定値である 0.28 は何を意味しているのだろうか。これは、父親の身長が1cm高くなると、息子の身長は平均して0.28cm 高くなるということを示している。つまり、この数値が、説明変数が結果変数に与える影響の強さを表している。 回帰直線は直線なので、父親の身長が10cm高くなると、息子の身長は平均2.8cm高くなると言うこともできる。また、父親の身長が5cm 低くなると、息子の身長は平均 \(0.28 \times (-5) = -1.4\)cm 高くなる(つまり、1.4cm低くなる)ということもできる。

最後に、予測値を計算してみよう。予測値を計算するためには、説明変数である「父親の身長」に具体的な数値を代入すればよい。 例えば、父親の身長が175cmのときの息子の身長の予測値は、 \[\widehat{息子の身長} = 125.95 + 0.28 \times 175 = 174.95\] であり、父親の身長が164cm のときは、 \[\widehat{息子の身長} = 125.95 + 0.28 \times 164 = 171.87\] である。 そして、これらの予測値の集合が、回帰直線である。



実習課題: 娘の身長を父親の身長に回帰しなさい。回帰直線を図示し、父親の身長が娘の身長に与える影響について説明しなさい。また、父親の身長が165cm、170cm、175cmのそれぞれの場合について、娘の身長の予測値を求めなさい。



授業の内容に戻る