一个相关的问题是"using fitdist from fitdistplus with binomial distribution
"。 __main__.Editor
是一个接受单变量数据并开始猜测参数的函数。为了拟合二项式和贝塔二项式的数据,虽然是单变量的,但也需要大小。如果每个数据的大小都是固定的,则上述链接具有所需的固定。但是,如果大小不同并且需要传递矢量,则我不确定如何获得正常运行的呼叫。
fitdistrplus::fitdist
是上述链接文章中提供的解决方案-也就是说,集群大小是已知的并且是固定的。对于opt_one
,我错误地指定了opt_one
(本质上是使N = 125的每个元素),并且这足够接近并且代码可以运行。但是,fix.arg=list(size=125)
中的群集大小实际上有所不同。我尝试在N
中指定它,并得到一个错误。任何想法都将不胜感激。
opt_two
哪个给:
library(fitdistrplus)
library(VGAM)
set.seed(123)
N <- 100 + rbinom(1000,25,0.9)
Y <- rbetabinom.ab(rep(1,length(N)), N, 1, 2)
head(cbind(Y,N))
opt_one <-
fitdist(data=Y,
distr=pbetabinom.ab,
fix.arg=list(size=125),
start=list(shape1=1,shape2=1)
)
opt_one
不错,因为> head(cbind(Y,N))
Y N
[1,] 67 123
[2,] 14 121
[3,] 15 123
[4,] 42 121
[5,] 86 120
[6,] 28 125
> opt_one <-
+ fitdist(data=Y,
+ distr=pbetabinom.ab,
+ fix.arg=list(size=125),
+ start=list(shape1=1,shape2=1)
+ )
Warning messages:
1: In fitdist(data = Y, distr = pbetabinom.ab, fix.arg = list(size = 125), :
The dbetabinom.ab function should return a zero-length vector when input has length zero
2: In fitdist(data = Y, distr = pbetabinom.ab, fix.arg = list(size = 125), :
The pbetabinom.ab function should return a zero-length vector when input has length zero
> opt_one
Fitting of the distribution ' betabinom.ab ' by maximum likelihood
Parameters:
estimate Std. Error
shape1 0.9694054 0.04132912
shape2 2.1337839 0.10108720
Fixed parameters:
value
size 125
和shape1
参数分别是1和2(如我们创建shape2
时所指定)。这是选项2:
Y
哪个出错:
opt_two <-
fitdist(data=Y,
distr=pbetabinom.ab,
fix.arg=list(size=N),
start=list(shape1=1,shape2=1)
)
首次发布后的尝试(感谢Dean Follmann)
我知道我可以编写自己的贝比系数可能性(> opt_two <-
+ fitdist(data=Y,
+ distr=pbetabinom.ab,
+ fix.arg=list(size=N),
+ start=list(shape1=1,shape2=1)
+ )
Error in checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, :
'fix.arg' must specify names which are arguments to 'distr'.
,如下所示),但是我真的很想使用具有opt_three
对象的工具,即拥有{{ 1}}。
fitdist
哪个给:
opt_two
也与Ben Bolker's answer using mle2相关。 fitdist解决方案仍然很大。
答案 0 :(得分:0)
请查看?fitdistrplus::fitdist()
帮助页面的示例4:
# (4) defining your own distribution functions, here for the Gumbel distribution
# for other distributions, see the CRAN task view
# dedicated to probability distributions
#
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))
summary(fitgumbel)
plot(fitgumbel)
然后-因为您实际上是RTM -受到启发和了解-用自己指定的N创建自己的[dpq]函数:
dbbspecifiedsize <- function(x, a, b) dbetabinom.ab(x, size=N, shape1=a, shape2=b)
pbbspecifiedsize <- function(q, a, b) pbetabinom.ab(q, size=N, shape1=a, shape2=b)
qbbspecifiedsize <- function(p, a, b) qbetabinom.ab(p, size=N, shape1=a, shape2=b)
opt_four <-
fitdist(data=Y,
distr="bbspecifiedsize",
start=list(a=1,b=1)
)
opt_four
给出:
> opt_four
Fitting of the distribution ' bbspecifiedsize ' by maximum likelihood
Parameters:
estimate Std. Error
a 0.9526875 0.04058396
b 2.0261339 0.09576709
与opt_three
的估算值非常相似,并且是fitdist
的对象。