Rで統計学を学ぶ(8)

この講義では、教科書の第15章「回帰分析」をとりあげます。 回帰分析とは、1つあるいは複数の変数の値を用いて、ある一つの変数の値を予測するために用いられる多変量解析の一つです。

このウェブページと合わせて教科書を読み進めてください。

学習項目です:


回帰分析

回帰分析では、この切片と偏回帰係数を具体的に求めることにより、目的変数(この例では娘の身長)を予測変数(この例では父親と母親の身長)によってよりよく予測できるようにすることが目的。

Rによる分析: lm(目的変数 ~ 説明変数1 + 説明変数2 + ...)
> Data <- data.frame(重回帰データ)		# データフレームに変換
> attach(Data)				# attachすることで、次の省略記法が使える
> ( result <- lm(娘 ~ 父 + 母) )		# Data$娘 を 娘 で表せる
Call:
lm(formula = 娘 ~ 父 + 母)

Coefficients:					# 偏回帰係数と切片
(Intercept)           父           母  
  100.66683      0.38064     -0.04289  

> summary(result)				# 詳しい分析結果の表示

Call:
lm(formula = 娘 ~ 父 + 母)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7014 -1.3216 -0.4500  0.6065  4.5125 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 100.66683   22.42209   4.490 0.000371 ***
父            0.38064    0.09569   3.978 0.001081 ** 
母           -0.04289    0.09367  -0.458 0.653215    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.952 on 16 degrees of freedom
Multiple R-squared: 0.509,      Adjusted R-squared: 0.4476 
F-statistic: 8.294 on 2 and 16 DF,  p-value: 0.003377 
この結果から次の回帰式(予測変数が複数なので「重」回帰式)が導かれました:
娘の身長 = 100.67 + 0.381 ×父親の身長 + (-0.043) ×母親の身長
ただし、切片と父親の身長の偏回帰係数は1%水準で有意ですが、母親の身長の偏回帰係数は有意でないという結果であることに注意してください。また、Residuals(残差、つまり予測値と実際の値の差)の標準誤差(標準偏差)が1.952となっていますが、これは自由度を16として得られた値であることにも注意しましょう。
[母親の身長を予測変数から外す]
娘の身長データの例では、母親の身長の偏相関係数がほぼ0であり、しかも有意でないことが示されました。 この結果から、「simple is best」ということで、予測変数から母親の身長を外してみましょう。
それには、 lm(娘 ~ 父)として回帰分析をやり直す方法もありますが、次のように、 関数updateを使う方法があります:
> 単解析結果 <- update(result, .~. - 母)		# 予測変数から「母」を取り除く
> summary(単解析結果)				# 結果の詳しい表示

Call:
lm(formula = 娘 ~ 父)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.6841 -1.2146 -0.4087  0.5352  4.7036 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 93.32204   15.29708   6.101 1.18e-05 ***
父           0.38516    0.09294   4.144 0.000678 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.906 on 17 degrees of freedom
Multiple R-squared: 0.5026,     Adjusted R-squared: 0.4733 
F-statistic: 17.18 on 1 and 17 DF,  p-value: 0.0006784 
予想通り、「父」のみでも有意であり、しかもp値が先より小さくなっています。 これが示す単回帰モデルは次のとおりです:
娘の身長 = 93.3 + 0.385 ×父親の身長

標準偏回帰係数は次の式で与えられます:

標準偏回帰係数 = 偏回帰係数 × 独立変数の標準偏差 / 従属変数の標準偏差

ここで標準偏回帰係数とは、元データを標準化したときの偏回帰係数のことです。そして、 これはRでは次のように求めることができます:
> coef(result)[2:3]*sapply(Data[,2:3],sd)/sd(Data[,1])
         父          母 
 0.70254903 -0.08093953 
