【问题标题】:Error message when using broom to get coefficients from glmmTMB zero inflation models使用扫帚从 glmmTMB 零膨胀模型中获取系数时出现错误消息
【发布时间】:2018-03-05 17:36:33
【问题描述】:

使用 Owls 数据和 glmmTMB 包,我想直观地比较不同零膨胀模型的回归系数,这些模型在使用的系列(ZIPOISS、ZINB1、ZINB2)和有/无偏移量(logBroodSize)中有所不同.

但是我的第一个问题是获取系数。 broom 包中的 tidy 函数应该为您提供系数,以便稍后使用 ggplot 绘制它们,但是当我尝试获取它们时出现以下错误:

modList= list(zipoiss, zinb1, zinb2, zinb1_bs, zinb2_bs)  
coefs= ldply(modList,tidy,effect="fixed",conf.int=TRUE,
                  .id="model") %>%
    mutate(term=abbfun(term)) %>%
    select(model,term,estimate,conf.low,conf.high) %>%
    filter(!term %in% c("Intercept","Intercept.1","NCalls","zi_NCalls"))

Error in as.data.frame.default(x) :
cannot coerce class ""glmmTMB"" to a data.frame
Also: Warning message:
In tidy.default(X[[i]], ...) :
No method for tidying an S3 object of class glmmTMB , using as.data.frame

您知道可能出了什么问题吗?我已经被告知没有正确版本的 broom 可能是原因,但是我已经安装了正确的版本...接下来提供了一个可重现示例的代码:

    # Packages and dataset
    library(glmmTMB)
    library(broom) # devtools::install_github("bbolker/broom")
    library(plyr)
    library(dplyr)
    data(Owls,package="glmmTMB")
    Owls = plyr::rename(Owls, c(SiblingNegotiation="NCalls"))
    Owls = transform(Owls,
             ArrivalTime=scale(ArrivalTime, center=TRUE, scale=FALSE),
             obs=factor(seq(nrow(Owls))))

    # Models
    zipoiss<-glmmTMB(NCalls~(FoodTreatment+ArrivalTime)*SexParent+
    offset(logBroodSize)+(1|Nest),
    data=Owls,
    ziformula = ~ 1,
    family="poisson")

    zinb2<- glmmTMB(NCalls~(FoodTreatment+ArrivalTime)*SexParent+
    offset(logBroodSize)+(1|Nest),
    data=Owls,
    ziformula = ~ 1,
    family="nbinom2")

    zinb1 <- glmmTMB(NCalls~(FoodTreatment+ArrivalTime)*SexParent+
    offset(logBroodSize)+(1|Nest),
    data=Owls,
    ziformula = ~ 1,
    family="nbinom1")

    zinb1_bs<- glmmTMB(NCalls~(FoodTreatment+ArrivalTime)*SexParent+ 
    BroodSize+(1|Nest),
    data=Owls,
    ziformula = ~ 1,
    family="nbinom1")

    zinb2_bs<- glmmTMB(NCalls~(FoodTreatment+ArrivalTime)*SexParent+
    BroodSize+(1|Nest),
    data=Owls,
    ziformula = ~ 1,family="nbinom2")

    # Get coefficients ("coefs" does not work yet...)
    modList = list(zipoiss, zinb1, zinb2, zinb1_bs, zinb2_bs)
    coefs = ldply(modList,tidy,effect="fixed",conf.int=TRUE,
          .id="model") %>%
    mutate(term=abbfun(term)) %>%
    select(model,term,estimate,conf.low,conf.high) %>%
    filter(!term %in% c("Intercept","Intercept.1","NCalls","zi_NCalls")) 

【问题讨论】:

    标签: r coefficients broom


    【解决方案1】:

    这现在(从今天开始)适用于新的/正在开发的broom.mixed 包,例如

    devtools::install_github("bbolker/broom.mixed")
    

    希望这将很快出现在 CRAN 上,但这只是中等优先级 对我来说,我不想在它至少 90% 出炉之前将它发布给 CRAN。欢迎请求请求!

    最后一步改变了一点(一方面,我好像没有abbfun):

    modList = lme4:::namedList(zipoiss, zinb1, zinb2, zinb1_bs, zinb2_bs)
    coefs = ldply(modList,tidy,effect="fixed",conf.int=TRUE,
                  .id="model") %>%
      select(model,term,component,estimate,conf.low,conf.high) %>%
      filter(!term %in% c("(Intercept)","NCalls"))
    

    警告:为glmmTMB 模型开发这些工具是相当新的/实验性的;您应该 (1) 仔细检查您的结果,以及 (2) report an issue 如果某些事情没有按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多