This is a theoretical problem that I'm trying to calculate whilst at work.

Essentially, what is the probability of a car accident in a state given that these variables are provided to you:

  1. Counties within the US States
  2. US States
  3. Number of car-crashes within the Counties
  4. Year
  5. Miles traveled; average and total
  6. Vehicle speed

My initial approach was to include a poisson distribution following these variables as parameters:
$\lambda = rt$
$r$ is the accident rates which is calculated by the number of car-crashes within counties multiplied by the average miles traveled, and all of it divided by the total miles traveled of all vehicles in the county.
$t$ is the time, in this instance I'm working with data over 8 years so $t = 1, 2, 3, 4, 5, 6, 7,8$
$k$ = number of accidents in a county

The problem I have with using the poisson distribution is that higher accidents are under-represented relative to smaller accidents. Which tells me that places with lower accidents have a higher probability of an accident occurring than places with more accidents, though I disagree.

Some sample data:

   States     counties average_miles accidents total_miles  TRAV_SP
1 Alabama  AUTAUGA (1)      723.8889        16        6515 54.00000
2 Alabama  BALDWIN (3)      192.7250        65        7709 44.23529
3 Alabama  BARBOUR (5)      569.2857         9        3985 50.42857
4 Alabama     BIBB (7)      599.8000         8        2999 54.28571
5 Alabama   BLOUNT (9)      349.9231        18        4549 56.05882
6 Alabama BULLOCK (11)      705.0000         3        1410  5.00000

What alternative model would better capture the idea of the probability of a car-accident? I understand that more variables must be considered like weather, types of road, the persons psychology at the time etc... But I'm aiming for the most simplest framework.

Assuming that the total accidents in Alabama are 1000, shouldn't Baldwin have a higher probability of an accident occurring, but the calculation says otherwise?

accident_rate <- (merged_counties$accidents*merged_counties$average_miles)/merged_counties$total_miles

x <- 0
for(i in 1:6){
[1] 8.041571e-11 1.211741e-78 7.314061e-06 2.150642e-04 1.368526e-14

Note: I miss-interpreted the poisson distribution as $k$ should be 1 as I'm looking for the calculation of a single accident. The probabilities actually turn out rather handsome as a result as opposed to the values in the $R$ code above.

  • $\begingroup$ Why do you use $\lambda = rt$? Poisson distribution is parametrized by rate understood as "number of events in other specified interval", I'm not sure if $rt$ is what you want it to be. $\endgroup$
    – Tim
    Sep 7, 2021 at 15:06
  • $\begingroup$ @Tim I've had the alternative idea of taking the mean of accident rates, given that $\lambda$ is the expected value of a poisson distribution? Though I still agree with you and it may be so that $rt$ is not the parameterization I'm after. Do you have an alternative suggestion? $\endgroup$
    – Stackcans
    Sep 7, 2021 at 15:18
  • 1
    $\begingroup$ accidents / miles ? $\endgroup$
    – Tim
    Sep 7, 2021 at 15:47
  • $\begingroup$ @Tim This seems to worsen the probabilities. The aim was that accidents * average miles / total miles indicates accidents rates per average mile traveled. Though I'm unsure of the poisson model at this stage for this idea given that more accidents should serve better, however they have a far lower probability $\endgroup$
    – Stackcans
    Sep 7, 2021 at 16:13
  • $\begingroup$ Why you need to divide average by total? What do “average” and “total” mean in here? $\endgroup$
    – Tim
    Sep 7, 2021 at 16:34

1 Answer 1


You asked about the simplest approach. Poisson distribution is parametrized by the rate $\lambda$ that can be understood "number of events in other specified intervals". The simplest approach would be to set it to something like accidents / miles, so you disregard all the details and just consider a random mile driven by a random car per state.

In the comments you started considering more complicated approaches. If you want to take into account multiple variables, there is no point in overthinking this, just use Poisson regression, you can use the variables you have and their interactions (when meaningful) as independent variables in the model. It will result in simple and interpretable model.

  • $\begingroup$ I agree with you and have opted for accident / miles / total cars as you mentioned in the comments. This would allow for me to take into account the number of accidents relative to total miles and registered vehicles. I have opted not for the Poisson regression purely on the basis that I required a probability, whereas the coefficients of a Poisson regression would provide me with values too complex to explain to the non-initiated statistician. $\endgroup$
    – Stackcans
    Sep 8, 2021 at 10:06
  • $\begingroup$ @Stackcans Poisson regression predicts the mean, $\lambda$, of Poisson distribution, so it can be used the same way as the simple approach for calculating the probabilities. $\endgroup$
    – Tim
    Sep 8, 2021 at 10:19
  • $\begingroup$ Could you provide a practical example of it's application as I fail to see this? I have used: summary(glm(VE_TOTAL ~ STATENAME + MILEPT + WEATHER1, accident, family=poisson(link=log))) (from raw data here: [accidents]{nhtsa.gov/file-downloads?p=nhtsa/downloads/FARS/2019/National}), are you suggesting that I use the column: $Pr(>|z|)$ and using significance values as having a higher probablity? Though this seems more complex to interpret compared to a scale of 0 - 1, with 1 being the highest. Unless I understood your wong? $\endgroup$
    – Stackcans
    Sep 8, 2021 at 10:50
  • 1
    $\begingroup$ Given the predicted mean from the Poisson regression, it is possible to calculate the probability that the observed number of accidents will be greater than 0. $\endgroup$ Sep 8, 2021 at 11:50
  • 1
    $\begingroup$ @Stackcans basically it would be something like ppois(z, lambda=predict(glm(VE_TOTAL ~ STATENAME + MILEPT + WEATHER1, accident, family=poisson(link=log)), lower.tail=TRUE) for $\Pr(\hat y > z | X)$. $\endgroup$
    – Tim
    Sep 8, 2021 at 12:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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