【问题标题】:log-likelihood function generated by scipy.stats.rv_continuous.fitscipy.stats.rv_continuous.fit 生成的对数似然函数
【发布时间】:2020-01-22 23:41:06
【问题描述】:

方法scipy.stats.rv_continuous.fit 找到最大化对数似然函数的参数,该对数似然函数由输入数据和分布规范rv_continuous 确定。例如,这可能是normalgamma

scipy.stats.rv_continuous.fit 的文档没有解释如何生成对数似然函数,我想知道如何生成。我需要它,以便我可以根据拟合估计的参数(即最大值)计算对数似然值。

【问题讨论】:

    标签: python scipy statistics


    【解决方案1】:

    对数似然是在给定概率分布的情况下观察到一组给定观测值的概率的对数。您可以使用scipy.stats.rv_continuous.pdf(x,params) 访问scipy.stats.rv_continuous 成员在x 点的概率密度函数值。您将为数据的每个成员获取这些值的乘积,然后记录该值。例如:

    import numpy as np
    from scipy.stats import norm
    
    data = [1,2,3,4,5]
    m,s = norm.fit(data)
    log_likelihood = np.log(np.product(norm.pdf(data,m,s)))
    

    【讨论】:

    • 这个答案是正确的。另一个建议:如果对数求和而不是乘积的对数,您将获得数值上更稳定的性能。在代码中,执行:log_likelihood = np.sum(np.log(norm.pdf(data,m,s))) 而不是 log_likelihood = np.log(np.product(norm.pdf(data,m,s)))。这样做的原因是,将许多小数相乘会得到非常小的数。取对数,然后求和,使您进行计算的数字范围更易于管理。
    猜你喜欢
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多