Testing the statistical significance of variance components

Michael Papenfus writes,

I have been using your ARM book to learn multilevel modeling and I have a question which I cannot seem to find answer to in your book. How can I assess the overall significance of a random effect (varying intercept)?
Let say I estimate

M1 <- lmer(y ~ 1 + x (1|country)) and obtain the results from your book which include Error terrms: Group Name Std.Dev. county (Intercept) 0.33 Residual 0.76 Is there a way to test for the overall significance of the random effect (varying intercept)? I don't believe that the se.ranef is what I am looking for. I believe that some packages such as Stata xtmixed provide standard errors to the variance components.

My reply: the mcsamp() function does approximate posterior simulations for the multilevel model and will give you a sense of the uncertainty in the variance parameters. To test the statistical significance, though, you have to fit the model with and without the variance parameters and check some measure of fit. I haven’t thought too much about this problem because I usually keep in whatever I can, discarding variance parameters only for convenience (in which case it’s usually clear in practical terms that a variance component is small enough that it can be ignored). Ultimately, I think all the variance components exist at some level, although they can be small enough that they can be ignored. That said, you can compare models with and without variance components using predictive accuracy. See the table on the top of p.526 for an example.

2 thoughts on “Testing the statistical significance of variance components

  1. I have actually been wondering about mcsamp recently in the context of multilevel ANOVA. The ARM book presents a wonderful way to create the ANOVA-style graphs such as those referenced in the Song paper and the ARM book. Can one use mcsamp to do this with lmer objects? That might be a really great way to make that sort of analysis easily accessible to folk who are familiar with an ANOVA type of framework and are just dipping their toes into the multilevel world.

  2. In BUGS I guess you could also set up a mixture distribution for the variance component, rather like SSVS, something like

    sdI[1] ~ dunif(0,100)
    sdI[2] ~ dunif(0,0.01)
    Ind ~ dcat(p[])
    p[1] ~ dbeta(1,1); p[2]

Comments are closed.