以下是我正在处理的一种数据集:
data <- c(0, 1, 0, 11, 2, 0, 3, 0, 0, 2, 1, 3, 1, 0, 1, 0, 0, 0, 2, 3,
0, 0, 0, 8, 1, 1, 1, 0, 1, 1, 2, 7, 0, 0, 0, 5, 2, 3, 6, 1, 1,
5, 2, 9, 0, 0, 1, 21, 16, 2, 9, 6, 25, 2, 1, 12, 16, 14, 15,
15, 6, 1, 12, 12, 13, 5, 5, 6, 4, 7, 11, 8, 4, 5, 8, 3, 8, 4,
7, 4, 7, 2, 5, 6, 4, 5, 1, 0, 8, 5, 6, 8, 9, 8, 9, 7, 7, 9, 8,
9, 4, 4, 7, 13, 9, 13, 12, 10, 9, 8, 7, 11, 5, 5, 0, 1, 33, 4,
22, 19, 22, 9, 5, 4, 17, 7, 7, 4, 5, 3, 0, 0, 9, 3, 0, 0, 36,
40, 5, 4, 0, 11, 0, 7, 5, 25, 39, 26, 4, 20, 12, 4, 17, 3, 22,
12, 14, 8, 9, 11, 7, 11, 10, 9, 16, 6, 24, 8, 5, 6, 14, 3, 9,
4, 1, 20, 0, 1, 7, 9, 0, 12, 2, 29, 56, 16, 8, 28, 0, 19, 25,
35, 87, 56, 66, 60, 58, 14, 10, 12, 13, 13, 34, 26, 18, 13, 22,
13, 12, 15, 41, 11, 11, 11, 5, 6, 7, 8, 8, 17, 16, 12, 21, 38,
34, 10, 77, 41, 7, 12, 1, 16, 20, 8, 5, 2, 20, 7, 16, 12, 6,
10, 31, 12)
我使用fitdistrplus
包进行最大似然拟合分布。
同样的, gamlss
包定义了零膨胀泊松分布的概率密度函数和累积分布函数。
library(fitdistrplus)
library(gamlss)
以下是数据集的平均值和标准差。
mu=mean(data)
sigma=sd(data)
数据集的平均数为10.75,标准差为13.050。我尝试使用以下的fitdist函数来拟合零膨胀Poisson分布。
fit_zip = fitdist(data, 'ZIP', start = list(mu = mu, sigma = sigma))
一旦指定的函数被编译,编译器将抛出以下错误
Error in fitdist(data, "ZIP", start = list(mu = mu, sigma = sigma)) :
the function mle failed to estimate the parameters,
with the error code 100
很明显,mu和sigma的初始值存在问题。我不确定在什么依据下初始化起始值。
感激任何帮助。
help("zip")
。参数sigma
不是标准差。mean(data[data != 0])
和var(data[data != 0])
。你的数据不太可能来自于零膨胀泊松分布。fitdist
来处理这个分布。首先,fitdist
和你一样犯了一个错误,假设sigma
是标准差。这个问题可以解决。但是,当我使用模拟数据时,由于d/pZIP
函数对于不正确的输入表现不如预期,我会遇到错误。