用Julia拟合二项分布的值

用Julia拟合二项分布的值,julia,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

我是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
,你会得到参数。因此,有两个问题首先是如何将上述数据拟合成
二项分布?第二个原因是为什么我不能将
二项式
拟合
分布中的
拟合

对于初学者,二项式分布通常是在整数上定义的,你给它一个浮点数组(并且
分布
也期望整数)。你的数据到底是什么意思?如果您对有限组非整数值上的二项分布感兴趣,我认为最好的替代方法是将您的数据映射到唯一的整数,并在其上拟合分布

其次,对于二项分布的大小参数(它是一个随机变量),在充分统计方面不存在极大似然估计。您必须将其传递给
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
...

啊,好吧,我不知道它只适用于整数,我现在就试试。在使用它们之前,你应该始终了解你的分布!二项式分布的原型是投掷同一枚硬币N次后的人头数之和。(看,我甚至把它和多项式分布混在一起。发生了。)
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)