<< 目次へ
最終更新日 : 2008.10.7
単回帰モデル
単回帰モデルとは1つの連続型である従属変数と1つの連続型である独立変数によって作成されるモデルである。したがって、モデル式は従属変数をY、独立変数をXとすると次のように書ける。
Y = X
分散分析モデルでは独立変数Xはカテゴリカル型であったが、単回帰モデルでは連続型であるという点で異なる。しかし、モデル式の意味は基本的に同じで「YはXによって説明される」というものである。
ここでは例題として、睡眠時間と作業量の2変数の関係に関する研究をとりあげて考えてみることにする。この研究で行われた実験は、ワープロ検定1級(1分間に約1000文字のタイピングができる)の被験者10人に対して行われたものであり、事前に1週間の睡眠時間を分単位で記録してもらっていた。変数Sleepは1週間の平均睡眠時間、Workは10分間にどのだけの文字をタイピングできたかという文字数である。
Sleep | Work |
420 | 1020 |
460 | 1050 |
390 | 940 |
510 | 1100 |
430 | 1000 |
320 | 850 |
440 | 1000 |
400 | 980 |
270 | 800 |
400 | 990 |
まずはSleepを横軸、Workを縦軸としてデータをプロットしてみると、どうやら睡眠時間と作業量には直線的な関係が見られるようであることがわかる。もしこのとき、直線関係が見られない場合は、単回帰モデルとして解析するのは好ましくない。何らかの曲線的な関係が見られるようであれば、もはやY = Xという線形モデルとして扱う範囲を超えているからである。したがって、そのような場合にはY = X^2といった非線形モデルを当てはめたりする必要がある。あるいは、対数変換などによって解決できる場合もあるが、これについてはここでは触れないことにする。
分析例を示す前にデータのスクリーニングに関する注意がある。今回のように時間を連続型の変数として扱う場合には、分単位、あるいは秒単位に統一しておく必要がある。例えば、分単位でデータを扱うのであれば、1時間は60分なので7時間なら60*7で420分と変換しておくべきである。7時間40分であれば、60*7+40=420+40=460(分)となるわけである。
それではRによる分析例を以下に示す。
# lm()を使ってモデル解析 > result <- lm(Work ~ Sleep) # 回帰分析に対する分散分析表 > summary(aov(result)) Df Sum Sq Mean Sq F value Pr(>F) Sleep 1 69901 69901 242.16 2.897e-07 *** Residuals 8 2309 289 # 係数表 > summary(result) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 450.81262 33.98401 13.27 9.95e-07 *** Sleep 1.29254 0.08306 15.56 2.90e-07 ***
簡単に説明してしまえば、summary(aov(result))によって得られた分散分析表は「モデル式が予測に使えるかどうか」ということについて検定したものである。係数表は分散分析モデルのときと同じで、これは定数項(Intercept)、各係数(ここでは1つしかないがSleepがそうである)が0であるかどうかについて検定しているわけである。当然だが、係数表において定数項と係数が有意であれば、分散分析表も有意であるという結果になる。
結局、得られたモデル式は次のようになった。
Work = 450.81262 + 1.29254*Sleep
これはSleep(睡眠時間)が1増加するとWork(作業量)も1.30ほど増加するということを意味している。また、この直線を図に書き加えると以下のようになる。これは中学校で習った1次関数、y = ax + bと同じものである。bは切片(切片とはx=0のときのyの値である)、aは傾き(xが変化するにつれてyがどのように変化するか、その増減量のこと)というのであった。