use*_*ser 0 r poisson probability-density
所以,我尝试模拟混合泊松分布:
data2 <- data.frame(x = c(rpois(n = 50, lambda = 0), rpois(n = 450, lambda = 10)))
Run Code Online (Sandbox Code Playgroud)
然后在其上绘制直方图和密度函数,对于分布函数,我使用spatstatdmixpois包中的函数。这是该图的代码:
ggplot(data2, aes(x = x)) +
geom_histogram(aes(y = ..density..), bins = 15) +
geom_line(aes(x = x, y = dmixpois(data2$x, mu = 9, sd = sqrt(41))))
Run Code Online (Sandbox Code Playgroud)
显然,密度函数是错误的。据我所知,混合泊松分布的均值是单个分布均值的线性组合,方差为 Elambda + Varlambda。在图中,我只使用了方差项,但如果添加 lambda 的期望值,密度会变得更加陡峭。计算有什么问题?
您模拟的“混合泊松”与 中的混合泊松模型不同spatstat,它只是假设泊松分布本身的 lambda 是正态分布的随机变量。来自文档:
\n\n实际上,泊松均值参数 lambda 通过设置 lambda = invlink(Z) 进行随机化,其中 Z 具有高斯 N(\xce\xbc,\xcf\x83\xc2\xb2) 分布。
\n
因此,它不会模拟两个独立泊松分布的混合。
\n看起来您正在模拟的是零膨胀泊松分布,也就是说,对于任何给定的观察,都有可能获得零计数或泊松分布计数的分布。包中有专门dzipois针对此的内容VGAM。
另请记住,泊松分布是离散概率分布,因此您无法使用连续线正确显示它,而只能使用整数值处的点或尖峰。
\n如果您想绘制与您的模拟相匹配的分布,您可以尝试以下操作:
\nset.seed(1) # To make the example reproducible\n\ndata2 <- data.frame(x = c(rpois(n = 50, lambda = 0), \n rpois(n = 450, lambda = 10)))\n\n\nggplot(data2) +\n geom_histogram(aes(x = x, y = ..density..), breaks = 0:21 - 0.5) +\n geom_point(data = data.frame(x =0:20, y = VGAM::dzipois(0:20, 10, 1/10)),\n aes(x, y))\nRun Code Online (Sandbox Code Playgroud)\n\n