[R] RE: [S] VIF Variance Inflation Factor
kjetil halvorsen
kjetilh at umsanet.edu.bo
Tue Oct 22 18:19:09 CEST 2002
There is a vif() function in the car package.
Kjetil Halvorsen
Bill.Venables at CMIS.CSIRO.AU wrote:
>
> Kenneth Cabrera asks:
>
> > -----Original Message-----
> > From: Kenneth Cabrera [mailto:krcabrer at epm.net.co]
> > Sent: Tuesday, October 22, 2002 10:05 AM
> > Cc: s-news at lists.biostat.wustl.edu
> > Subject: [S] VIF Variance Inflation Factor
> >
> > Hi Dear S+ Users:
> >
> > How can I obtain the VIF of a lm object?
> [WNV] this comes up every now and then and I suppose it has been
> answered dozens of times, but here is a simple version of a generic function
> that people might find useful (and may consider adding methods to)
>
> vif <- function(object, ...)
> UseMethod("vif")
>
> vif.default <- function(object, ...)
> stop("No default method for vif. Sorry.")
>
> vif.lm <- function(object, ...) {
> V <- summary(object)$cov.unscaled
> Vi <- crossprod(model.matrix(object))
> nam <- names(coef(object))
> if(k <- match("(Intercept)", nam, nomatch = F)) {
> v1 <- diag(V)[-k]
> v2 <- (diag(Vi)[-k] - Vi[k, -k]^2/Vi[k,k])
> nam <- nam[-k]
> } else {
> v1 <- diag(V)
> v2 <- diag(Vi)
> warning("No intercept term detected. Results may
> surprise.")
> }
> structure(v1*v2, names = nam)
> }
>
> [WNV] use in the obvious way. (Works in both S universes.)
>
> > fm <- lm(Gas ~ Insul/Temp, whiteside)
> > vif(fm)
> Insul InsulBeforeTemp InsulAfterTemp
> 4.3299 2.932245 2.397654
> > fm <- lm(Gas ~ Insul + Temp, whiteside)
> > vif(fm)
> Insul Temp
> 1.027048 1.027048
> > fm <- lm(Gas ~ Temp, whiteside)
> > vif(fm)
> Temp
> 1
> >
>
> > Thank you for your help!
> >
> > Kenneth Cabrera
> >
> > --------------------------------------------------------------------
> > This message was distributed by s-news at lists.biostat.wustl.edu. To
> > ....
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list