I'm fitting linear mixed models and I have slightly inflated p-values due to multicollinearity. I deleted the factors with the highest VIFs until none of them was larger than 3.

The VIFs tell me, how much the variances in my model are inflated due to collinearity, so just out of curiosity, I then calculated, what p-values I would have gotten with a VIF of 1.

From the SE in the model summary I calculated the variance, divided it by the VIF and then re-calculated the new SE and t-value from which I then calculated "adjusted" p-values.

Would you regard this as a valid approach? I did not find any publications on that topic and I'm afraid I'm making things a little too easy?!?

I added some self-containing Code below:

# create data.frame with "inflated" t- and p-values

    summary = data.frame(Factor = c("(Intercept)", "temperature", "color", "amount of beer"), Value = c(-3.2,2.1,0.5,3), Std.Error = c(3,1,0.8,0.9), DF = c(20,20,20,20))
    summary$t.value = NA
        summary$t.value = summary$Value/summary$Std.Error
    summary$p.value = NA

    for (i in 1:4)
      p.value = 2*pt(-abs(summary$t.value[i]), df = 20)
          summary$p.value[i] = p.value

# some moderate variance inflation factors 
    vif = c(1.4,3,1.03,2.4)

# calculate new t- and p-values taking VIFs into account
    summary$var_new = sqrt(summary$Std.Error)/vif # variance / VIF = "adjusted" variance
    summary$t.value_new = summary$Value/(summary$var_new)^2 # "adjusted" t-values
        summary$p.value_new = NA

    for (i in 1:4)  #calculating p-values from adjusted t-values
      p.value_new = 2*pt(-abs(summary$t.value_new[i]), df = 20)
          summary$p.value_new[i] = p.value_new
  • $\begingroup$ Could you explain how you know the p-values are "inflated" due to multicollinearity? Inflated with respect to what? There are many threads on this site dealing with selecting variates in regression models and coping with multicollinearity: you may find the results of a search to be informative. $\endgroup$ – whuber Dec 2 '13 at 20:29
  • $\begingroup$ To your first question: p-values should be inflated, since variance inflation factors indicate inflated variance, which in return means a lower t-value and thus a larger p-value. I'm not sure if it is what you meant, as it is rather obvious. So I probably got your question wrong. Your second question, to what I compare the inflation is exactly my point of doubt. If I say that the variance inflation factors indicate higher p-values and I want to give the corrected p-values, than that means that I ignore multicollinearity allthough it is present. $\endgroup$ – Frize Dec 2 '13 at 21:02
  • $\begingroup$ However, then I don't really get the point of VIFs. What do they tell me if not "how much my p-values (or variance) is biased by multicollinearity... so basically I just wanted to create some kind of "p-value-inflation-factor"... I hope I didn't confuse you, with my weird explanation $\endgroup$ – Frize Dec 2 '13 at 21:05
  • 1
    $\begingroup$ It is not obvious what "inflated" variance could possibly mean here, because you have no relevant basis of comparison. Since your procedure changes the data in a way unrelated to the response, it does not make sense to reason that a decrease in variance will decrease a p-value. VIFs describe linear relationships among the explanatory variables only. They are important because (1) huge VIFs ($3$ is not huge) are flags for floating point roundoff errors and (2) they indicate the effects of some variables might not reliably be distinguished, regardless of the response variable. $\endgroup$ – whuber Dec 2 '13 at 21:12
  • $\begingroup$ Ok tanks a lot. Perhaps you could re-post it as an answer so I can vote it up! $\endgroup$ – Frize Dec 3 '13 at 10:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.