I am new to R's pscl package, and struggling to interpret output from a hurdle model. I have a data frame df which contains a count variable named count (containing a lot of zero's) and two predictor variables: VAR1 and VAR2. VAR1 contains two levels(lev1 and lev2) and VAR2 contains three (levA, levB and levC).

I fit the model with

fit = hurdle(count ~ var1 + var2, data = df, link = 'logit', dist = 'negbin'

and summary(fit) returns something like this:

Zero hurdle model coefficients (binomial with logit link):
                               Estimate Std. Error z value Pr(>|z|)    
        (Intercept)          -2.799e+00  8.638e-01  -3.241  0.00119 ** 
        VAR1lev2              8.924e-01  3.257e-01   2.740  0.00614 ** 
        VAR2levB              1.236e+00  4.972e-01   2.487  0.01288 *  
        VAR2levC              5.217e-01  3.379e-01   1.544  0.12259 

I have two major concerns.

1) I understand that the intercept represents the 'baseline' likelihood of a positive value for count. How does one interpret a negative intercept? Does it simply mean that count is more likely to be 0, as opposed to >0? More importantly, does a negative intercept affect interpretation of estimated values for my predictor variables? (and if so, how?)

2) I understand that each level of VAR1 and VAR2 is being compared to a reference level. So, there is a significant difference in estimated count between VAR1lev1 and VAR1lev2. Is there an sensible way to infer differences between two non-reference levels - in this case, between VAR2levB and levC?


Update: I figured out how to print contrasts between all conditions. The following loop essentially re-levels each variable k times, where k is the number of levels in the variable. The output for each loop is printed, such that all levels are presented as a reference. Hope this is helpful for future users.

for (lev in levels(df$Var1)[1:length(levels(df$Var1))]) {
  df[,'Var1'] = relevel(df[,'Var1'],lev)
  for (lev2 in levels(df$Var2)[1:length(levels(df$Var2))]) {
    df[,'Var2'] = relevel(df[,'Var2'],lev2)
      fit = update(fit)
      smry = summary(fit)

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.