Why is Ordinary Least Squares performing better than Poisson regression? I'm trying to fit a regression to explain the number of homicides in each district of a city.
Although I know that my data follows a Poisson distribution, I tried to fit an OLS like this:
$log(y+1) = \alpha + \beta X + \epsilon $
Then, I also tried (of course!) a Poisson regression. The problem is that I have better results in the OLS regression: the pseudo-$R^2$ is higher (0.71 vs 0.57) and the RMSE as well (3.8 vs 8.88. Standardized to have the same unit).
Why? Is it normal? What's wrong on using the OLS no matter what the distribution of the data is?
edit
Following the suggestions of kjetil b halvorsen and others, I fitted the data through two models: OLS and Negative Binomial GLM (NB). I started with all the features I have, then I recursively removed one by one the features which were not significant.
OLS is
$\sqrt{\frac{crime}{area}} = \alpha + \beta X + \epsilon $ 
with weights = $area$.
summary(w <- lm(sqrt(num/area) ~  RNR_nres_non_daily + RNR_nres_daily + hType_mix_std + area_filtr + num_community_places+ num_intersect + pop_rat_num + employed + emp_rat_pop + nden_daily + nden_non_daily+ bld_rat_area + bor_rat_area + mdist_highways+ mdist_parks, data=p, weights=area))

error2 <- p$num - (predict(w, newdata=p[,-1:-2], type="response")**2)*p$area

rmse(error2)
[1] 80.64783

The NB predicts the number of crime, with the district's area as offset.
summary(m3 <- glm.nb(num ~  LUM5_single  + RNR_nres + mdist_daily + mdist_non_daily+ hType_mix_std + ratio_daily_nondaily_area + area_filtr + num_community_places  + employed  + nden_daily + nden_non_daily+ bld_rat_area + bor_rat_area + mdist_smallparks + mdist_highways+ mdist_parks + offset(log(area)), data=p, maxit = 1000))

error <- p$num - predict(m3, newdata=p[,-1:-2], type="response")

rmse(error)
[1] 121.8714

OLS residuals:

NB residuals

So the RMSE is lower in the OLS but it seems that the residuals are not so Normal....
 A: There are lots of choices of pseudo $R^2$'s. Lots of them are very flawed. Generally speaking, there's usually no reason that the $R^2$ produced from OLS will be a comparable value to a given pseudo $R^2$; rather, pseudo $R^2$'s are typically used for comparing models of the same distributional family. 
A: It is true that your data is not Normally distributed (which I presume is why you also ran a Poisson regression) but your data is likely not a Poisson distribution either. The Poisson distribution assumes that the mean and the variance are the same, which is likely not the case (as mentioned in other answers - you can capture this discrepancy and incorporate it into the model). Since your data isn't really a perfect fit for either model, it makes sense that OLS may perform better.
Another thing to note is that the ordinary least squares estimates are robust to non-Normality which may be why you're getting a reasonable model. The Gauss-Markov Theorem tells us that OLS coefficients estimates are the best (in terms of mean squared error) linear unbiased estimators (BLUE) under the following assumptions,


*

*The errors have a mean of zero

*The observations are uncorrelated

*The errors have have constant variance


There is no assumption of Normality here so your data can very well be reasonable for this model! With that being said, I would look into a Poisson model with an over-dispersion parameter baked in there and you should get better results.
A: I suspect that part of the problem may lie in your choice of performance metric.  If you measure test performance using RMSE then training the model to minimise the MSE matches the test criterion, giving a hint as to what is considered important.  You may find that if you measure the test performance using the negative log-likelihood of the test set using a Poisson likelihood that the Poisson model works better (as might be expected).  This may be a minor issue compared with the other issues raised, but it might be a useful sanity check.
A: First, with such data I would expect overdispersion (if you don't know what that is, see https://stats.stackexchange.com/search?q=what+is+overdispersion%3F ). 
That would have to be addressed with a Poisson glm, but is not an issue with usual linear regression.  As said in a comment, with a poisson glm you want to include $\log(\text{DistrictSize})$ as an offset, with a linear regression you will need to use as response variable $\frac{\text{Nr. homicides}}{\text{District Size}}$.  One possible reason for the discrepancy of results is that  you have treated this problem differently in the two cases.  You could post here some plots of results, like residual plots, so we can see what is happening.  Or you could post your data as a table in the original post .... could be interesting to have a look.
Another issue is the transformation you used with the linear regression.  The usual variance stabilizing transformation used with count data is the square root, not the logarithm.
Another issue is the choice of transformation used with linear regression. When using as response $Y_i/x_i$, you wil need weighted linear regression. 
Assuming as an approximation that $Y_i \sim \text{Poisson}(\lambda x_i)$, we have 
$$ \DeclareMathOperator{\E}{\mathbb{E}}
   \DeclareMathOperator{\V}{\mathbb{V}}
    \E \frac{Y_i}{x_i} \propto \lambda   \\
    \V \frac{Y_i}{x_i} \propto  x_i^{-1}
$$
So you should use weighted linear regression with $x_i$ as weight.  A simple analysis shows that, as an approximation, the same weights are appropriate with $\sqrt{Y_i/x_i}$ or $\log (Y_i/x_i +1)$ as responses. 
    EDIT

As for your additional analysis in the post, note that rmse's cannot be compared directly between the two models, as different responses are used!  To make a direct comparison, you will need to backtransform the predicted values to the original scale.  Then you can calculate rmse's yourself, and see.  But note that predictions obtained after backtransformation can be biased, because of nonlinearities.  So some adjustment to the backtransformed predictions could make them more useful.  In some cases, such could be calculated theoretically, ot you could just use a bootstrap. 
