[R-sig-ME] Collinearity diagnostics for (mixed) multinomial models

Juho Kristian Ruohonen juho@kr|@t|@n@ruohonen @end|ng |rom gm@||@com
Thu Jan 26 15:56:16 CET 2023


Dear all,

I'm resurrecting this thread because a problem has come up which might need
fixing once someone gets around to writing a relevant R package.

In this same thread last March, John Fox showed me how to compute GVIFs for
a *nnet* multinomial model. I then wrote a simple function that loops
through all predictors in such a model and applies John's code to them,
returning the GVIF, DF, and GVIF^(1/(2*Df)) statistic for each predictor.
Available here
<https://github.com/jkruohon/StatsMisc/blob/main/gvif_multinom.R>, the
function seems to work just fine, reproducing John's results exactly on the
carData examples. Likewise, applying this function to my own research data
yielded entirely plausible results.

But to my horror, I now discover that *when I refit my multinomial model
with two quantitative predictors centered, the GVIF statistics change
considerably** -- *even though the model has the same fit and virtually
identical coefficients (except for the intercepts) as the original one. How
can this be? The only thing that changes between the two models is the set
of intercepts which, moreover, are specifically excluded from the GVIF
calculations.

Below is a minimal example. The anonymized datafile is downloadable here
<https://github.com/jkruohon/StatsMisc/raw/main/d_anon.RData>.

> mod1 <- multinom(y ~., data = d.anon, maxit = 999)
> gvif.multinom(mod1) # x6 and x26 top the collinearity list
            GVIF DF GVIF^(1/(2df))
x6  3.463522e+03  3       3.889732
x26 2.988396e+03  3       3.795244
x27 1.390830e+03  3       3.341019
x2  3.889656e+02  3       2.701792
x13 2.930026e+02  3       2.577183
x19 2.051250e+04  6       2.287362
x25 7.043339e+03  6       2.092417
x24 1.078212e+07 12       1.963493
x9  2.357662e+01  3       1.693351
x17 1.991744e+01  3       1.646413
x5  3.869759e+02  6       1.643010
x12 1.787075e+01  3       1.616927
x18 2.943991e+02  6       1.605997
x1  2.700175e+03  9       1.551075
x16 2.576739e+04 12       1.526844
x7  1.483341e+02  6       1.516829
x20 1.159374e+01  3       1.504425
x3  1.612637e+04 12       1.497318
x28 1.081693e+01  3       1.487136
x10 9.706880e+00  3       1.460539
x22 9.459035e+00  3       1.454257
x15 9.124519e+00  3       1.445556
x14 7.017242e+00  3       1.383655
x21 6.404687e+00  3       1.362750
x8  6.072614e+00  3       1.350712
x11 4.797251e+00  3       1.298670
x4  3.665742e+03 18       1.256043
x23 3.557201e+00  3       1.235525

Now we refit the model with the quantitative predictors x6 and x26 centered:

> d.anon$x6 <- d.anon$x6 - mean(d.anon$x6)
> d.anon$x26 <- d.anon$x26 - mean(d.anon$x26)
> mod2 <- update(mod1, data = d.anon, maxit = 999)
> c(logLik(mod1), logLik(mod2))  # same fit to the data
[1] -2074.133 -2074.134

> gvif.multinom(mod2)
            GVIF DF GVIF^(1/(2df))
x2  6.196959e+04  3       6.290663
x13 3.031115e+04  3       5.583850
x27 2.552811e+04  3       5.426291
x14 1.642231e+04  3       5.041646
x6  1.573721e+04  3       5.005967
x26 1.464437e+04  3       4.946277
x9  1.262667e+04  3       4.825564
x10 5.714321e+03  3       4.228251
x19 2.255013e+07  6       4.099798
x25 1.227033e+07  6       3.897068
x12 3.394139e+03  3       3.876635
x15 1.938364e+03  3       3.531067
x11 1.685265e+03  3       3.449674
x21 8.429450e+02  3       3.073500
x23 7.639755e+02  3       3.023523
x22 6.887451e+02  3       2.971733
x17 5.640312e+02  3       2.874422
x20 3.855848e+02  3       2.697864
x24 1.444083e+10 12       2.650430
x7  7.148911e+04  6       2.538166
x18 1.674603e+04  6       2.249017
x5  9.662266e+03  6       2.148275
x16 6.264044e+07 12       2.112851
x1  6.634544e+05  9       2.105882
x3  1.558132e+07 12       1.993847
x8  6.168472e+01  3       1.987755
x4  4.256459e+06 18       1.528059
x28 9.783234e+00  3       1.462448

And so I'm at my wits' end. The models are virtually identical, yet the
GVIF statistics are very different. I don't know which ones to trust.
Worse, the discrepancy makes me disinclined to trust either of them --
which is a return to Square One, i.e. the situation where GVIF statistics
for multinomial models did not exist. And I don't know which
multicollinearity metric I can present in my thesis, if any.

I hope someone can help.

Best,

Juho





ke 2. maalisk. 2022 klo 16.35 John Fox (jfox using mcmaster.ca) kirjoitti:

