使用 fitdistrplus 拟合 Gumbel 分布
Fitting a Gumbel distribution with fitdistrplus
我正在尝试重现 this answer 中的代码,但是我在这样做时遇到了问题。我正在使用包 VGAM
和 fitdistrplus
中的 gumbel 发行版。
做的时候出现问题:
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
、rgumbel
和 qgumbel
由 VGAM
正确提供。
然而,该包还提供了一个名为 gumbel
的函数,具有不同的语法。这可能会导致问题吗?
编辑:是的,它确实导致了问题:使用包 FAdist
代替工作得很好。
开始=列表(mu=R,s=R)
R=你的参数
这是因为 fitdistr 包不支持 gumbel 分发。
作为参考,来自评论中的 package vignette 链接:
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))
我正在尝试重现 this answer 中的代码,但是我在这样做时遇到了问题。我正在使用包 VGAM
和 fitdistrplus
中的 gumbel 发行版。
做的时候出现问题:
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
、rgumbel
和 qgumbel
由 VGAM
正确提供。
然而,该包还提供了一个名为 gumbel
的函数,具有不同的语法。这可能会导致问题吗?
编辑:是的,它确实导致了问题:使用包 FAdist
代替工作得很好。
开始=列表(mu=R,s=R) R=你的参数
这是因为 fitdistr 包不支持 gumbel 分发。
作为参考,来自评论中的 package vignette 链接:
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))