我是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
分布中?第二个问题是为什么我不能将Binomial
与fit
或Distrbutions
中的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)