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

问题描述 投票:1回答:1

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

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

提前感谢。

r histogram distribution poisson
1个回答
0
投票

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.