[R-sig-ME] variance inflation factor
Fox, John
jfox at mcmaster.ca
Thu Feb 22 18:34:59 CET 2018
Hi Ben,
> -----Original Message-----
> From: Ben Bolker [mailto:bbolker at gmail.com]
> Sent: Thursday, February 22, 2018 12:31 PM
> 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
>
> OK. I guess we could also change lme4 (hard to see why it would break
> anything, and I can check downstream packages ...)
That's might open a can of worms. I suppose, alternatively, you could introduce a cov2cor() method for "dpoMatrix" objects, which probably would be safer.
Best,
John
>
> On Thu, Feb 22, 2018 at 12:24 PM, Fox, John <jfox at mcmaster.ca> wrote:
> > 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