「Rでlmコマンドの結果からStd. Errorを取得する」に書いてあることについて
回帰分析の係数の区間推定を求めたいときがあり,そのためには,回帰係数の標準誤差を求める必要があるということですが。
その後,自分で計算式を書いて求めているのだけど,
回帰係数の信頼区間を求めるための confint という関数があるよということがオンラインヘルプに書いてある(See Also の項)。
> r <- lm(Sepal.Length~., iris[-5]) # expressionは任意の推定式です
> coef(summary(r))[, 2]
(Intercept) Sepal.Width Petal.Length Petal.Width
0.25077711 0.06664739 0.05671929 0.12754795
> # 例えば3番目の係数の95%信頼区間を求めたいときは、以下のようにしてください。
> a <- 0.05/2 # 両側検定
> df <- summary(r)$df[2] # 自由度
> b <- coef(r)[3] # 3番目の係数
> se <- coef(summary(r))[, 2][3] # 3番目の標準誤差
> sprintf("%.3f(95%%信頼区間%.3f~%.3f)", b, b-se*qt(a, df), b+se*qt(a, df))
[1] "0.709(95%信頼区間0.821~0.597)"
信頼区間を求めるには,
> confint(r)
2.5 % 97.5 %
(Intercept) 1.3603752 2.3516197
Sepal.Width 0.5191189 0.7825554
Petal.Length 0.5970350 0.8212289
Petal.Width -0.8085615 -0.3044038
だけでよい。summary する必要も,その結果から SE を抽出する必要も,結果を計算する必要もない。返されるのは matrix