This is a question about the difference in calculating the null deviance in a simple Poisson model with and without an intercept.
y = c(2,3,6,7,8,9,10,12,15) x = c(-1, -1, 0, 0, 0, 0, 1, 1, 1) glm(y~x, family = poisson) # Call: glm(formula = y ~ x, family = poisson) # # Coefficients: # (Intercept) x # 1.8893 0.6698 # # Degrees of Freedom: 8 Total (i.e. Null); 7 Residual # Null Deviance: 18.42 # Residual Deviance: 2.939 AIC: 41.05
The null deviance can be calculated as follows:
lf = sum(y * log(y) - y - log(factorial(y))) ln = sum(y * log(mean(y)) - mean(y) - log(factorial(y))) 2*(lf - ln) #  18.42061
If I fit the model without intercept:
glm(y~x - 1, family = poisson) # Call: glm(formula = y ~ x - 1, family = poisson) # # Coefficients: # x # 2.373 # # Degrees of Freedom: 9 Total (i.e. Null); 8 Residual # Null Deviance: 191.9 # Residual Deviance: 94.74 AIC: 130.9
The null deviance is now 191.9.
Can someone tell me how to calculate the null deviance for this model - I was under the impression that it would be the same as for the intercept model, i.e. a single parameter equal to the mean, but obviously it is not.
I presume I've incorrectly assumed that the null model is the same in both cases. Is it not or am I making a stupid mistake? I'd actually never considered this case before in any detail and there is obviously a gap in my knowledge somewhere.
I can get the null deviance as follows:
glm(y~1-1, family=poisson) # Call: glm(formula = y ~ 1 - 1, family = poisson) # # No coefficients # # Degrees of Freedom: 9 Total (i.e. Null); 9 Residual # Null Deviance: 191.9 # Residual Deviance: 191.9 AIC: 226
but I don't know what this model is.
Apologies if this has been answered before but the only similar question I have seen (Why does the null deviance in glm.nb differ between models of the same response variable?) does not give an explicit explanation.