我有一个数据集,观测值范围很广(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
我有结果输出的图像,但是由于这是一个新帐户,因此无法发布。如果有人知道发布图像的另一种方法,我很乐意能够跟进。
提前感谢。
您的代码会引发一些警告,因为您将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)