[R-sig-ME] variance inflation factor

Fox, John jfox at mcmaster.ca
Thu Feb 22 18:24:00 CET 2018


Hi Ben,

> -----Original Message-----
> From: Ben Bolker [mailto:bbolker at gmail.com]
> Sent: Thursday, February 22, 2018 11:53 AM
> To: Fox, John <jfox at mcmaster.ca>
> Cc: Toni Hernandez-Matias <ahmatias at gmail.com>; r-sig-mixed-models at r-
> project.org
> Subject: Re: [R-sig-ME] variance inflation factor
> 
>   I don't know if there's a good reason that vcov() is a "dpoMatrix"
> (from the Matrix package) rather than a plain old base-R matrix, but
> as.matrix() converts it harmlessly (and shouldn't have any ill effects on
> something that's already a matrix ...)

Yes, I know that, but it prevents the default method for car::vif() from working because cov2cor() checks for a matrix:

> vif(mod)
Error in cov2cor(v) : 'V' is not a square numeric matrix
In addition: Warning message:
In vif.default(mod) :
Error in cov2cor(v) : 'V' is not a square numeric matrix  

It should be easy to get around this -- I'll probably just create a local, unexported version of cov2cor() in the car package, something like

cov2cor <- function(V) stats::cov2cor(as.matrix(V))

Best,
 John
 
> 
> On Thu, Feb 22, 2018 at 11:01 AM, Fox, John <jfox at mcmaster.ca> wrote:
> > Dear Toni,
> >
> >> -----Original Message-----
> >> From: Toni Hernandez-Matias [mailto:ahmatias at gmail.com]
> >> Sent: Thursday, February 22, 2018 10:01 AM
> >> To: Fox, John <jfox at mcmaster.ca>
> >> Cc: r-sig-mixed-models at r-project.org
> >> Subject: Re: [R-sig-ME] variance inflation factor
> >>
> >> Dear John,
> >>
> >> Thank you very much for your message.
> >>
> >> Did you know a bibliographic reference for this method, specifically
> >> in the case of generalized linear mixed models?
> >
> > Sorry, I don't, but don't see why the general idea wouldn't apply here (as Ben
> mentioned in his response). By the way, the more general vif() function in the
> car package works for lme() in nlme but not for lmer() or glmer() in lme4
> (because the result returned by vcov() for a "merMod" object isn't of class
> "matrix"). We should probably make it work.
> >
> > Best,
> >  John
> >
> >>
> >> Thank you again,
> >>
> >> Antonio
> >>
> >> On Thu, Feb 22, 2018 at 3:51 PM, Fox, John <jfox at mcmaster.ca
> >> <mailto:jfox at mcmaster.ca> > wrote:
> >>
> >>
> >>       Dear Toni,
> >>
> >>       Yes, that looks reasonable, although I'm not sure why it's
> >> necessary to test for more than one fixed-effect intercept at the
> >> beginning of the fixed-effect coefficient vector and how an intercept
> >> could be named "Intercept" rather than "(Intercept)". Assuming that
> >> there's a reason that escapes me, here's a simplified
> >> version:
> >>
> >>       vif.lme <- function (fit) {
> >>         ## adapted from rms::vif
> >>         v <- vcov(fit)
> >>         nam <- names(fixef(fit))
> >>         ## exclude intercepts
> >>         ns <- sum(nam == "Intercept" | nam == "(Intercept)")
> >>         if (ns > 0) v <- v[-(1:ns), -(1:ns), drop = FALSE]
> >>         diag(solve(cov2cor(v)))
> >>       }
> >>
> >>       I hope this helps,
> >>        John
> >>
> >>
> >>       -----------------------------
> >>       John Fox, Professor Emeritus
> >>       McMaster University
> >>       Hamilton, Ontario, Canada
> >>       Web: socialsciences.mcmaster.ca/jfox/
> >> <http://socialsciences.mcmaster.ca/jfox/>
> >>
> >>
> >>
> >>
> >>       > -----Original Message-----
> >>       > From: R-sig-mixed-models
> >> [mailto:r-sig-mixed-models-bounces at r-
> >> <mailto:r-sig-mixed-models-bounces at r->
> >>       > project.org <http://project.org> ] On Behalf Of Toni
> >> Hernandez- Matias
> >>       > Sent: Thursday, February 22, 2018 7:28 AM
> >>       > To: r-sig-mixed-models at r-project.org
> >> <mailto:r-sig-mixed-models at r- project.org>
> >>       > Subject: [R-sig-ME] variance inflation factor
> >>       >
> >>       > Dear all,
> >>       >
> >>       > Could some help me to calculate Variance Inflation Factors of
> >> models fitted
> >>       > with glmer and lmer ?
> >>       >
> >>       > I found the method I copy below but I am not sure it is correct:
> >>       >
> >>       > vif.lme <- function (fit) {
> >>       >      ## adapted from rms::vif
> >>       >      v <- vcov(fit)
> >>       >      nam <- names(fixef(fit))
> >>       >      ## exclude intercepts
> >>       >      ns <- sum(1 * (nam == "Intercept" | nam == "(Intercept)"))
> >>       >      if (ns > 0) {
> >>       >          v <- v[-(1:ns), -(1:ns), drop = FALSE]
> >>       >          nam <- nam[-(1:ns)] }
> >>       >      d <- diag(v)^0.5
> >>       >      v <- diag(solve(v/(d %o% d)))
> >>       >      names(v) <- nam
> >>       >      v }
> >>       >
> >>       >
> >>       >
> >>       > ##la estimamos para el modelo 1
> >>       >
> >>       > vif.lme(mod1)
> >>       >
> >>       >
> >>       > Thank you very much in advance,
> >>       >
> >>       > Antonio
> >>       >
> >>       >
> >>       > --
> >>       >
> >> *********************************************************
> >>       >
> >>       > Antonio Hernandez Matias
> >>       >
> >>       > Equip de Biologia de la Conservació
> >>       > Departament de Biologia Evolutiva, Ecología i Ciències
> >> Ambientals Facultat de
> >>       > Biologia  i Institut de Recerca de la Biodiversitat (IRBio) Universitat de
> >>       > Barcelona (UB) Av. Diagonal, 643
> >>       > Barcelona      08028
> >>       > Spain
> >>
> >>       > Telephone: +34-934035857 <tel:%2B34-934035857>
> >> <+34%20934%2003%2058%2057>
> >>       > FAX: +34-934035740 <tel:%2B34-934035740>
> >> <+34%20934%2003%2057%2040>
> >>       > e-mail: ahernandezmatias at ub.edu
> >> <mailto:ahernandezmatias at ub.edu>
> >>       >
> >>       >
> >>
> ***********************************************************
> >>       >
> >>       >       [[alternative HTML version deleted]]
> >>       >
> >>       > _______________________________________________
> >>       > R-sig-mixed-models at r-project.org
> >> <mailto:R-sig-mixed-models at r- project.org>  mailing list
> >>       > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >> <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >>
> >>
> >>
> >>
> >>
> >> --
> >>
> >> *********************************************************
> >>
> >> Antonio Hernandez Matias
> >>
> >> Equip de Biologia de la Conservació
> >> Departament de Biologia Evolutiva, Ecología i Ciències Ambientals
> >> Facultat de Biologia  i Institut de Recerca de la Biodiversitat
> >> (IRBio) Universitat de Barcelona
> >> (UB) Av. Diagonal, 643
> >> Barcelona      08028
> >> Spain
> >> Telephone: +34-934035857
> >> FAX: +34-934035740
> >> e-mail: ahernandezmatias at ub.edu <mailto:ahernandezmatias at ub.edu>
> >>
> >>
> ***********************************************************


More information about the R-sig-mixed-models mailing list