Automatically use LRT to assess significance of entire factor variable

别说谁变了你拦得住时间么 提交于 2019-12-10 09:43:15

问题


R's output for a multivariable regression model including one or more factor variable does not automatically include a likelihood ratio test (LRT) of the significance of the entire factor variable in the model. For example:

fake = data.frame( x1=rnorm(100), x2=sample(LETTERS[1:4], 
       size=100, replace=TRUE), y=rnorm(100) )

head(fake)
          x1 x2          y
1  0.6152511  A  0.7682467
2 -0.8215727  A -0.5389245
3 -1.3287208  A -0.1797851
4  0.5837217  D  0.9509888
5 -0.2828024  C -0.9829126
6  0.3971358  B -0.4895091

m = lm(fake$y ~ fake$x1 + fake$x2)
summary(m)

If we want to test the significance of the entire variable x2 in the model, we can fit a reduced model m.red and use the LRT:

m.red = lm(fake$y ~ fake$x1)
anova(m, m.red, test="LRT")

But if you have many factor variables in a model, doing this over and over becomes ridiculous. I have to believe there is some built-in approach?


回答1:


I think you're looking for drop1:

drop1(m,test="Chisq")
## Single term deletions

## Model:
## fake$y ~ fake$x1 + fake$x2
##         Df Sum of Sq    RSS     AIC Pr(>Chi)
## <none>               79.814 -12.547         
## fake$x1  1   0.33741 80.152 -14.125   0.5160
## fake$x2  3   2.88510 82.699 -14.996   0.3142


来源:https://stackoverflow.com/questions/26618951/automatically-use-lrt-to-assess-significance-of-entire-factor-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!