繁体   English   中英

混合泊松分布:R 中的均值和方差

[英]Mixture Poisson distribution: mean and variance in R

所以,我试图模拟混合泊松分布:

data2 <- data.frame(x = c(rpois(n = 50, lambda = 0), rpois(n = 450, lambda = 10)))

然后在其上绘制直方图和密度函数,对于分布函数,我使用了spatstat包中的函数dmixpois 这是情节的代码:

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))))

这是情节: 在此处输入图像描述

显然,密度函数是错误的。 据我所知,混合泊松分布的均值是单一分布均值的线性组合,方差为 Eλ + Varλ。 在图中我只使用了方差项,但如果我添加 lambda 的期望值,我会得到更加陡峭的密度。 计算有什么问题?

您正在模拟的“混合泊松”与spatstat中的混合泊松模型不同,后者只是假设泊松分布的 lambda 本身是一个正态分布的随机变量。 从文档:

实际上,泊松均值参数 lambda 通过设置 lambda = invlink(Z) 随机化,其中 Z 具有高斯 N(μ,σ²) 分布。

因此,它不会模拟两个独立泊松分布的混合。

看起来您正在模拟的是零膨胀泊松分布,也就是说,对于任何给定的观察,有可能获得零计数泊松分布计数的分布。 VGAM包中有一个特定的dzipois

还要记住,泊松分布是一个离散的概率分布,所以你不能用一条连续的线正确地显示它,而只能用整数值处的点或尖峰来表示。

如果要绘制与模拟匹配的分布,可以尝试以下操作:

set.seed(1) # To make the example reproducible

data2 <- data.frame(x = c(rpois(n = 50, lambda = 0), 
                          rpois(n = 450, lambda = 10)))


ggplot(data2) +
  geom_histogram(aes(x = x, y = ..density..), breaks = 0:21 - 0.5) +
  geom_point(data = data.frame(x =0:20, y = VGAM::dzipois(0:20, 10, 1/10)),
             aes(x, y))

在此处输入图像描述

首先, lambda = 0的泊松分布是退化的并且总是恒定为零:

rpois(10, lambda = 0)
[1] 0 0 0 0 0 0 0 0 0 0

这就是为什么您在x = 0处出现尖峰的原因。

其次,泊松分布是离散的,因此没有密度(或 pdf)。 相反,您可以在直方图中绘制相对频率(就像您所做的那样)来估计X = x的概率。

混合分布的平均值只是基础分布的加权平均值。 在您的情况下,基础分布的权重为 10% 和 90%,因此 E[X] = 0.1 E[X_1] + 0.9 E[X_2] = 0,9

混合分布的方差由 Var(X) = Var(\Lambda) + E[Lambda] 给出

所以一切都正常工作:

set.seed(1)

df <- data.frame(x = c(rpois(50, 1), rpois(450, 9))) 

mean(df$x)
sd(df$x)
var(df$x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM