如何在 Julia Distributions.jl 中的 MixtureModel 中指定权重?

Amm*_*hed 2 statistics normal-distribution julia

在 Distributions.jl 中,我们可以指定混合模型的先验。但我们无法指定权重。例如,如果我想制作这样的混合物:

pdf(Normal(2, 3), x)*w1.+pdf(Normal(5, 10), x)*w2
Run Code Online (Sandbox Code Playgroud)

我无法真正指定权重。出于显而易见的原因,先验要求加起来必须等于 1。那么,有没有办法在 MixtureModel 中指定权重呢? 就像是:

MixtureModel(Normal[
        Normal(2, 3),
        Normal(5, 10)
        ], **weights=[w1, w2]**)
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 5

这在 Distributions.jl 文档中关于混合模型构造函数 \xe2\x80\x94 你想要参数的内容中有介绍prior。看

\n

https://juliastats.org/Distributions.jl/v0.14/mixture.html#Constructors-1

\n

这是他们的第一个示例的快速绘图。是[0.2, 0.5, 0.3]权重:

\n
julia> using Distributions, Plots\n\njulia> d = MixtureModel(Normal[\n          Normal(-2.0, 1.2),\n          Normal(0.0, 1.0),\n          Normal(3.0, 2.5)], [0.2, 0.5, 0.3])\nMixtureModel{Normal}(K = 3)\ncomponents[1] (prior = 0.2000): Normal{Float64}(\xce\xbc=-2.0, \xcf\x83=1.2)\ncomponents[2] (prior = 0.5000): Normal{Float64}(\xce\xbc=0.0, \xcf\x83=1.0)\ncomponents[3] (prior = 0.3000): Normal{Float64}(\xce\xbc=3.0, \xcf\x83=2.5)\n\n\njulia> x = -10:0.1:10\n-10.0:0.1:10.0\n\njulia> plot(x, pdf.(d, x), legend=nothing, xlabel="x", ylabel="pdf")\n
Run Code Online (Sandbox Code Playgroud)\n

哪个产生

\n

在此输入图像描述

\n