On Thu, Feb 22, 2018 at 12:24 PM, Fox, John <jfox at mcmaster.ca> wrote:
-----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:
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:
-----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
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->
> 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
> 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
> 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
*********************************************************
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>
***********************************************************