【问题标题】:Plotting mixtures of distributions with Julia用 Julia 绘制分布的混合图
【发布时间】:2021-04-10 00:22:35
【问题描述】:

我想用 Julia 绘制两个 1d 高斯分布的混合图。我不确定最好的方法是什么。我正在尝试使用 Distributions.jl 并专门针对两者

  • 使用d1 = Normal(0.0, 1.0)d2 = Normal(1.0, 1.8) 定义两个高斯分布
  • 使用以下方法定义混合物 MixtureModel(Normal[ Normal(-2.0, 1.2), Normal(0.0, 1.0), Normal(3.0, 2.5)], [0.1, 0.6, 0.3])

现在,对于第一次尝试,我不知道如何定义权重。因此,我的问题是关于如何继续简单地生成并抽取这种混合物的样本

我想绘制它们并使用这些样本来执行参数估计。

【问题讨论】:

    标签: julia distribution gaussian mixture-model


    【解决方案1】:

    我不确定我是否完全理解这个问题 - 你为什么要定义 d1d2

    要回答您的大胆问题:只需使用 rand() 从您的混合分布中提取:

    julia> using Distributions
    
    julia> mm = MixtureModel([Normal(-2.0, 1.2), Normal(), Normal(3.0, 2.5)], [0.1, 0.6, 0.3])
    MixtureModel{Normal{Float64}}(K = 3)
    components[1] (prior = 0.1000): Normal{Float64}(μ=-2.0, σ=1.2)
    components[2] (prior = 0.6000): Normal{Float64}(μ=0.0, σ=1.0)
    components[3] (prior = 0.3000): Normal{Float64}(μ=3.0, σ=2.5)
    
    julia> rand(mm)
    1.882130062980293
    

    请注意,这里我使用了Normal() 而不是Normal(0.0, 1.0),因为Normal() 已经返回标准正态分布。

    绘制:

    julia> using Plots
    
    julia> histogram(rand(mm, 100_000), normalize = true, xlabel = "Value", ylabel = "Frequency", label = "Mixture model")
    

    【讨论】:

    • 非常感谢。这很有帮助。我设法做的略有不同。
    猜你喜欢
    • 1970-01-01
    • 2017-02-18
    • 2015-01-03
    • 2021-09-19
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多