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图有很大的差异。
任何反馈意见都将受到高度赞赏。谢谢!
答案 0 :(得分:1)
有几件事:
您必须跳过第一行(如果确实是x y
)。
您必须使用正确的功能(pdf而不是CDF,请参阅http://en.wikipedia.org/wiki/Weibull_distribution,就像您在https://stackoverflow.com/q/20336051/2604213中所做的那样)
您必须使用其他缩放参数,因为您的数据未规范化
您必须为拟合选择足够的初始值。
以下工作正常:
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 :(得分:0)
如果那是你提供给gnuplot的实际命令,那么它将无效,因为你还没有定义f(x)。