2
$\begingroup$

I am trying to make a partial residual plot of one quadratic predictor in GLMM (glmer in R). I tried to do it manually, from how I understood the definition of partial residual plot, but I'm still getting different result than the one of the effects package. Where do I get it wrong?

This is my GLMM model:

> m3b <- glmer(cbind(Juv, Ad) ~ cov1 + I(cov1^2) + Ad_scaled + (1|Species:Year) + (1 + cov1 + I(cov1^2)|Species) + (1|Species:Site), family = binomial, data = data, 
    control = glmerControl(optimizer ='optimx', optCtrl=list(method='nlminb'))) 
> summary(m3b)
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: binomial  ( logit )
Formula: cbind(Juv, Ad) ~ cov1 + I(cov1^2) + Ad_scaled + (1 | Species:Year) +  
    (1 + cov1 + I(cov1^2) | Species) + (1 | Species:Site)
   Data: data
Control: glmerControl(optimizer = "optimx", optCtrl = list(method = "nlminb"))

     AIC      BIC   logLik deviance df.resid 
  2970.6   3026.3  -1473.3   2946.6      754 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.2727 -0.8569 -0.2288  0.5996  3.2889 

Random effects:
 Groups       Name        Variance Std.Dev. Corr       
 Species:Site (Intercept) 0.475717 0.68972             
 Species:Year (Intercept) 0.023712 0.15399             
 Species      (Intercept) 0.980009 0.98995             
              cov1        0.002376 0.04874   1.00      
              I(cov1^2)   0.003590 0.05992  -1.00 -1.00
Number of obs: 766, groups:  Species:Site, 160; Species:Year, 40; Species, 4

Fixed effects:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.08008    0.50172   0.160   0.8732    
cov1        -0.13683    0.04656  -2.939   0.0033 ** 
I(cov1^2)    0.11609    0.05035   2.306   0.0211 *  
Ad_scaled   -0.29382    0.02932 -10.022   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
          (Intr) cov1   I(1^2)
cov1       0.533              
I(cov1^2) -0.645 -0.561       
Ad_scaled -0.007  0.031 -0.108
convergence code: 0
Parameters or bounds appear to have different scalings.
  This can cause poor performance in optimization. 
  It is important for derivative free methods like BOBYQA, UOBYQA, NEWUOA.

So now, as I understand the definition of partial residual plot, I make my own code according to the definition:

plot(data$cov1, residuals(m3b, type = "response") + data$cov1*-0.13683 + data$cov1^2*0.11609)
curve(x*-0.13683 + x^2*0.11609, xlim = c(min(data$cov1), max(data$cov1)), add = TRUE)

enter image description here

But when I use prepared functions in package effects, the plot is different! The quadratic curve looks similar in both (apart from scaling, which is OK), but there are apparent and significant differences in the individual points. How is it possible? I guess the effects package has it right. Where did I strayed from the correct definition of partial plot?

require(effects)
est<-Effect("cov1", partial.residuals=TRUE, m3b) 
plot(est)

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.