代码之家  ›  专栏  ›  技术社区  ›  sam

用Scipy在Python中将威布尔分布转换为直线

  •  0
  • sam  · 技术社区  · 7 年前

    威布尔分布的CDF为

    CDF(x) = 1 − exp[−(x / λ)^k]
    

    CCDF和我的方法:

    CCDF(x) = 1 - CDF(x)
    CCDF(x) = 1 - (1 − exp[−(x / λ)^k])
    CCDF(x) = exp[−(x / λ)^k]
    

    假设scale/k的以下值,取自然对数ln:

    k = 1, 
    
    ln(CCDF) = ln(exp[−(x / λ)^k])
    ln(CCDF) = -xλ
    

    这会产生一条带斜率的直线-。

    代码:

    x3 = np.linspace(1,15, 1000)
    weibull_cdf = scipy.stats.weibull_min.cdf(x3, c = 1, scale = 1)
    weibull_ccdf = (1 - weibull_cdf)
    weibull_ccdf = np.log(weibull_ccdf)
    

    这个实现可靠吗?改变比例使比例/k=2会改变实现吗?

    0 回复  |  直到 7 年前
    推荐文章