如何解决使用Julia将值拟合为二项分布
我是Julia的新手,想了解如何使一些值适合二项式分布并获取其参数:
d = Distributions.fit_mle(Binomial,[1,1.1,1.2,1.4,2.0,1.3,1.5,2.2,2.6,2.9,3.2,2.8,2.5,1.6,1.0])
运行此命令时,出现以下错误:
suffstats is not implemented for (Binomial,Array{Float64,1}).
好吧,我知道您运行的其他发行版(例如Normal
)确实可以获取参数。因此,首先有两个问题:如何将上述数据拟合到Binomial
分布中?第二个原因是为什么我不能将Binomial
的{{1}}或fit
的{{1}}与fit_mle
一起使用?
解决方法
对于初学者来说,二项式分布通常是在整数上定义的,并且给了它一个浮点数数组(Distributions
也期望整数)。您的数据甚至意味着什么?如果您对有限的一组非整数值的二项式分布感兴趣,那么我认为最好的选择是将数据映射到唯一的整数并适合它们的分布。
第二,就二项式分布的大小参数(为exponential family only over p,not N)而言,就足够的统计数据而言,没有MLE。您必须将其传递给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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。