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

scipy:我如何使用weibull_min.pdf?

  •  1
  • kilojoules  · 技术社区  · 6 年前

    我在找 scipy weibull_min pdf enter image description here enter image description here

    以下是我迄今为止所尝试的:

    import matplotlib.pyplot as plt
    from scipy.stats import weibull_max, uniform
    import numpy as np
    aoas = np.linspace(0, 8, 1000)
    speeds = np.linspace(1, 80, 1000)
    plt.fill_between(speeds, speeds * 0, weibull_max.pdf(speeds, 2.5, 30), facecolor='k')
    plt.ylabel('Probability Density')
    plt.savefig('speedDist.pdf')
    plt.clf()
    

    enter image description here

    威布尔极小 期望 pdf(x, c, loc=0, scale=1) 哪里 x 是分位数, c 是形状因子,并且 scale 是比例因子。但是,当我将代码更改为 weibull_max.pdf(speeds, 2.5, 0, 30)

    1 回复  |  直到 6 年前
        1
  •  2
  •   Warren Weckesser    6 年前

    代码中有两个问题。

    • weibull_min weibull_max 它们的分布不一样。你指的是 威布尔极小 weibull_-max 在代码中。要匹配显示的绘图,请使用 威布尔极小 .

    • 系统的参数 pdf (x, shape, loc, scale) . 你写的 pdf(speeds, 2.5, 30) loc pdf(speeds, 2.5, scale=30)

    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.stats import weibull_min
    
    
    speeds = np.linspace(0, 80, 1000)    
    p = weibull_min.pdf(speeds, 2.5, scale=30)
    
    plt.plot(speeds, p, 'b', linewidth=1)
    plt.fill_between(speeds, speeds * 0, p, facecolor='b', alpha=0.1)
    plt.ylabel('Probability Density')
    plt.show()
    

    它生成以下绘图:

    plot