在对子数据和分解数据进行分析时,ZIP和ZINB模型出错

时间:2015-07-25 22:19:10

标签: r

我正在尝试运行ZIP和ZINB模型来尝试查看一些可能有助于解释8个地理区域内疾病(orf)分布的因素。这些模型适用于某些地区而非其他地区。但是,在R中分解并运行模型时,我会收到错误消息。

我如何解决这个问题,或者是否有一个可能更适合子集的模型,因为分析只有在所有区域都统一时才有意义。

zinb3 = zeroinfl(Cases2012 ~ Precip+ Altitude +factor(Breed)+ factor(Farming.Practise)+factor(Lambing.Management)+ factor(Thistles)  ,data=orf3, dist="negbin",link="logit")
Error in solve.default(as.matrix(fit$hessian)) : 
  system is computationally singular: reciprocal condition number = 2.99934e-24

Results after fitting zerotrunc & glm as suggested by @Achim Zeileis. How do i interprete zerotruc output given that no p values. Also how can I correct the error with glm?

    zerotrunc(Cases2012 ~ Flock2012+Stocking.Density2012+ Precip+ Altitude +factor(Breed)+ factor(Farming.Practise)+factor(Lambing.Management)+ factor(Thistles),data=orf1, subset = Cases2012> 0)

    Call:
    zerotrunc(formula = Cases2012 ~ Flock2012 + Stocking.Density2012 + Precip + Altitude + 
        factor(Breed) + factor(Farming.Practise) + factor(Lambing.Management) + factor(Thistles), 
        data = orf1, subset = Cases2012 > 0)

    Coefficients (truncated poisson with log link):
                    (Intercept)                    Flock2012         Stocking.Density2012  
                     14.1427130                   -0.0001318                   -0.0871504  
                         Precip                     Altitude               factor(Breed)2  
                     -0.1467075                   -0.0115919                   -3.2138767  
      factor(Farming.Practise)2  factor(Lambing.Management)2            factor(Thistles)3  
                      1.3699477                   -2.9790725                    2.0403543  
              factor(Thistles)4  
                      0.8685876  

    glm(factor(Cases2012 ~ 0) ~ Precip+ Altitude +factor(Breed)+ factor(Farming.Practise)+factor(Lambing.Management)+ factor(Thistles) +Flock2012+Stocking.Density2012 ,data=orf1, family = binomial)
    Error in unique.default(x, nmax = nmax) : 
      unique() applies only to vectors

1 个答案:

答案 0 :(得分:3)

很难根据所提供的信息确切说明发生了什么。但是,我怀疑某些地区的数据不允许符合指定的模型。例如,可能存在某些区域,其中某些因子水平(品种或Farming.Practise或Lambin.Management或Thristles)仅具有零值(或者仅为非零但在实践中不那么频繁)。然后系数估计经常退化,以便相关的零膨胀概率变为1,并且无法估计计数系数。

通过使用障碍而不是零膨胀模型来分离这些效果通常更容易。然后,模型的两个部分也可以由glm(factor(y > 0) ~ ..., ..., family = binomial)zerotrunc(y ~ ..., ..., subset = y > 0)单独拟合。后一个函数与pscl使用的代码基本相同,但已被考虑到R-Forge上的包countreg中的独立函数(尚未在CRAN上)。