使用Julia将值拟合到二项式分布



我是Julia的新手,想了解如何将一些值拟合到二项式分布并获得它们的参数:

d = Distributions.fit_mle(Binomial, [1, 1.1, 1.2, 1.4, 2.0, 1.4, 1.3, 1.1, 1.2, 1.5, 2.0, 2.2, 2.6, 2.9, 3.2, 2.8, 2.5, 2.0, 1.6, 1.0])

当我运行此程序时,会出现以下错误:

suffstats is not implemented for (Binomial, Array{Float64,1}).

我知道,如果你运行其他发行版,比如Normal,你会得到参数。所以有两个问题,第一个问题是如何将上述数据拟合到Binomial分布中?第二个问题是为什么我不能将BinomialfitDistrbutions中的fit_mle一起使用?

对于启动器,二项式分布通常是在整数上定义的,您给它一个浮点数组(Distributions也需要整数(。你的数据是什么意思?如果你对有限的非整数值集上的二项式分布感兴趣,我认为最好的选择是将你的数据映射到唯一的整数,并将分布拟合在它们上。

其次,对于二项式分布的大小参数,不存在充分统计的MLE(它是一个仅在p上的指数族,而不是N(。您必须将其传递给fit_mle。我自己并没有想到这一点,而是通过观察suffstats各自的方法发现了这一点;例如:

julia> methods(suffstats)
...
[7] suffstats(::Type{#s29} where #s29<:Binomial, n::Integer, x::AbstractArray{T,N} where N) where T<:Integer in Distributions at /home/philipp/.julia/packages/Distributions/dTXqn/src/univariate/discrete/binomial.jl:195
...

结合两种要求:

julia> data = rand(Binomial(5, 0.2), 10)
10-element Array{Int64,1}:
2
0
1
1
0
0
2
1
1
1
julia> fit_mle(Binomial, 5, data)
Binomial{Float64}(n=5, p=0.18)

最新更新