我正在尝试估计适用于生态密度(即单位面积的生物量)数据的伽玛分布参数。我一直在使用 R 中 MASS 包中的 fitdistr() 命令进行最大似然估计。数据向量很大,但摘要统计信息如下:
Min. = 0; 1st Qu. = 87.67; Median = 199.5; Mean = 1255; Variance = 2.79E+07; 3rd Qu. = 385.6; Max. = 33880
我用于运行MLE过程的代码是:
gdist <- fitdistr(data, dgamma,
start=list(shape=1, scale=1/(mean(data))),lower=c(1,0.1))
R 给了我以下错误:
Error in optim(x = c(6.46791148085828, 4060.54750836902, 99.6201565968665, : non-finite finite-difference value [1]
其他遇到此类问题并在 stackoverflow 上寻求帮助的人似乎已经通过在代码中添加“lower=”参数和/或删除零来找到了解决方案。我发现如果删除零观察值,R将为拟合提供参数,但我一直认为伽马分布覆盖了0 <= x > inf 的范围(Forbes 等人,2011年。统计分布)?
我对伽马分布范围的印象是错误的吗?还是我在MLE方面存在其他问题(我是初学者)?