なお、coef(result)は、lm関数の結果から偏回帰係数を抽出するための関数で、 coef(result)[2:3]により、父親と母親の偏回帰係数が取り出せています。 それぞれの値に対し、標準偏回帰係数の定義どおり、 独立変数の標準偏差(sd(Data[,2])sd(Data[,3])を掛け、 従属変数の標準偏差(sd(Data[,1]))で割っているのが上のプログラムでした。

ここで、回帰分析の例で示したlm関数の出力の最後の2行に注目します:
Multiple R-squared: 0.509,      Adjusted R-squared: 0.4476 
F-statistic: 8.294 on 2 and 16 DF,  p-value: 0.003377 
lm関数の結果において、Multiple R-Squaredの値によって示されるのは 重相関係数の二乗(または決定係数)といい、説明力を示す値です。 予測変数を用いて目的変数(の2乗)をどの程度説明できるかを表しています。 その値が0.509 ならば、およそ 50% を説明できた、となります。
なお、lm関数の結果の最後の行、F-statisticとはF値のことで、この結果得られたモデルのp値などを示しています。この例では p値は 0.0034 ですから、1%の水準で有意となっています。

回帰直線について: 回帰分析では、目的変数は予測変数の一次式で表されています。 予測変数が一個ならば(2次元平面において)直線になり、予測変数がニ個ならば(3次元空間において)平面になります。
前に例題とした娘の身長データ(目的変数)において、父親の身長を唯一の予測変数としたとき、
娘の身長 = 93.3 + 0.385×父親の身長
という回帰式(予測変数が1個なので「単」回帰式です)が得られました。 これは1次式ですから直線です。これを父親の身長と娘の身長の散布図に重ねて書くには次のようにします:
> plot(父, 娘)			# 散布図
> abline(lm(娘 ~ 父))			# 回帰直線を重ね書き

課題 1

娘の身長データにおいて、父親の身長データを唯一の予測変数として、回帰分析せよ。 次に、娘と父親の身長データの散布図に、回帰直線を重ね書きせよ。ただし、直線の色を青(blue)とする。

参考:統計的学習理論

統計学に基づくデータからの学習を「統計的学習」という。これは人間による学習ではなく、計算機(AI)がデータから「学習」して予測や推論をするためのアルゴリズムの研究分野である。コンピュータに学習能力を持たせるための方法論を研究する「機械学習」の発展形である。

統計的学習により次のような応用がある:

これらの応用において、入力になるのが予測変数(独立変数、説明変数, Xで表す)であり、予測や推論の結果が目的変数(従属変数、基準変数、Yで表す)である。 この間の関係が Y = f(X)+ε (fは何らかの関数, εはランダム誤差)として表されるとすると、統計的学習はデータに基づいて関数 f を推定することといえる。 (なお、fの推定を選ぶ基準としては、「期待(2乗)予測誤差」EPE(f)=E(Y-f(X))を最小にすることがよく用いられる。)

ここでfが何らかの形で書けると仮定するものを「パラメトリック(parametric)」手法、仮定しないものを「ノンパラメトリック(non-parametric)」手法という。 この観点からみると、ここで取り上げた回帰分析は、関数fがXの線形一次式で書けると仮定したパラメトリック手法の一つとなる(実際には「線形」回帰分析には、Xの対数、平方根、自乗なども式に含める)。そしてfの推定は、残差平方和(つまり誤差の2乗の和)が最小になるようXの係数を求める「最小二乗法」が用いられているとみなせる。

今の話から推測できるように、パラメトリックな手法でも関数fを線形と仮定しない(つまり非線形)方法がある。またノンパラメトリックな手法もたくさんある(特に人工知能やデータマイニングと関連)。これらについては「機械学習」、「統計的学習」、「データマイニング」をキーワードとして学んでいってほしい。
お勧め文献:
Hastie, T., Tibshirani, R., & Friedman, J. (2009) The elements of statistical learning. Springer (杉山ら訳 (2014)『統計的学習の基礎』共立出版)
James, G., Witten, D., Hastie, T. & Tibshirani, R. (2013) An Introduction to Statistical Learning: with Applications in R. Springer.


演習問題

問題 8-1.

Advertising.csvは、200箇所のマーケットにおける、ある製品の売上高(Sales)と、製品販売に使ったテレビ(TV)、ラジオ(Radio)、新聞(Newspaper)の広告費のデータである。 売上高を目的変数、他の3つを予測変数とし、 予測変数ごとに単回帰分析して、モデル、p値、決定係数、およびF値を示せ (決定係数についてはここを参照)
また、3つの予測変数すべてによる重回帰分析を行い、予測変数ごとの単回帰分析の結果と比較せよ。
出典: G. James et al.(2013) An Introduction to Statistical Learning: with Applications in R. Springer.
[データの読み込み]
次のようにすれば(ただし、適切に「ディレクトリの変更」を行っておくこと)、 Advertising.csvデータをdata変数に取り込むことができる。回帰分析には lm関数(と summary関数)を使う。なお、散布図に回帰直線を書き込みたい場合は、 散布図には plot関数、回帰直線の重ね書きには abline関数を使う。
data <- read.csv("Advertising.csv")

問題 8-2.

Income2.csvは、アメリカにおいて、教育年数(Education: 小学校からの教育期間を表す---10が中卒、13が高卒、17が大卒、22が博士)と就職年数(Seniority)と収入(Income)を表にしたものである。収入を目的変数、教育年数と就職年数を予測変数として重回帰分析せよ。また、教育年数(x軸)と収入(y軸)との散布図を書き、回帰直線をその散布図に書き込め。
出典: G. James et al.(2013) An Introduction to Statistical Learning: with Applications in R. Springer.

Rで統計学(7)         トップページに戻る        Rで統計学(9)