> Dear Juho,
>
> On 2022-03-02 6:23 a.m., Juho Kristian Ruohonen wrote:
> > One last comment, John: Sorry if I seemed to be implying that you (or
> > anyone else) should debug my code for me. That wasn't the idea. I do
> > believe that the function locates the intended rows/columns
> > successfully. I just wasn't entirely positive what those intended
> > rows/columns should be when dealing with a multicategory factor.
> > Presently, it locates every row/column involving the multicategory
> > factor in question, so the number of rows/columns identified is the
> > number of factor levels minus one, times the number of response
> > categories minus one. I hope that's correct.
>
> OK, that's a fair remark. Yes, what you describe is correct.
>
> You can also reassure yourself that your function is working properly by:
>
> (1) If you haven't already done so, show that you get the same GVIFs
> from your function as from the one I sent you used directly.
>
> (2) Vary the baseline level of the response variable and confirm that
> you get the same GVIFs.
>
> (3) Vary the basis for the regressor subspace for a factor, e.g., either
> by using contr.sum() in place of the default contr.treatment() or by
> changing the baseline level of the factor for contr.treatment(), and
> again confirm that the GVIFs are unchanged.
>
> Best,
>   John
>
> >
> > My current plan is to present the output of the new function in my
> > thesis and credit you for the math. But if *vif()* gets a relevant
> > update before my project is finished, then I'll use that and cite the
> > /car /package instead.
> >
> > Thanks again for your help.
> >
> > Best,
> >
> > Juho
> >
> > ti 1. maalisk. 2022 klo 23.54 John Fox (jfox using mcmaster.ca
> > <mailto:jfox using mcmaster.ca>) kirjoitti:
> >
> >     Dear Juho,
> >
> >     On 2022-03-01 3:13 p.m., Juho Kristian Ruohonen wrote:
> >      > Dear John,
> >      >
> >      > Yes, my function uses your code for the math. I was just hoping to
> >      > verify that it is handling multicategory factors correctly (your
> >      > examples didn't involve any).
> >
> >     That's not really my point. Your code sets up computations for the
> >     various terms in the model automatically, while the function I sent
> >     requires that you locate the rows/columns for the intercepts and each
> >     focal term manually. If you haven't already done so, you could check
> >     that your function is identifying the correct columns and getting the
> >     corresponding GVIFs.
> >
> >      >
> >      > I guess interactions aren't that important after all, given that
> the
> >      > chief concern is usually collinearity among main effects.
> >
> >     I wouldn't say that, but it's not clear what collinearity means in
> >     models with interactions, and if you compute VIFs or GVIFs for "main
> >     effects" in models with interactions, you'll probably get nonsense.
> >
> >     As I said, I think that this might be a solvable problem, but one
> that
> >     requires thought about what needs to remain invariant.
> >
> >     I think that we've probably come to end for now.
> >
> >     John
> >
> >      >
> >      > Many thanks for all your help.
> >      >
> >      > Best,
> >      >
> >      > Juho
> >      >
> >      > ti 1. maalisk. 2022 klo 18.01 John Fox (jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca>
> >      > <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>) kirjoitti:
> >      >
> >      >     Dear Juho,
> >      >
> >      >     On 2022-03-01 8:24 a.m., Juho Kristian Ruohonen wrote:
> >      >      > Dear John (Fox, as well as other list members),
> >      >      >
> >      >      > I've now written a simple function to try and calculate
> >     GVIFS for
> >      >     all
> >      >      > predictors in a nnet::multinom() object based on John's
> >     example
> >      >     code. If
> >      >      > its results are correct (see below), I will proceed to
> write a
> >      >     version
> >      >      > that also works with mixed-effects multinomial models fit
> by
> >      >      > brms::brm(). Here's the code:
> >      >      >
> >      >      >     gvif.multinom <- function(model){
> >      >      >        (classes <- model$lev)
> >      >      >        (V.all <- vcov(model))
> >      >      >        (V.noIntercepts <- V.all[!grepl("\\(Intercept\\)$",
> >      >      >     rownames(V.all), perl = T),
> >      >      >                                 !grepl("\\(Intercept\\)$",
> >      >      >     colnames(V.all), perl = T)])
> >      >      >        (R <- cov2cor(V.noIntercepts))
> >      >      >        (terms <- attr(model$terms, "term.labels"))
> >      >      >        (gvif <- numeric(length = length(terms)))
> >      >      >        (names(gvif) <- terms)
> >      >      >        (SE.multiplier <- numeric(length = length(terms)))
> >      >      >        (names(SE.multiplier) <- terms)
> >      >      >        #The line below tries to capture all factor levels
> >     into a
> >      >     regex
> >      >      >     for coef name matching.
> >      >      >        (LevelsRegex <- paste0("(",
> >     paste(unlist(model$xlevels),
> >      >     collapse
> >      >      >     = "|"),")?"))
> >      >      >
> >      >      >        for(i in terms){
> >      >      >          #The regex stuff below tries to ensure all
> >     interaction
> >      >      >     coefficients are matched, including those involving
> >     factors.
> >      >      >          if(grepl(":", i)){
> >      >      >            (termname <- gsub(":", paste0(LevelsRegex,
> ":"), i,
> >      >     perl = T))
> >      >      >          }else{termname <- i}
> >      >      >          (RegexToMatch <- paste0("^(",
> >      >     paste(classes[2:length(classes)],
> >      >      >     collapse = "|") ,"):", termname, LevelsRegex, "$"))
> >      >      >
> >      >      >          #Now the actual calculation:
> >      >      >          (indices <- grep(RegexToMatch, rownames(R), perl
> >     = T))
> >      >      >          (gvif[i] <- det(R[indices, indices]) *
> >     det(R[-indices,
> >      >      >     -indices]) / det(R))
> >      >      >          (SE.multiplier[i] <-
> gvif[i]^(1/(2*length(indices))))
> >      >      >        }
> >      >      >        #Put the results together and order them by degree
> >     of SE
> >      >     inflation:
> >      >      >        (result <- cbind(GVIF = gvif, `GVIF^(1/(2df))` =
> >      >     SE.multiplier))
> >      >      >        return(result[order(result[,"GVIF^(1/(2df))"],
> >     decreasing
> >      >     = T),])}
> >      >      >
> >      >      >
> >      >      > The results seem correct to me when applied to John's
> example
> >      >     model fit
> >      >      > to the BEPS data. However, that dataset contains no
> multi-df
> >      >     factors, of
> >      >      > which my own models have many. Below is a maximally simple
> >      >     example with
> >      >      > one multi-df factor (/region/):
> >      >      >
> >      >      >     mod1 <- multinom(partic ~., data = carData::Womenlf)
> >      >      >     gvif.multinom(mod1)
> >      >      >
> >      >      >     GVIF GVIF^(1/(2df))
> >      >      >     children 1.298794       1.067542
> >      >      >     hincome  1.184215       1.043176
> >      >      >     region   1.381480       1.020403
> >      >      >
> >      >      >
> >      >      > These results look plausible to me. Finally, below is an
> >     example
> >      >      > involving both a multi-df factor and an interaction:
> >      >      >
> >      >      >     mod2 <- update(mod1, ~. +children:region)
> >      >      >     gvif.multinom(mod2)
> >      >      >
> >      >      >                              GVIF GVIF^(1/(2df))
> >      >      >     children:region 4.965762e+16      11.053482
> >      >      >     region          1.420418e+16      10.221768
> >      >      >     children        1.471412e+03       6.193463
> >      >      >     hincome         6.462161e+00       1.594390
> >      >      >
> >      >      >
> >      >      > These results look a bit more dubious. To be sure, it is
> to be
> >      >     expected
> >      >      > that interaction terms will introduce a lot of
> >     collinearity. But an
> >      >      > 11-fold increase in SE? I hope someone can tell me whether
> >     this is
> >      >      > correct or not!
> >      >
> >      >     You don't need someone else to check your work because you
> >     could just
> >      >     apply the simple function that I sent you yesterday, which,
> >     though not
> >      >     automatic, computes the GVIFs in a transparent manner.
> >      >
> >      >     A brief comment on GVIFs for models with interactions (this
> >     isn't the
> >      >     place to discuss the question in detail): The Fox and Monette
> >     JASA
> >      >     paper
> >      >     addresses the question briefly in the context of a two-way
> >     ANOVA, but I
> >      >     don't think that the approach suggested there is easily
> >     generalized.
> >      >
> >      >     The following simple approach pays attention to what's
> >     invariant under
> >      >     different parametrizations of the RHS side of the model:
> >     Simultaneously
> >      >     check the collinearity of all of the coefficients of an
> >     interaction
> >      >     together with the main effects and, potentially, lower-order
> >      >     interactions that are marginal to it. So, e.g., in the model
> >     y ~ a +
> >      >     b +
> >      >     a:b + c, you'd check all of the coefficients for a, b, and
> >     a:b together.
> >      >
> >      >     Alternatively, one could focus in turn on each explanatory
> >     variable and
> >      >     check the collinearity of all coefficients to which it is
> >     marginal. So
> >      >     in y ~ a + b + c + a:b + a:c + d, when you focus on a, you'd
> >     look at
> >      >     all
> >      >     of the coefficients for a, b, c, a:b, and a:c.
> >      >
> >      >     John
> >      >
> >      >      >
> >      >      > Best,
> >      >      >
> >      >      > Juho
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      > ti 1. maalisk. 2022 klo 0.05 John Fox (jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >      > <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>) kirjoitti:
> >      >      >
> >      >      >     Dear Juha,
> >      >      >
> >      >      >     On 2022-02-28 5:00 p.m., Juho Kristian Ruohonen wrote:
> >      >      >      > Apologies for my misreading, John, and many thanks
> >     for showing
> >      >      >     how the
> >      >      >      > calculation is done for a single term.
> >      >      >      >
> >      >      >      > Do you think *vif()* might be updated in the near
> >     future
> >      >     with the
> >      >      >      > capability of auto-detecting a multinomial model
> >     and returning
> >      >      >      > mathematically correct GVIF statistics?
> >      >      >
> >      >      >     The thought crossed my mind, but I'd want to do it in a
> >      >     general way,
> >      >      >     not
> >      >      >     just for the multinom() function, and in a way that
> avoids
> >      >     incorrect
> >      >      >     results such as those currently produced for "multinom"
> >      >     models, albeit
> >      >      >     with a warning. I can't guarantee whether or when I'll
> be
> >      >     able to do
> >      >      >     that.
> >      >      >
> >      >      >     John
> >      >      >
> >      >      >      >
> >      >      >      > If not, I'll proceed to writing my own function
> >     based on your
> >      >      >     example.
> >      >      >      > However, /car/ is such an excellent and widely used
> >      >     package that the
> >      >      >      > greatest benefit to mankind would probably accrue
> >     if /car /was
> >      >      >     upgraded
> >      >      >      > with this feature sooner rather than later.
> >      >      >      >
> >      >      >      > Best,
> >      >      >      >
> >      >      >      > Juho
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      >
> >      >      >      > ma 28. helmik. 2022 klo 17.08 John Fox
> >     (jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>
> >      >      >      > <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>>) kirjoitti:
> >      >      >      >
> >      >      >      >     Dear Juho,
> >      >      >      >
> >      >      >      >     On 2022-02-28 2:06 a.m., Juho Kristian Ruohonen
> >     wrote:
> >      >      >      >      > Dear Professor Fox and other list members,
> >      >      >      >      >
> >      >      >      >      > Profuse thanks for doing that detective work
> for
> >      >     me! I myself
> >      >      >      >     thought
> >      >      >      >      > the inflation factors reported by
> >      >     check_collinearity() were
> >      >      >      >     suspiciously
> >      >      >      >      > high, but unlike you I lacked the expertise
> >     to identify
> >      >      >     what was
> >      >      >      >     going on.
> >      >      >      >      >
> >      >      >      >      > As for your suggested approach, have I
> >     understood this
> >      >      >     correctly:
> >      >      >      >      >
> >      >      >      >      > Since there doesn't yet exist an R function
> >     that will
> >      >      >     calculate the
> >      >      >      >      > (G)VIFS of multinomial models correctly, my
> best
> >      >     bet for
> >      >      >     now is
> >      >      >      >     just to
> >      >      >      >      > ignore the fact that such models partition
> >     the data
> >      >     into C-1
> >      >      >      >     subsets,
> >      >      >      >      > and to calculate approximate GVIFs from the
> >     entire
> >      >     dataset at
> >      >      >      >     once as if
> >      >      >      >      > the response were continuous? And a simple
> >     way to
> >      >     do this
> >      >      >     is to
> >      >      >      >      > construct a fake continuous response, call
> >      >      >     *lm(fakeresponse ~.)*,
> >      >      >      >     and
> >      >      >      >      > apply *car::vif()* on the result?
> >      >      >      >
> >      >      >      >     No, you misunderstand my suggestion, which
> >     perhaps isn't
> >      >      >     surprising
> >      >      >      >     given the length of my message. What you
> >     propose is what I
> >      >      >     suggested as
> >      >      >      >     a rough approximation *before* I confirmed that
> my
> >      >     guess of the
> >      >      >      >     solution
> >      >      >      >     was correct.
> >      >      >      >
> >      >      >      >     The R code that I sent yesterday showed how to
> >     compute the
> >      >      >     GVIF for a
> >      >      >      >     multinomial regression model, and I suggested
> >     that you
> >      >     write
> >      >      >     either a
> >      >      >      >     script or a simple function to do that. Here's
> >     a function
> >      >      >     that will
> >      >      >      >     work
> >      >      >      >     for a model object that responds to vcov():
> >      >      >      >
> >      >      >      >     GVIF <- function(model, intercepts, term){
> >      >      >      >         # model: regression model object
> >      >      >      >         # intercepts: row/column positions of
> >     intercepts
> >      >     in the
> >      >      >     coefficient
> >      >      >      >     covariance matrix
> >      >      >      >         # term: row/column positions of the
> >     coefficients
> >      >     for the
> >      >      >     focal term
> >      >      >      >         V <- vcov(model)
> >      >      >      >         term <- colnames(V)[term]
> >      >      >      >         V <- V[-intercepts, -intercepts]
> >      >      >      >         V <- cov2cor(V)
> >      >      >      >         term <- which(colnames(V) %in% term)
> >      >      >      >         gvif <- det(V[term, term])*det(V[-term,
> >     -term])/det(V)
> >      >      >      >         c(GVIF=gvif,
> >      >     "GVIF^(1/(2*p))"=gvif^(1/(2*length(term))))
> >      >      >      >     }
> >      >      >      >
> >      >      >      >     and here's an application to the multinom()
> >     example that I
> >      >      >     showed you
> >      >      >      >     yesterday:
> >      >      >      >
> >      >      >      >       > colnames(vcov(m)) # to get coefficient
> >     positions
> >      >      >      >        [1] "Labour:(Intercept)"
> >      >       "Labour:age"
> >      >      >      >
> >      >      >      >        [3] "Labour:economic.cond.national"
> >      >      >      >     "Labour:economic.cond.household"
> >      >      >      >        [5] "Labour:Blair"
> >      >       "Labour:Hague"
> >      >      >      >
> >      >      >      >        [7] "Labour:Kennedy"
> >      >       "Labour:Europe"
> >      >      >      >
> >      >      >      >        [9] "Labour:political.knowledge"
> >      >      >       "Labour:gendermale"
> >      >      >      >
> >      >      >      >     [11] "Liberal Democrat:(Intercept)"
> >       "Liberal
> >      >      >     Democrat:age"
> >      >      >      >
> >      >      >      >     [13] "Liberal Democrat:economic.cond.national"
> >     "Liberal
> >      >      >      >     Democrat:economic.cond.household"
> >      >      >      >     [15] "Liberal Democrat:Blair"
> >       "Liberal
> >      >      >      >     Democrat:Hague"
> >      >      >      >
> >      >      >      >     [17] "Liberal Democrat:Kennedy"
> >       "Liberal
> >      >      >      >     Democrat:Europe"
> >      >      >      >     [19] "Liberal Democrat:political.knowledge"
> >       "Liberal
> >      >      >      >     Democrat:gendermale"
> >      >      >      >
> >      >      >      >       > GVIF(m, intercepts=c(1, 11), term=c(2, 12))
> >     # GVIF
> >      >     for age
> >      >      >      >                 GVIF GVIF^(1/(2*p))
> >      >      >      >             1.046232       1.011363
> >      >      >      >
> >      >      >      >
> >      >      >      >     Finally, here's what you get for a linear model
> >     with
> >      >     the same RHS
> >      >      >      >     (where
> >      >      >      >     the sqrt(VIF) should be a rough approximation to
> >      >     GVIF^(1/4)
> >      >      >     reported by
> >      >      >      >     my GVIF() function):
> >      >      >      >
> >      >      >      >       > m.lm <- lm(as.numeric(vote) ~ . - vote1,
> >     data=BEPS)
> >      >      >      >       > sqrt(car::vif(m.lm))
> >      >      >      >                           age
> economic.cond.national
> >      >      >      >     economic.cond.household
> >      >      >      >                         Blair
> >      >      >      >                      1.006508
> 1.124132
> >      >      >      >     1.075656
> >      >      >      >                      1.118441
> >      >      >      >                         Hague
>  Kennedy
> >      >      >      >     Europe
> >      >      >      >           political.knowledge
> >      >      >      >                      1.066799
> 1.015532
> >      >      >      >     1.101741
> >      >      >      >                      1.028546
> >      >      >      >                        gender
> >      >      >      >                      1.017386
> >      >      >      >
> >      >      >      >
> >      >      >      >     John
> >      >      >      >
> >      >      >      >      >
> >      >      >      >      > Best,
> >      >      >      >      >
> >      >      >      >      > Juho
> >      >      >      >      >
> >      >      >      >      > ma 28. helmik. 2022 klo 2.23 John Fox
> >      >     (jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>
> >      >      >      >     <mailto:jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca> <mailto:jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>>
> >      >      >      >      > <mailto:jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca> <mailto:jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>
> >      >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>>>) kirjoitti:
> >      >      >      >      >
> >      >      >      >      >     Dear Juho,
> >      >      >      >      >
> >      >      >      >      >     I've now had a chance to think about this
> >      >     problem some
> >      >      >     more,
> >      >      >      >     and I
> >      >      >      >      >     believe that the approach I suggested is
> >     correct. I
> >      >      >     also had an
> >      >      >      >      >     opportunity to talk the problem over a
> >     bit with
> >      >     Georges
> >      >      >      >     Monette, who
> >      >      >      >      >     coauthored the paper that introduced
> >      >     generalized variance
> >      >      >      >     inflation
> >      >      >      >      >     factors (GVIFs). On the other hand, the
> >     results
> >      >      >     produced by
> >      >      >      >      >     performance::check_collinearity() for
> >      >     multinomial logit
> >      >      >      >     models don't
> >      >      >      >      >     seem to be correct (see below).
> >      >      >      >      >
> >      >      >      >      >     Here's an example, using the
> >     nnet::multinom()
> >      >     function
> >      >      >     to fit a
> >      >      >      >      >     multinomial logit model, with alternative
> >      >      >     parametrizations of the
> >      >      >      >      >     LHS of
> >      >      >      >      >     the model:
> >      >      >      >      >
> >      >      >      >      >     --------- snip -----------
> >      >      >      >      >
> >      >      >      >      >       > library(nnet) # for multinom()
> >      >      >      >      >       > library(carData) # for BEPS data set
> >      >      >      >      >
> >      >      >      >      >       > # alternative ordering of the
> >     response levels:
> >      >      >      >      >       > BEPS$vote1 <- factor(BEPS$vote,
> >      >     levels=c("Labour",
> >      >      >     "Liberal
> >      >      >      >      >     Democrat", "Conservative"))
> >      >      >      >      >       > levels(BEPS$vote)
> >      >      >      >      >     [1] "Conservative"     "Labour"
> >       "Liberal
> >      >      >     Democrat"
> >      >      >      >      >       > levels(BEPS$vote1)
> >      >      >      >      >     [1] "Labour"           "Liberal Democrat"
> >      >     "Conservative"
> >      >      >      >      >
> >      >      >      >      >       > m <- multinom(vote ~ . - vote1,
> >     data=BEPS)
> >      >      >      >      >     # weights:  33 (20 variable)
> >      >      >      >      >     initial  value 1675.383740
> >      >      >      >      >     iter  10 value 1345.935273
> >      >      >      >      >     iter  20 value 1150.956807
> >      >      >      >      >     iter  30 value 1141.921662
> >      >      >      >      >     iter  30 value 1141.921661
> >      >      >      >      >     iter  30 value 1141.921661
> >      >      >      >      >     final  value 1141.921661
> >      >      >      >      >     converged
> >      >      >      >      >       > m1 <- multinom(vote1 ~ . - vote,
> >     data=BEPS)
> >      >      >      >      >     # weights:  33 (20 variable)
> >      >      >      >      >     initial  value 1675.383740
> >      >      >      >      >     iter  10 value 1280.439304
> >      >      >      >      >     iter  20 value 1165.513772
> >      >      >      >      >     final  value 1141.921662
> >      >      >      >      >     converged
> >      >      >      >      >
> >      >      >      >      >       > rbind(coef(m), coef(m1)) # compare
> >     coefficients
> >      >      >      >      >                        (Intercept)
> age
> >      >      >      >     economic.cond.national
> >      >      >      >      >     economic.cond.household
> >      >      >      >      >     Labour             0.9515214 -0.021913989
> >      >      >     0.5575707
> >      >      >      >      >            0.15839096
> >      >      >      >      >     Liberal Democrat   1.4119306 -0.016810735
> >      >      >     0.1810761
> >      >      >      >      >           -0.01196664
> >      >      >      >      >     Liberal Democrat   0.4604567  0.005102666
> >      >      >       -0.3764928
> >      >      >      >      >           -0.17036682
> >      >      >      >      >     Conservative      -0.9514466  0.021912305
> >      >      >       -0.5575644
> >      >      >      >      >           -0.15838744
> >      >      >      >      >                             Blair       Hague
> >      >     Kennedy
> >      >      >          Europe
> >      >      >      >      >     political.knowledge
> >      >      >      >      >     Labour            0.8371764 -0.90775585
> >     0.2513436
> >      >      >     -0.22781308
> >      >      >      >      >     -0.5370612
> >      >      >      >      >     Liberal Democrat  0.2937331 -0.82217625
> >     0.6710567
> >      >      >     -0.20004624
> >      >      >      >      >     -0.2034605
> >      >      >      >      >     Liberal Democrat -0.5434408  0.08559455
> >     0.4197027
> >      >      >     0.02776465
> >      >      >      >      >     0.3336068
> >      >      >      >      >     Conservative     -0.8371670  0.90778068
> >     -0.2513735
> >      >      >     0.22781092
> >      >      >      >      >     0.5370545
> >      >      >      >      >                         gendermale
> >      >      >      >      >     Labour            0.13765774
> >      >      >      >      >     Liberal Democrat  0.12640823
> >      >      >      >      >     Liberal Democrat -0.01125898
> >      >      >      >      >     Conservative     -0.13764849
> >      >      >      >      >
> >      >      >      >      >       > c(logLik(m), logLik(m1)) # same fit
> >     to the data
> >      >      >      >      >     [1] -1141.922 -1141.922
> >      >      >      >      >
> >      >      >      >      >       > # covariance matrices for
> coefficients:
> >      >      >      >      >       > V <- vcov(m)
> >      >      >      >      >       > V1 <- vcov(m1)
> >      >      >      >      >       > cbind(colnames(V), colnames(V1)) #
> >     compare
> >      >      >      >      >             [,1]
> >      >         [,2]
> >      >      >      >      >
> >      >      >      >      >        [1,] "Labour:(Intercept)"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:(Intercept)"
> >      >      >      >      >        [2,] "Labour:age"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:age"
> >      >      >      >      >
> >      >      >      >      >        [3,] "Labour:economic.cond.national"
> >      >      >     "Liberal
> >      >      >      >      >     Democrat:economic.cond.national"
> >      >      >      >      >        [4,] "Labour:economic.cond.household"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:economic.cond.household"
> >      >      >      >      >        [5,] "Labour:Blair"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:Blair"
> >      >      >      >      >        [6,] "Labour:Hague"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:Hague"
> >      >      >      >      >        [7,] "Labour:Kennedy"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:Kennedy"
> >      >      >      >      >        [8,] "Labour:Europe"
> >      >      >     "Liberal
> >      >      >      >      >     Democrat:Europe"
> >      >      >      >      >        [9,] "Labour:political.knowledge"
> >      >      >       "Liberal
> >      >      >      >      >     Democrat:political.knowledge"
> >      >      >      >      >     [10,] "Labour:gendermale"
> >      >        "Liberal
> >      >      >      >      >     Democrat:gendermale"
> >      >      >      >      >     [11,] "Liberal Democrat:(Intercept)"
> >      >      >      >      >     "Conservative:(Intercept)"
> >      >      >      >      >     [12,] "Liberal Democrat:age"
> >      >      >      >       "Conservative:age"
> >      >      >      >      >
> >      >      >      >      >     [13,] "Liberal
> >     Democrat:economic.cond.national"
> >      >      >      >      >     "Conservative:economic.cond.national"
> >      >      >      >      >     [14,] "Liberal
> >     Democrat:economic.cond.household"
> >      >      >      >      >     "Conservative:economic.cond.household"
> >      >      >      >      >     [15,] "Liberal Democrat:Blair"
> >      >      >      >       "Conservative:Blair"
> >      >      >      >      >
> >      >      >      >      >     [16,] "Liberal Democrat:Hague"
> >      >      >      >       "Conservative:Hague"
> >      >      >      >      >
> >      >      >      >      >     [17,] "Liberal Democrat:Kennedy"
> >      >      >      >       "Conservative:Kennedy"
> >      >      >      >      >
> >      >      >      >      >     [18,] "Liberal Democrat:Europe"
> >      >      >      >     "Conservative:Europe"
> >      >      >      >      >
> >      >      >      >      >     [19,] "Liberal
> Democrat:political.knowledge"
> >      >      >      >      >     "Conservative:political.knowledge"
> >      >      >      >      >     [20,] "Liberal Democrat:gendermale"
> >      >      >      >      >     "Conservative:gendermale"
> >      >      >      >      >
> >      >      >      >      >       > int <- c(1, 11) # remove intercepts
> >      >      >      >      >       > colnames(V)[int]
> >      >      >      >      >     [1] "Labour:(Intercept)"
>  "Liberal
> >      >      >     Democrat:(Intercept)"
> >      >      >      >      >
> >      >      >      >      >       > colnames(V1)[int]
> >      >      >      >      >     [1] "Liberal Democrat:(Intercept)"
> >      >      >     "Conservative:(Intercept)"
> >      >      >      >      >       > V <- V[-int, -int]
> >      >      >      >      >       > V1 <- V1[-int, -int]
> >      >      >      >      >
> >      >      >      >      >       > age <- c(1, 10) # locate age
> >     coefficients
> >      >      >      >      >       > colnames(V)[age]
> >      >      >      >      >     [1] "Labour:age"           "Liberal
> >     Democrat:age"
> >      >      >      >      >       > colnames(V1)[age]
> >      >      >      >      >     [1] "Liberal Democrat:age"
> >     "Conservative:age"
> >      >      >      >      >
> >      >      >      >      >       > V <- cov2cor(V) # compute coefficient
> >      >     correlations
> >      >      >      >      >       > V1 <- cov2cor(V1)
> >      >      >      >      >
> >      >      >      >      >       > # compare GVIFs:
> >      >      >      >      >       > c(det(V[age, age])*det(V[-age,
> >     -age])/det(V),
> >      >      >      >      >     +   det(V1[age, age])*det(V1[-age,
> >     -age])/det(V1))
> >      >      >      >      >     [1] 1.046232 1.046229
> >      >      >      >      >
> >      >      >      >      >     --------- snip -----------
> >      >      >      >      >
> >      >      >      >      >     For curiosity, I applied car::vif() and
> >      >      >      >      >     performance::check_collinearity() to
> these
> >      >     models to
> >      >      >     see what
> >      >      >      >     they
> >      >      >      >      >     would
> >      >      >      >      >     do. Both returned the wrong answer. vif()
> >      >     produced a
> >      >      >     warning, but
> >      >      >      >      >     check_collinearity() didn't:
> >      >      >      >      >
> >      >      >      >      >     --------- snip -----------
> >      >      >      >      >
> >      >      >      >      >       > car::vif(m1)
> >      >      >      >      >                           age
> >     economic.cond.national
> >      >      >      >      >     economic.cond.household
> >      >      >      >      >                     15.461045
> >       22.137772
> >      >      >      >      >       16.693877
> >      >      >      >      >                         Blair
> >         Hague
> >      >      >      >      >       Kennedy
> >      >      >      >      >                     14.681562
> >     7.483039
> >      >      >      >      >       15.812067
> >      >      >      >      >                        Europe
> >       political.knowledge
> >      >      >      >      >     gender
> >      >      >      >      >                      6.502119
> >     4.219507
> >      >      >      >      >     2.313885
> >      >      >      >      >     Warning message:
> >      >      >      >      >     In vif.default(m1) : No intercept: vifs
> >     may not be
> >      >      >     sensible.
> >      >      >      >      >
> >      >      >      >      >       > performance::check_collinearity(m)
> >      >      >      >      >     # Check for Multicollinearity
> >      >      >      >      >
> >      >      >      >      >     Low Correlation
> >      >      >      >      >
> >      >      >      >      >                           Term  VIF
> Increased SE
> >      >     Tolerance
> >      >      >      >      >                            age 1.72
> >       1.31
> >      >        0.58
> >      >      >      >      >         economic.cond.national 1.85
> >       1.36
> >      >        0.54
> >      >      >      >      >        economic.cond.household 1.86
> >       1.37
> >      >        0.54
> >      >      >      >      >                          Blair 1.63
> >       1.28
> >      >        0.61
> >      >      >      >      >                          Hague 1.94
> >       1.39
> >      >        0.52
> >      >      >      >      >                        Kennedy 1.70
> >       1.30
> >      >        0.59
> >      >      >      >      >                         Europe 2.01
> >       1.42
> >      >        0.50
> >      >      >      >      >            political.knowledge 1.94
> >       1.39
> >      >        0.52
> >      >      >      >      >                         gender 1.78
> >       1.33
> >      >        0.56
> >      >      >      >      >       > performance::check_collinearity(m1)
> >      >      >      >      >     # Check for Multicollinearity
> >      >      >      >      >
> >      >      >      >      >     Low Correlation
> >      >      >      >      >
> >      >      >      >      >                           Term  VIF
> Increased SE
> >      >     Tolerance
> >      >      >      >      >                            age 1.19
> >       1.09
> >      >        0.84
> >      >      >      >      >         economic.cond.national 1.42
> >       1.19
> >      >        0.70
> >      >      >      >      >        economic.cond.household 1.32
> >       1.15
> >      >        0.76
> >      >      >      >      >                          Blair 1.50
> >       1.22
> >      >        0.67
> >      >      >      >      >                          Hague 1.30
> >       1.14
> >      >        0.77
> >      >      >      >      >                        Kennedy 1.19
> >       1.09
> >      >        0.84
> >      >      >      >      >                         Europe 1.34
> >       1.16
> >      >        0.75
> >      >      >      >      >            political.knowledge 1.30
> >       1.14
> >      >        0.77
> >      >      >      >      >                         gender 1.23
> >       1.11
> >      >        0.81
> >      >      >      >      >
> >      >      >      >      >     --------- snip -----------
> >      >      >      >      >
> >      >      >      >      >     I looked at the code for vif() and
> >      >     check_collinearity() to
> >      >      >      >     see where
> >      >      >      >      >     they went wrong. Both failed to handle
> >     the two
> >      >      >     intercepts in
> >      >      >      >     the model
> >      >      >      >      >     correctly -- vif() thought there was no
> >      >     intercept and
> >      >      >      >      >     check_collinearity() just removed the
> first
> >      >     intercept
> >      >      >     but not the
> >      >      >      >      >     second.
> >      >      >      >      >
> >      >      >      >      >     In examining the code for
> >     check_collinearity(), I
> >      >      >     discovered a
> >      >      >      >      >     couple of
> >      >      >      >      >     additional disconcerting facts. First,
> >     part of the
> >      >      >     code seems
> >      >      >      >     to be
> >      >      >      >      >     copied from vif.default(). Second, as a
> >      >     consequence,
> >      >      >      >      >     check_collinearity() actually computes
> >     GVIFs rather
> >      >      >     than VIFs
> >      >      >      >     (and
> >      >      >      >      >     doesn't reference either the Fox and
> >     Monette paper
> >      >      >      >     introducing GVIFs or
> >      >      >      >      >     the car package) but doesn't seem to
> >     understand
> >      >     that, and,
> >      >      >      >     for example,
> >      >      >      >      >     takes the squareroot of the GVIF
> >     (reported in the
> >      >      >     column marked
> >      >      >      >      >     "Increased SE") rather than the 2p root
> >     (when there
> >      >      >     are p > 1
> >      >      >      >      >     coefficients in a term).
> >      >      >      >      >
> >      >      >      >      >     Here's the relevant code from the two
> >     functions
> >      >     (where
> >      >      >     . . .
> >      >      >      >     denotes
> >      >      >      >      >     elided lines) -- the default method for
> >     vif() and
> >      >      >      >      >     .check_collinearity(),
> >      >      >      >      >     which is called by
> >     check_collinearity.default():
> >      >      >      >      >
> >      >      >      >      >     --------- snip -----------
> >      >      >      >      >
> >      >      >      >      >       > car:::vif.default
> >      >      >      >      >     function (mod, ...)
> >      >      >      >      >     {
> >      >      >      >      >           . . .
> >      >      >      >      >           v <- vcov(mod)
> >      >      >      >      >           assign <- attr(model.matrix(mod),
> >     "assign")
> >      >      >      >      >           if (names(coefficients(mod)[1]) ==
> >      >     "(Intercept)") {
> >      >      >      >      >               v <- v[-1, -1]
> >      >      >      >      >               assign <- assign[-1]
> >      >      >      >      >           }
> >      >      >      >      >           else warning("No intercept: vifs
> >     may not be
> >      >      >     sensible.")
> >      >      >      >      >           terms <- labels(terms(mod))
> >      >      >      >      >           n.terms <- length(terms)
> >      >      >      >      >           if (n.terms < 2)
> >      >      >      >      >               stop("model contains fewer
> >     than 2 terms")
> >      >      >      >      >           R <- cov2cor(v)
> >      >      >      >      >           detR <- det(R)
> >      >      >      >      >           . . .
> >      >      >      >      >           for (term in 1:n.terms) {
> >      >      >      >      >               subs <- which(assign == term)
> >      >      >      >      >               result[term, 1] <-
> >     det(as.matrix(R[subs,
> >      >      >     subs])) *
> >      >      >      >      >     det(as.matrix(R[-subs,
> >      >      >      >      >                   -subs]))/detR
> >      >      >      >      >               result[term, 2] <- length(subs)
> >      >      >      >      >           }
> >      >      >      >      >           . . .
> >      >      >      >      >     }
> >      >      >      >      >
> >      >      >      >      >       > performance:::.check_collinearity
> >      >      >      >      >     function (x, component, verbose = TRUE)
> >      >      >      >      >     {
> >      >      >      >      >           v <- insight::get_varcov(x,
> >     component =
> >      >     component,
> >      >      >      >     verbose =
> >      >      >      >      >     FALSE)
> >      >      >      >      >           assign <- .term_assignments(x,
> >     component,
> >      >     verbose =
> >      >      >      >     verbose)
> >      >      >      >      >           . . .
> >      >      >      >      >           if (insight::has_intercept(x)) {
> >      >      >      >      >               v <- v[-1, -1]
> >      >      >      >      >               assign <- assign[-1]
> >      >      >      >      >           }
> >      >      >      >      >           else {
> >      >      >      >      >               if (isTRUE(verbose)) {
> >      >      >      >      >                   warning("Model has no
> >     intercept. VIFs
> >      >      >     may not be
> >      >      >      >      >     sensible.",
> >      >      >      >      >                       call. = FALSE)
> >      >      >      >      >               }
> >      >      >      >      >           }
> >      >      >      >      >               . . .
> >      >      >      >      >               terms <-
> >      >     labels(stats::terms(f[[component]]))
> >      >      >      >      >               . . .
> >      >      >      >      >           n.terms <- length(terms)
> >      >      >      >      >           if (n.terms < 2) {
> >      >      >      >      >               if (isTRUE(verbose)) {
> >      >      >      >      >
> >      >       warning(insight::format_message(sprintf("Not
> >      >      >      >     enough model
> >      >      >      >      >     terms in the %s part of the model to
> >     check for
> >      >      >      >     multicollinearity.",
> >      >      >      >      >                       component)), call. =
> >     FALSE)
> >      >      >      >      >               }
> >      >      >      >      >               return(NULL)
> >      >      >      >      >           }
> >      >      >      >      >           R <- stats::cov2cor(v)
> >      >      >      >      >           detR <- det(R)
> >      >      >      >      >           . . .
> >      >      >      >      >           for (term in 1:n.terms) {
> >      >      >      >      >               subs <- which(assign == term)
> >      >      >      >      >                   . . .
> >      >      >      >      >                   result <- c(result,
> >      >      >     det(as.matrix(R[subs, subs])) *
> >      >      >      >      >                       det(as.matrix(R[-subs,
> >      >     -subs]))/detR)
> >      >      >      >      >                   . . .
> >      >      >      >      >           }
> >      >      >      >      >           . . .
> >      >      >      >      >     }
> >      >      >      >      >
> >      >      >      >      >     --------- snip -----------
> >      >      >      >      >
> >      >      >      >      >     So, the upshot of all this is that you
> >     should
> >      >     be able
> >      >      >     to do
> >      >      >      >     what you
> >      >      >      >      >     want, but not with either car::vif() or
> >      >      >      >      >     performance::check_collinearity().
> >     Instead, either
> >      >      >     write your own
> >      >      >      >      >     function or do the computations in a
> script.
> >      >      >      >      >
> >      >      >      >      >     There's also a lesson here about S3
> default
> >      >     methods:
> >      >      >     The fact
> >      >      >      >     that a
> >      >      >      >      >     default method returns a result rather
> than
> >      >     throwing
> >      >      >     an error
> >      >      >      >     or a
> >      >      >      >      >     warning doesn't mean that the result is
> the
> >      >     right answer.
> >      >      >      >      >
> >      >      >      >      >     I hope this helps,
> >      >      >      >      >        John
> >      >      >      >      >
> >      >      >      >      >
> >      >      >      >      >     On 2022-02-26 3:45 p.m., Juho Kristian
> >     Ruohonen
> >      >     wrote:
> >      >      >      >      >      > Dear John W,
> >      >      >      >      >      >
> >      >      >      >      >      > Thank you very much for the tip-off!
> >      >     Apologies for not
> >      >      >      >     responding
> >      >      >      >      >     earlier
> >      >      >      >      >      > (gmail apparently decided to direct
> >     your email
> >      >      >     right into the
> >      >      >      >      >     junk folder).
> >      >      >      >      >      > I am very pleased to note that the
> >     package you
> >      >      >     mention does
> >      >      >      >      >     indeed work
> >      >      >      >      >      > with *brms* multinomial models!
> >     Thanks again!
> >      >      >      >      >      >
> >      >      >      >      >      > Best,
> >      >      >      >      >      >
> >      >      >      >      >      > Juho
> >      >      >      >      >      >
> >      >      >      >      >      > pe 25. helmik. 2022 klo 19.23 John
> >     Willoughby
> >      >      >      >      >     (johnwillec using gmail.com
> >     <mailto:johnwillec using gmail.com>
> >      >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>>
> >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>
> >      >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>>>
> >      >      >     <mailto:johnwillec using gmail.com
> >     <mailto:johnwillec using gmail.com> <mailto:johnwillec using gmail.com
> >     <mailto:johnwillec using gmail.com>>
> >      >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>
> >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>>>>
> >      >      >      >     <mailto:johnwillec using gmail.com
> >     <mailto:johnwillec using gmail.com>
> >      >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>>
> >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>
> >      >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>>>
> >      >      >     <mailto:johnwillec using gmail.com
> >     <mailto:johnwillec using gmail.com> <mailto:johnwillec using gmail.com
> >     <mailto:johnwillec using gmail.com>>
> >      >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>
> >     <mailto:johnwillec using gmail.com <mailto:johnwillec using gmail.com>>>>>)
> >      >      >      >      >      > kirjoitti:
> >      >      >      >      >      >
> >      >      >      >      >      >> Have you tried the
> check_collinearity()
> >      >     function
> >      >      >     in the
> >      >      >      >     performance
> >      >      >      >      >      >> package? It's supposed to work on
> brms
> >      >     models, but
> >      >      >     whether it
> >      >      >      >      >     will work on
> >      >      >      >      >      >> a multinomial model I don't know.
> >     It works
> >      >     well
> >      >      >     on mixed
> >      >      >      >     models
> >      >      >      >      >     generated
> >      >      >      >      >      >> by glmmTMB().
> >      >      >      >      >      >>
> >      >      >      >      >      >> John Willoughby
> >      >      >      >      >      >>
> >      >      >      >      >      >>
> >      >      >      >      >      >> On Fri, Feb 25, 2022 at 3:01 AM
> >      >      >      >      >
> >       <r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>
> >      >      >      >
> >       <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>>
> >      >      >      >      >
> >      >       <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>
> >      >      >      >
> >       <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>>>>
> >      >      >      >      >      >> wrote:
> >      >      >      >      >      >>
> >      >      >      >      >      >>> Send R-sig-mixed-models mailing list
> >      >     submissions to
> >      >      >      >      >      >>> r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>>
> >      >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>>>
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> To subscribe or unsubscribe via the
> >     World Wide
> >      >      >     Web, visit
> >      >      >      >      >      >>>
> >      >      > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>
> >      >      >      >
> >      >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>>
> >      >      >      >      >
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>
> >      >      >      >
> >      >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>>>
> >      >      >      >      >      >>> or, via email, send a message with
> >     subject or
> >      >      >     body 'help' to
> >      >      >      >      >      >>>
> >     r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>
> >      >      >      >
> >       <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>>
> >      >      >      >      >
> >      >       <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>
> >      >      >      >
> >       <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>
> >      >     <mailto:r-sig-mixed-models-request using r-project.org
> >     <mailto:r-sig-mixed-models-request using r-project.org>>>>>
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> You can reach the person managing
> >     the list at
> >      >      >      >      >      >>>
> >     r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>>>
> >      >      >      >      >
> >       <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>
> >      >     <mailto:r-sig-mixed-models-owner using r-project.org
> >     <mailto:r-sig-mixed-models-owner using r-project.org>>>>>
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> When replying, please edit your
> Subject
> >      >     line so it is
> >      >      >      >     more specific
> >      >      >      >      >      >>> than "Re: Contents of
> >     R-sig-mixed-models
> >      >     digest..."
> >      >      >      >      >      >>>
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Today's Topics:
> >      >      >      >      >      >>>
> >      >      >      >      >      >>>     1. Collinearity diagnostics for
> >     (mixed)
> >      >      >     multinomial
> >      >      >      >     models
> >      >      >      >      >      >>>        (Juho Kristian Ruohonen)
> >      >      >      >      >      >>>
> >      >      >      >      >      >>>
> >      >      >      >      >
> >      >      >      >
> >      >      >
> >      >
> >
>  ----------------------------------------------------------------------
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Message: 1
> >      >      >      >      >      >>> Date: Fri, 25 Feb 2022 10:23:25
> +0200
> >      >      >      >      >      >>> From: Juho Kristian Ruohonen
> >      >      >      >     <juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>
> >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>>
> >      >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>
> >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>>>
> >      >      >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>
> >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>>
> >      >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>
> >      >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>
> >      >     <mailto:juho.kristian.ruohonen using gmail.com
> >     <mailto:juho.kristian.ruohonen using gmail.com>>>>>>
> >      >      >      >      >      >>> To: John Fox <jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>>
> >      >      >      >     <mailto:jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca> <mailto:jfox using mcmaster.ca
> >     <mailto:jfox using mcmaster.ca>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>
> >      >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>
> >      >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>
> >     <mailto:jfox using mcmaster.ca <mailto:jfox using mcmaster.ca>>>>>>
> >      >      >      >      >      >>> Cc:
> >     "r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>>
> >      >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>>>"
> >      >      >      >      >      >>>
> >     <r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>>
> >      >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>
> >      >     <mailto:r-sig-mixed-models using r-project.org
> >     <mailto:r-sig-mixed-models using r-project.org>>>>>>
> >      >      >      >      >      >>> Subject: [R-sig-ME] Collinearity
> >      >     diagnostics for
> >      >      >     (mixed)
> >      >      >      >      >     multinomial
> >      >      >      >      >      >>>          models
> >      >      >      >      >      >>> Message-ID:
> >      >      >      >      >      >>>          <
> >      >      >      >      >      >>>
> >      >      >      >      >
> >      >      >      >
> >      >      >
> >      >
> >     CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> >     <mailto:
> CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> >      >
> >       <mailto:
> CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> >>
> >      >      >
> >      >
> >       <mailto:
> CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> >>>
> >      >      >      >
> >      >      >
> >      >
> >       <mailto:
> CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> >>>>
> >      >      >      >      >
> >      >      >      >
> >      >      >
> >      >
> >       <mailto:
> CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>>>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com>
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> <mailto:CAG_dBVfZr1-P7Q3kbE8TGPm-_2sJixdGCHCtWM9Q9PEnd8ftZw using mail.gmail.com
> >>>>>>
> >      >      >      >      >      >>> Content-Type: text/plain;
> >     charset="utf-8"
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Dear John (and anyone else
> qualified to
> >      >     comment),
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> I fit lots of mixed-effects
> multinomial
> >      >     models in my
> >      >      >      >     research,
> >      >      >      >      >     and I
> >      >      >      >      >      >> would
> >      >      >      >      >      >>> like to see some (multi)collinearity
> >      >     diagnostics
> >      >      >     on the
> >      >      >      >     fixed
> >      >      >      >      >     effects, of
> >      >      >      >      >      >>> which there are over 30. My models
> >     are fit
> >      >     using the
> >      >      >      >     Bayesian
> >      >      >      >      >     *brms*
> >      >      >      >      >      >>> package because I know of no
> >     frequentist
> >      >     packages
> >      >      >     with
> >      >      >      >      >     multinomial GLMM
> >      >      >      >      >      >>> compatibility.
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> With continuous or dichotomous
> >     outcomes,
> >      >     my go-to
> >      >      >      >     function for
> >      >      >      >      >      >> calculating
> >      >      >      >      >      >>> multicollinearity diagnostics is of
> >     course
> >      >      >     *vif()* from
> >      >      >      >     the *car*
> >      >      >      >      >      >> package.
> >      >      >      >      >      >>> As expected, however, this function
> >     does not
> >      >      >     report sensible
> >      >      >      >      >     diagnostics
> >      >      >      >      >      >>> for multinomial models -- not even
> for
> >      >     standard
> >      >      >     ones fit
> >      >      >      >     by the
> >      >      >      >      >     *nnet*
> >      >      >      >      >      >>> package's *multinom()* function.
> >     The reason, I
> >      >      >     presume, is
> >      >      >      >      >     because a
> >      >      >      >      >      >>> multinomial model is not really one
> >     but C-1
> >      >      >     regression
> >      >      >      >     models
> >      >      >      >      >     (where C
> >      >      >      >      >      >> is
> >      >      >      >      >      >>> the number of response categories)
> >     and the
> >      >     *vif()*
> >      >      >      >     function is not
> >      >      >      >      >      >> designed
> >      >      >      >      >      >>> to deal with this scenario.
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Therefore, in order to obtain
> >     meaningful
> >      >     collinearity
> >      >      >      >     metrics,
> >      >      >      >      >     my present
> >      >      >      >      >      >>> plan is to write a simple helper
> >     function
> >      >     that uses
> >      >      >      >     *vif() *to
> >      >      >      >      >     calculate
> >      >      >      >      >      >>> and present (generalized) variance
> >     inflation
> >      >      >     metrics for
> >      >      >      >     the C-1
> >      >      >      >      >      >>> sub-datasets to which the C-1
> component
> >      >     binomial
> >      >      >     models
> >      >      >      >     of the
> >      >      >      >      >     overall
> >      >      >      >      >      >>> multinomial model are fit. In other
> >     words, it
> >      >      >     will partition
> >      >      >      >      >     the data
> >      >      >      >      >      >> into
> >      >      >      >      >      >>> those C-1 subsets, and then apply
> >     *vif()*
> >      >     to as
> >      >      >     many linear
> >      >      >      >      >     regressions
> >      >      >      >      >      >>> using a made-up continuous response
> and
> >      >     the fixed
> >      >      >     effects of
> >      >      >      >      >     interest.
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Does this seem like a sensible
> >     approach?
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Best,
> >      >      >      >      >      >>>
> >      >      >      >      >      >>> Juho
> >      >      >      >      >      >>>
> >      >      >      >      >      >>>
> >      >      >      >      >      >>>
> >      >      >      >      >      >>
> >      >      >      >      >      >>          [[alternative HTML version
> >     deleted]]
> >      >      >      >      >      >>
> >      >      >      >      >      >>
> >     _______________________________________________
> >      >      >      >      >      >> R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>>>
> >      >      >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using 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>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>
> >      >      >      >
> >      >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>>
> >      >      >      >      >
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>
> >      >      >      >
> >      >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>>>
> >      >      >      >      >      >>
> >      >      >      >      >      >
> >      >      >      >      >      >       [[alternative HTML version
> >     deleted]]
> >      >      >      >      >      >
> >      >      >      >      >      >
> >     _______________________________________________
> >      >      >      >      >      > R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>>>
> >      >      >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>>
> >      >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>>
> >      >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using r-project.org>
> >      >     <mailto:R-sig-mixed-models using r-project.org
> >     <mailto:R-sig-mixed-models using 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>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>
> >      >      >      >
> >      >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>>
> >      >      >      >      >
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>
> >      >      >      >
> >      >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>
> >      >      >
> >       <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
> >      >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> >     <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>>>>>
> >      >      >      >      >     --
> >      >      >      >      >     John Fox, Professor Emeritus
> >      >      >      >      >     McMaster University
> >      >      >      >      >     Hamilton, Ontario, Canada
> >      >      >      >      >     web:
> >     https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>
> >      >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>>
> >      >      >      >      >
> >       <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>
> >      >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>>>
> >      >      >      >      >
> >      >      >      >     --
> >      >      >      >     John Fox, Professor Emeritus
> >      >      >      >     McMaster University
> >      >      >      >     Hamilton, Ontario, Canada
> >      >      >      >     web: https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>
> >      >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>>
> >      >      >      >
> >      >      >     --
> >      >      >     John Fox, Professor Emeritus
> >      >      >     McMaster University
> >      >      >     Hamilton, Ontario, Canada
> >      >      >     web: https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>>
> >      >      >
> >      >
> >
>  ------------------------------------------------------------------------
> >      >     --
> >      >     John Fox, Professor Emeritus
> >      >     McMaster University
> >      >     Hamilton, Ontario, Canada
> >      >     web: https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >      >     <https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>>
> >      >
> >     --
> >     John Fox, Professor Emeritus
> >     McMaster University
> >     Hamilton, Ontario, Canada
> >     web: https://socialsciences.mcmaster.ca/jfox/
> >     <https://socialsciences.mcmaster.ca/jfox/>
> >
> --
> John Fox, Professor Emeritus
> McMaster University
> Hamilton, Ontario, Canada
> web: https://socialsciences.mcmaster.ca/jfox/
>
>

	[[alternative HTML version deleted]]



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