4

我正在尝试从这个答案中重现代码,但是这样做有问题。我正在使用包中的 gumbel 发行版VGAMfitdistrplus. 这样做时会出现问题:

fit   = fitdist(data1, 'gumbel', start = list(location = 0, scale = 1))
Error in mledist(data, distname, start, fix.arg, ...) : 
  'start' must specify names which are arguments to 'distr'.

好像location而且scale不是 *gumbel 的论点。

dgumbel, pgumbel,rgumbelqgumbel由 正确VGAM。然而,该包还提供了一个名为 的函数gumbel,具有不同的语法。这可能会导致问题吗?

编辑:是的,它确实引起了问题:使用包FAdist代替工作得很好。

4

3 回答 3

4

作为参考,来自评论中链接的包小插图

library(fitdistrplus)
data(groundbeef)
serving <- groundbeef$serving
dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b))
pgumbel <- function(q, a, b) exp(-exp((a-q)/b))
qgumbel <- function(p, a, b) a-b*log(-log(p))
fitgumbel <- fitdist(serving, "gumbel", 
    start=list(a=10, b=10))

或使用以下功能VGAM

rm(dgumbel) ## get rid of previous definition
## hack behaviour of VGAM::pgumbel() a little bit
pgumbel <- function(x,...) {
  if (length(x)==0) numeric(0) else VGAM::pgumbel(x,...)
}
library(VGAM)
fitgumbel <- fitdist(serving, "gumbel", 
       start=list(location=10, scale=10))
于 2018-11-25T22:42:42.647 回答
-2

start=list(mu=R,s=R) R=你的参数

于 2016-12-26T19:30:07.023 回答
-2

这是因为 fitdistr 包不支持 gumbel 分发。

于 2017-08-06T20:03:32.333 回答