【问题标题】:R: Overlaying Poisson Distribution over a Histogram of DataR:在数据直方图上叠加泊松分布
【发布时间】:2020-08-02 15:34:09
【问题描述】:

我有一个数据集,其中观测值范围很广(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)

我在这里引用了这个问题,但不能产生相同的结果。 R: Overlay Poisson distribution over histogram of data

我有结果输出的图像,但由于这是一个新帐户,因此无法发布。如果有人知道另一种发布图片的方式,我很乐意跟进。

提前致谢。

【问题讨论】:

  • 您能否提供一小段数据的 sn-p(例如使用 dput())?

标签: r histogram distribution poisson


【解决方案1】:

您的代码会引发一些警告,因为您使用的是 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)

【讨论】: