You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Distributions.jl的fit_mle拟合威布尔分布遇DomainError报错求助

解决Distributions.jl拟合威布尔分布的DomainError问题

问题原因

报错Weibull: the condition α > zero(α) is not satisfied本质是威布尔分布的形状参数α必须严格大于0,拟合过程中出现违反该条件的情况,最常见的诱因是:

  • 输入数据中包含非正值(0或负数),威布尔分布的支撑集仅为正实数,非正值会导致MLE拟合时出现数值异常。

解决步骤

  1. 检查数据中的非正值
    先验证数据是否存在不符合要求的元素:

    any(x -> x ≤ 0, nice[:,1])  # 返回true则说明存在非正值
    # 也可以查看具体的非正值位置
    findall(x -> x ≤ 0, nice[:,1])
    
  2. 过滤或修正数据
    移除所有非正值(推荐,符合威布尔分布的定义):

    filtered_data = filter(x -> x > 0, nice[:,1])
    

    如果0是测量精度导致的极小值,也可以用极小正数替代:

    corrected_data = map(x -> x ≤ 0 ? 1e-8 : x, nice[:,1])
    
  3. 重新执行拟合
    使用处理后的数据集重新拟合:

    fit_mle(Weibull, filtered_data)
    

额外说明

威布尔分布常用于描述失效时间、寿命数据等场景,这类数据天然应为正实数。如果数据中存在大量非正值,建议先确认数据采集或预处理环节是否存在错误。

内容的提问来源于stack exchange,提问作者Ethan Leonard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:45:05