When we are dealing with count variables we are told not to log transform our data but to instead use a poisson regression.

I was wondering.. when it comes Poisson regression, the common formulae is : $$\log[E(Y|X)]=\beta_0+\beta_1X$$ Given: the value of $Y$ the value of $X$

I know I can now solve for $\beta_0$ and $\beta_1$. I can input this into an R code ... but my question is: Once I get the regression coefficient what can I do with that information?

How does one adjust the model to become poisson regression model? I notice, even when performing this, my $Y$ and $X$ value will remain the same and unchanged. I thought it would perform some sort of an adjustment to my values.

*********EDIT An example data set: data.frame(y = c(200,766,819,357), x = c(77,82,138,44)))

How do I model my dataset? Am I supposed to do an expected minus observed data? Where is my Y value included in this model?

  • $\begingroup$ You may check the standard errors, assessment of fit etc. $\endgroup$ – SmallChess Jan 7 at 22:04
  • $\begingroup$ @SmallChess Once I check the standard errors, assessment of fit, what do I do? $\endgroup$ – hsayya Jan 7 at 22:12
  • 1
    $\begingroup$ Are these correlation matrices? These do not appear to be raw data. $\endgroup$ – Todd D Jan 8 at 3:51
  • $\begingroup$ @ToddD Yes they are. I'm not sure how to put them into raw data form $\endgroup$ – hsayya Jan 8 at 4:31
  • 1
    $\begingroup$ You really need the raw data to create a regression model. It may be possible to simulate your X values. It is unclear to me how to simulate the Y values in relation to X given only matrices. $\endgroup$ – Todd D Jan 8 at 16:28

The coefficient that is output in R by the glm function with family set to poisson is the the median % change observed in your response variable for each unit increase in your covariate. The glm function in R, by default, will use a log link, meaning it will log transform your response data. In this case the coefficient represents the log-odd change in your response variable. Here is a good tutorial on how to interpret them if you are unsure. To create a linear model in R with normal errors you use:

 fitNorm <- lm(Response ~ Predictors, data = df)

To create a poisson model you can use:

 fitPois <- glm(Response ~ Predictors, family = "poisson", data = df)

This won't necessarily lead to different coefficients - it depends on the data. If you post your data I might be able to help more.

The use of the poisson distribution instead of the normal distribution is entirely dependent on your response data. It is not a substitute for log transformation. Each of these error families (i.e. poisson and normal) have a different set of assumptions associated with them that are a function of the properties of the distribution. For instance, the normal distribution is continuous and unbounded. In simpler terms it can take any numeric value (e.g. 2.03, 4, 6.11) and it can take any value from negative infinity to infinity. Moreover, classic linear models assume that the errors are normally distributed and centered on zero - this means that the variance is constant and the residuals are centered on zero - something you can check by looking at residual plots and Q-Q plots. These models are good for response variables which meet these assumptions. If your data does not have constant variance, or the relationship between the predictor and the response is not strictly linear, then sometimes log transformations can correct this. If there is curvature then polynomials are another option.

In contrast, the poisson distribution is ideal for most count data. This is because the values it takes must be integers (e.g. 1, 2, 100 - whole numbers) and you can't have counts less than zero, but it goes up to infinity. Moreover, it assumes that the variance in the response is equal to the mean; the variance increases with the mean value, so there isn't an assumption that the variance is constant across the range of values of interest but there is an assumption that the variance is approximately equal to the mean - if that isn't met then one option (of many) you can look at is negative binomial models which include an additional term accounting for the extra-poisson variation.

There are a lot of good books and online tutorial on how one should go about model fitting out there and there is also a lot more to say on it. Here is a description of how one might go about model assessment of linear models in R.

I hope this all helps, but feel free to ask if anything is unclear!

  • $\begingroup$ Thanks @André.B. I put a sample of my dataset (an example). If you could please walk me through it. How would you apply poisson regression on this? I tried reading through the links you sent me but it still didn't answer my question. I noticed some people plot the poisson.. should I do that? Or would my matrix values change for Y? $\endgroup$ – hsayya Jan 8 at 1:33
  • 1
    $\begingroup$ I am afraid I don't quite follow the matrix that you have input. Typically data is in a long format for regression analysis (I.e. data.frame(y = c(1,2,3,4), x = c(10,20,30,40))). Could you please get it into that format? $\endgroup$ – André.B Jan 8 at 2:01
  • $\begingroup$ Thanks for the help, I provided a sample dataset above in the edit $\endgroup$ – hsayya Jan 9 at 17:15
  • $\begingroup$ That seems like a very small dataset but if that is what you have this is how you fit a poisson model to it: zz <- data.frame(y = c(200,766,819,357), x = c(77,82,138,44)) fit <- glm(y ~ x, family = "poisson", data = zz) summary(fit) - then you just need to interpret as in the first paragraph in my above answer. $\endgroup$ – André.B Jan 9 at 20:05

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