R:在数据直方图上叠加泊松分布

R: Overlaying Poisson Distribution over a Histogram of Data

我有一个数据集,其中的观测值范围很广(10,000 到 21,000,000 左右)。我试图在这些数据上叠加泊松分布,但分布输出不正确。到目前为止,我已经尝试使用此代码:

dat <- read.csv('data.csv', TRUE, ',')

hist(dat,
     main = 'Global Sales of Games in 2010',
     xlab = 'Amount of Copies Sold',
     ylab = 'Counts',
     col = 'palegreen1',
     breaks = 100
)

lam = mean(dat)
t = seq(min(dat), max(dat), length.out = 10000)
lines(t, dpois(t, lambda = lam), col='red', lwd=3)

我也尝试过使用 rpois 从泊松分布生成数据,但仍然 运行 遇到同样的问题。

simulated = rpois(length(dat), lam)
simulated_lam = mean(simulated)
a = seq(min(simulated), max(simulated), length.out = 10000)
hist(simulated)
lines(a, dpois(a, lambda = simulated_lam), col='red', lwd=3)

我在这里引用了这个问题,但无法产生相同的结果。

我有结果输出的图片,但不能 post 因为这是一个新帐户。如果有人知道 post 图像的替代方法,我很乐意跟进。

提前致谢。

您的代码会抛出一些警告,因为您使用 dpois(t, lambda = lam)t 不是整数(您可以通过在控制台中键入 warnings() 来查看这些警告)。通过将 length.out = 10000 更改为 by = 1,您强制 t 仅包含整数,假设您的 dat 仅包含整数。

下面,我做了一个有效的例子(其中 dat 是我随机生成的)。请注意,我将 dpois() 调用乘以数据集大小以从密度变为计数。

dataset_size <- 100
dat <- rpois(dataset_size, lambda = 10)

hist(dat,
     main = 'Global Sales of Games in 2010',
     xlab = 'Amount of Copies Sold',
     ylab = 'Counts',
     col = 'palegreen1',
     breaks = 100
)

lam = mean(dat)
t = seq(min(dat), max(dat), by = 1)
lines(t, dpois(t, lambda = lam)*dataset_size, col='red', lwd=3)