Contrast between variables in glmmTMB

核能气质少年 提交于 2020-06-28 03:49:08

问题


As a reproducible example, let's use the next no-sense example:

> library(glmmTMB)
> summary(glmmTMB(am ~ disp + hp + (1|carb), data = mtcars))
 Family: gaussian  ( identity )
Formula:          am ~ disp + hp + (1 | carb)
Data: mtcars

     AIC      BIC   logLik deviance df.resid 
    34.1     41.5    -12.1     24.1       27 

Random effects:

Conditional model:
 Groups   Name        Variance  Std.Dev. 
 carb     (Intercept) 2.011e-11 4.485e-06
 Residual             1.244e-01 3.528e-01
Number of obs: 32, groups:  carb, 6

Dispersion estimate for gaussian family (sigma^2): 0.124 

Conditional model:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.7559286  0.1502385   5.032 4.87e-07 ***
disp        -0.0042892  0.0008355  -5.134 2.84e-07 ***
hp           0.0043626  0.0015103   2.889  0.00387 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Actually, my real model family is nbinom2. I want to make a contrast test between disp and hp. So, I try:

> glht(glmmTMB(am ~ disp + hp + (1|carb), data = mtcars), linfct = matrix(c(0,1,-1)))
Error in glht.matrix(glmmTMB(am ~ disp + hp + (1 | carb), data = mtcars),  : 
  ‘ncol(linfct)’ is not equal to ‘length(coef(model))’

How can I avoid this error?

Thank you!


回答1:


The problem is actually fairly simple: linfct needs to be a matrix with the number of columns equal to the number of parameters. You specified matrix(c(0,1,-1)) without specifying numbers of rows or columns, so R made a column matrix by default. Adding nrow=1 seems to work.

library(glmmTMB)
library(multcomp)
m1<- glmmTMB(am ~ disp + hp + (1|carb), data = mtcars)
modelparm.glmmTMB <- function (model, coef. = function(x) fixef(x)[[component]],
                               vcov. = function(x) vcov(x)[[component]],
                               df = NULL, component="cond", ...) {
    multcomp:::modelparm.default(model, coef. = coef., vcov. = vcov.,
                        df = df, ...)
}        
glht(m1, linfct = matrix(c(0,1,-1),nrow=1))


来源:https://stackoverflow.com/questions/62252468/contrast-between-variables-in-glmmtmb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!