4

I have made a poisson regression and then visualised the model:

library(ggplot2)
year <- 1990:2010
count <- c(29, 8, 13, 3, 20, 14, 18, 15, 10, 19, 17, 18, 24, 47, 52, 24, 25, 24, 31, 56, 48)
df <- data.frame(year, count)
my_glm <- glm(count ~ year, family = "poisson", data = df)
my_glm$model$fitted <- predict(my_glm, type = "response")
ggplot(my_glm$model) + geom_point(aes(year, count)) + geom_line(aes(year, fitted))

enter image description here

Now I want to add these simulated Poisson distributions to the plot:

library(plyr)
poisson_sim <- llply(my_glm$model$fitted, function(x) rpois(100, x))

The plot should look something like this (red points are photoshopped):

enter image description here

Jaap
  • 81,064
  • 34
  • 182
  • 193
luciano
  • 13,158
  • 36
  • 90
  • 130

1 Answers1

4

You can convert simulated values to vector and then use them to make new data frame where one column contains years repeated each 100 times and second column is simulated values.

poisson_sim <- unlist(llply(my_glm$model$fitted, function(x) rpois(100, x)))
df.new<-data.frame(year=rep(year,each=100),sim=poisson_sim)

Then add simulated points with geom_jitter().

ggplot(my_glm$model) + geom_point(aes(year, count)) + geom_line(aes(year, fitted))+
      geom_jitter(data=df.new,aes(year,sim),color="red")

enter image description here

Didzis Elferts
  • 95,661
  • 14
  • 264
  • 201