第 6 章
線形回帰モデル
R
は回帰分析関連の関数を多数持ち,統計解析機能の中心的位置を占める.以下では,線形
(
重)
回帰モデルと一般化線形回帰モデル*1 を紹介する.現代の統計理論では,分散 分析も線形回帰モデルとして処理することが普通であるため,分散分析関連の関数もここ で一緒に紹介するのが適当である.射影追跡法等の現代的手法も紹介する.na.action
設定であり,もしこれが未設定ならna.fail()
が使われる.「工場 出荷時」既定動作はna.omit()
method
使われるメソッド.当てはめに対しては現在method="qr"
だけがサポートさ れている.method="model.frame"
はモデルフレームを返す(
指定model=TRUE
と同じ,下を見よ)
model, x, y, qr
論理値.もしTRUE
なら当てはめの成分(
モデルフレーム,モデル 行列,目的変数,分解)
が返されるsingular.ok
論理値.
もしFALSE (S
の既定値であるがR
では異なる)
なら特異な当 てはめはエラーとされるcontrasts
オプションのリスト.model.matrix.default()
のcontrasts.arg
を 見よoffset
これは当てはめの途中で,線形予測子に含められるべきことが事前に知られている成分を指定するのに使える.代わりに,または同時にオフセット項をモデル 式に含めても良い
...
低水準回帰当てはめ関数に引き渡される追加引き数(
以下参照)
返り値:
lm()
関数はクラス"lm"
のオブジェクトを返す.多変量目的変数に対 してはクラスc("mlm", "lm")
のオブジェクトを返す.関数summary()
とanova()
は結果の出力と分散分析表を得るのに使える.総称的アクセス関数coefficients(), effects(), fitted.values()
そしてresiduals()
はlm()
が返す値から様々な有用な情報を取り出すのに使うことができる.クラス"lm"
のオブジェクトは最低でも次のような成分を含むリストである.加えて,
NULL
でない当てはめは,summary
やeffects
といった抽出関数用に,線形当てはめ に関連する成分assign, effects
そして(
不要とされない限り) qr
を含むcoefficients
係数の名前付きベクトルresiduals
残差,つまり目的変数から当てはめ値を引いたものfitted.values
当てはめられた平均値rank
当てはめ線形モデルの数値計算によるランクweights (
重みつき当てはめだけに該当)
指定された重みdf.residual
残差自由度call
呼出し式terms
使われたterms
オブジェクトcontrasts (
関係するときだけ)
使われた対比xlevels (
関係するときだけ)
当てはめで使われた因子の水準の記録y
もし要求されたなら使われた目的変数x
もし要求されたなら使われたモデル行列model
もし要求されたなら(
既定)
,使われたモデルフレームlm()
に 対 す る モ デ ル 式 は シ ン ボ リ ッ ク に 与 え ら れ る .典 型 的 な モ デ ル はresponse ~ terms
と い う 形 式 を 持 ち ,こ こ でresponse
は(
数 値)
目 的 変 数 ベクトルで
terms
はresponse
に対する説明変数を指定する幾つかの項である.形式first + second
の項指定は,first, second
中の全ての項(
重複項は除いて)
を意味する.形式
first:second
の項指定は,first
とsecond
中の全ての項同士の交互作用 項を意味する.形式first*second
の項指定は,first
とsecond
中の全ての項のク ロスを意味する.これは指定first + second + first:second
と同値である.もしresponse
が行列なら,行列の全ての列に対して線形モデルが当てはめられる.詳しくはmodel.matrix()
を見よ.モデル式中の項は主効果が最初,2
次交互作用項がその次,更に
3
次交互作用が続く,等と並べ変えられる.こうすることによりterm
オブジェクトを モデル式として引き渡すことを防げる.モ デ ル 式 に は 切 片 項 が 暗 黙 の う ち に 含 ま れ る .こ れ を 除 く に は
y ~ x - 1
かy ~ 0 + x
を使う.許されるモデル式に付いてはformula()
を見よ.lm()
は実際の数 値計算にはlm.fit()
等の低水準関数を呼び出す.プログラムのためだけなら同様に低 水準関数を使うことが考えられる.weights, subset
そしてoffset
全てはformula
中 の変数と同様に評価される.つまり,まずdata
中,それからformula
の環境中である.注意:
offset
で指定されたオフセット項はpredict.lm()
による予測には含められない.他方で,モデル式のオフセット項で指定されたものは含められる.
関連:要約用の
summary.lm()
,ANOVA
表用のanova.lm()
.aov()
は別のインタフェ イスを与える.総称的関数coef(), effects(), residuals(), fitted(), vcov()
.信 頼区間と予測区間を含む予測にはpredict.lm() (predict()
を経由する)
.回帰診断に はlm.influence()
,一般化線形モデルはglm()
.背景にある低水準関数である,単純 な当てはめ用のlm.fit()
,重みつき回帰当てはめ用のlm.wfit()
.# Annette Dobson. 対照群と処理群の植物重量データ(次の図を参照)
> ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) # 対照群
> trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) # 処理群
> group <- gl(2,10,20, labels=c("Ctl","Trt"))
> group # 2群を因子化し説明変数とする(処理による差に関心)
[1] Ctl Ctl Ctl Ctl Ctl Ctl Ctl Ctl Ctl Ctl Trt Trt Trt Trt Trt Trt Trt [18] Trt Trt Trt
Levels: Ctl Trt # 2水準(Ctl:対照群,Trt:処理群)
> weight <- c(ctl, trt) # 目的変数
> anova(lm.D9 <- lm(weight ~ group)) # 線形回帰結果から分散分析表を計算 Analysis of Variance Table
Response: weight
Df Sum Sq Mean Sq F value Pr(>F) group 1 0.6882 0.6882 1.4191 0.249 Residuals 18 8.7293 0.4850
> str(lm.D9) # 線形回帰結果の全情報を見る
List of 13
$ coefficients : Named num [1:2] 5.032 -0.371
..- attr(*, "names")= chr [1:2] "(Intercept)" "groupTrt"
$ residuals : Named num [1:20] -0.862 0.548 0.148 1.078 -0.532 ...
..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
(以下省略)
> summary(lm.D90 <- lm(weight ~ group - 1)) # 切片項を除いた当てはめ結果の要約 Call:
lm(formula = weight ~ group - 1) # 呼出し式
Residuals: # 残差の要約統計量
Min 1Q Median 3Q Max # 5数要約
-1.0710 -0.4938 0.0685 0.2462 1.3690
Coefficients: # 係数の推定値,標準偏差,t値.p値はともに有意(0とは見なせない)
Estimate Std. Error t value Pr(>|t|) groupCtl 5.0320 0.2202 22.85 9.55e-15 ***
groupTrt 4.6610 0.2202 21.16 3.62e-14 ***
---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6964 on 18 degrees of freedom # 残差の標準偏差と対応自由度