【问题标题】:Error in Weibull distributionWeibull 分布中的错误
【发布时间】:2013-12-20 00:28:11
【问题描述】:

file.data 具有以下值以适应 Weibull 分布,

x       y 
2.53    0.00
0.70    0.99
0.60    2.45
0.49    5.36
0.40    9.31
0.31    18.53
0.22    30.24
0.11    42.23

根据 Weibull 分布函数f(x)=1.0-exp(-lambda*x**n),它给出了错误:

fit f(x) 'data.dat' via lambda, n

最后绘制的 f(x) 和 xy 图有很大的差异。

我们将不胜感激任何反馈。谢谢!

【问题讨论】:

    标签: plot gnuplot weibull


    【解决方案1】:

    几件事:

    1. 你必须跳过第一行(如果真的是x y)。

    2. 您必须使用正确的函数(pdf 而不是 CDF,参见 http://en.wikipedia.org/wiki/Weibull_distribution,就像您在 https://stackoverflow.com/q/20336051/2604213 中所做的那样)

    3. 您必须使用额外的缩放参数,因为您的数据未标准化

    4. 您必须为拟合选择足够的初始值。

    以下工作正常:

    f(x) = (x < 0 ? 0 : a*(x/lambda)**(n-1)*exp(-(x/lambda)**n))
    n = 0.5
    a = 100
    lambda = 0.15
    fit f(x) 'data.dat' every ::1 via lambda, n, a
    
    set encoding utf8
    plot f(x) title sprintf('λ = %.2f, n = %.2f', lambda, n), 'data.dat' every ::1
    

    这给了(4.6.4):

    【讨论】:

    • 1.我的文件有多个列,但 {fit f(x) 'data.dat' u 4:($7) via lambda, n, a} 不起作用,2. 感谢链接,3. 你是如何得出附加参数 a = 100?和 4。你是如何正确猜测 n、a 和 lambda 的?非常感谢!
    • 你是怎么做“一半”pdf的?我总是有“完整的钟形”@Christoph
    • 我使用了另一个参数a,因为你的数据没有标准化。我刚刚玩弄了alambdan,以便足够接近fit 可以工作。 Weibull 分布仅针对正的x 值定义。区分是在f(x) 内部完成的,带有检查(x &lt; 0 ? ... : ...)
    • 谢谢,但是你是怎么做半情节的?我总是有完整的钟形。 ://
    • 我完全使用了答案中显示的脚本,版本为 4.6.4。和set terminal pngcairo size 600,400; set output 'foo.png'
    【解决方案2】:

    如果这是你提供给 gnuplot 的实际命令,它不会起作用,因为你还没有定义 f(x)。

    【讨论】:

    • 哦,我实际上定义了 cdf 而不是克里斯托夫提到的 pdf。谢谢李。
    猜你喜欢
    • 2017-12-25
    • 2020-11-27
    • 2012-08-02
    • 2013-07-03
    • 1970-01-01
    • 2016-06-05
    • 2022-01-14
    • 2019-10-08
    • 2012-06-30
    相关资源
    最近更新 更多