Add simulated poisson distributions to a ggplot

2019-06-26 03:08发布

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

1条回答
小情绪 Triste *
2楼-- · 2019-06-26 03:50

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

查看更多
登录 后发表回答