【问题标题】:scipy.stats.lognorm.expect returning an odd resultscipy.stats.lognorm.expect 返回一个奇怪的结果
【发布时间】:2021-03-25 21:05:01
【问题描述】:

我正在尝试使用 scipy.stats.expect 获取对数正态随机变量的 E(x)。

使用 fit() 模块,shape、loc 和 scale 参数分别为

shape = 0.9577226550971423, loc=-1.1217451814333423, scale=0.744230342110942

期望值输出为

from scipy.stats import lognorm
scipy.stats.lognorm.expect(lambda x:1, args=(0.9577226550971423,), loc=-1.1217451814333423, scale=0.744230342110942, lb=0.1, ub=1.5)

输出:0.20809733881415318

但是,使用 pdf 图表手动计算时,该值更接近 0.5。下图:

你能解释一下我在哪里错了吗?

【问题讨论】:

  • 或许您也可以共享数据?对数正态分布的期望值对上下限非常敏感。也许,您应该只强制执行lb=0 并让上限变为无穷大。这样,它可以更好地对您的数据进行建模,并给出更接近 0.5(您期望的值)的期望值。你怎么看?

标签: scipy scipy.stats


【解决方案1】:

您是否尝试将 conditional=True 添加到函数 expect() 的 kwargs 中?
这不会有很大的不同,因为您的上限和下限相对接近对数正态分布的支持,但仍然会增加精度(请参阅Calculating conditional expectation with scipy.stats)。

另外,问题可能来自于一开始就不好的配件(请参阅Scipy: lognormal fitting

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多