在R中使用glm(..)获得95%的置信区间

时间:2013-12-16 20:29:34

标签: r statistics glm confidence-interval mixed-models

以下是一些数据

dat = data.frame(y = c(9,7,7,7,5,6,4,6,3,5,1,5), x = c(1,1,2,2,3,3,4,4,5,5,6,6), color = rep(c('a','b'),6))

如果您愿意,可以使用这些数据的图表

require(ggplot)
ggplot(dat, aes(x=x,y=y, color=color)) + geom_point() + geom_smooth(method='lm')

使用函数MCMCglmm() ...

运行模型时
require(MCMCglmm)
summary(MCMCglmm(fixed = y~x/color, data=dat))

我得到估计值的下限和上限95%,让我知道两个斜率(颜色= a和颜色= b)是否有显着差异。

查看此输出时......

summary(glm(y~x/color, data=dat))

......我看不到置信区间!

我的问题是:

使用函数glm()时,如何估算这些估计值的上下95%区间?

2 个答案:

答案 0 :(得分:10)

使用confint


mod = glm(y~x/color, data=dat)
summary(mod)
Call:
glm(formula = y ~ x/color, data = dat)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-1.11722  -0.40952  -0.04908   0.32674   1.35531  

Coefficients:
            Estimate Std. Error t value     Pr(>|t|)
(Intercept)   8.8667     0.4782  18.540 0.0000000177
x            -1.2220     0.1341  -9.113 0.0000077075
x:colorb      0.4725     0.1077   4.387      0.00175

(Dispersion parameter for gaussian family taken to be 0.5277981)

    Null deviance: 48.9167  on 11  degrees of freedom
Residual deviance:  4.7502  on  9  degrees of freedom
AIC: 30.934

Number of Fisher Scoring iterations: 2

confint(mod)
Waiting for profiling to be done...
                 2.5 %     97.5 %
(Intercept)  7.9293355  9.8039978
x           -1.4847882 -0.9591679
x:colorb     0.2614333  0.6836217

答案 1 :(得分:3)

@ alex的方法会让你获得信心限制,但要小心解释。由于glm基本上是非线性模型,因此系数通常具有较大的协方差。你应该至少看看95%置信度椭圆。

mod <- glm(y~x/color, data=dat)
require(ellipse)
conf.ellipse <- data.frame(ellipse(mod,which=c(2,3)))
ggplot(conf.ellipse, aes(x=x,y=x.colorb)) + 
  geom_path()+
  geom_point(x=mod$coefficient[2],y=mod$coefficient[3], size=5, color="red")

产生这个,这是x和交互项的95%置信椭圆。

注意confint(...)产生的置信限是如何与椭圆一致的。从这个意义上说,椭圆提供了更保守的置信限度估计。