Poisson model for non-integer I have a GLM with (quasi)poisson family.
My dataset has 3 variables:
rate_data
rate_benchmark
X
So fitting the model:
model <- glm(formula = rate_data ~ offset(log(rate_benchmark)) + X - 1, family = (quasi)poisson, data = data)

model_null <- glm(formula = rate_data ~ offset(log(rate_benchmark)) - 1, family = (quasi)poisson, data = data)


When using "poisson" it gives me warnings about non-integer values, which it doesnt give me for the quasipoisson. However, when testing for my beta being zero anova(model_null, model, test = "LRT") it gives me completely different deviance (hence also different p-values).
Which model am I supposed to use? My first thought was using quasipoisson, but no warnings does not necessarily mean it is correct.
 A: The Poisson and quasi-Poisson models differ in their assumptions about the form of the function relating the mean and variance of each observation. The Poisson assumes the variance equals the mean; the quasi-Poisson assumes that $\sigma^2 = \theta\mu$, which reduces to the Poisson when $\theta=1$. Consequently, the deviance and p-values will, as you have observed, be different between the two models.
You can in fact run a Poisson regression on non-integer data, at least in R; you'll still get the "right" coefficient estimates etc.  The warnings are there as warnings; they don't represent an algorithm failure.  Here's an example:
z <- 1 + 2*runif(100)
x <- rgamma(100,2,sqrt(z + z*z/2)) 
summary(glm(x~z, family=poisson))

... blah blah blah ...

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.56390    0.17214   3.276  0.00105 ** 
z            0.43119    0.08368   5.153 2.57e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

... blah blah blah ...

There were 50 or more warnings (use warnings() to see the first 50)

Now we'll compare to a pure "quasi" model with the same link function and relationship between mean and variance; the "quasi" model makes no assumptions about integer values for the target variable:
summary(glm(x~z, family=quasi(link="log", variance="mu")))

... stuff ...

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   0.5639     0.2621   2.151  0.03392 * 
z             0.4312     0.1274   3.384  0.00103 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for quasi family taken to be 2.318851)

Note that the parameter estimates are exactly the same, but the standard errors are different; this is due to the different calculations of variance, as reflected by the different dispersion parameters.
Now for the quasi-Poisson model, which will, again, give us the same parameter estimates as the Poisson model, but with different standard errors:
summary(glm(x~z, family=quasipoisson))

... more stuff ...

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   0.5639     0.2621   2.151  0.03392 * 
z             0.4312     0.1274   3.384  0.00103 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for quasipoisson family taken to be 2.31885)

Since the mean-variance relationship and link functions are the same as in the "quasi" model, the model results are the same also.
A: The Poisson distribution deals with counts -- the actual number of objects you counted in a defined volume,  or the actual number of events you counted in a defined period of time.
If you normalized to a rate, the distribution is not Poisson.
