适合错误的数据
最多可以有 12 个自变量,总有 1 个因变量,可以安装任意数量的参数。可选地,可以输入误差估计以加权数据点。 (T. Williams,C。Kelley - gnuplot 5.0,交互式绘图程序 )
如果你有一个数据集,并且想要在命令非常简单和自然的情况下适合:
fit f(x) "data_set.dat" using 1:2 via par1, par2, par3
而 f(x)
也可以是 f(x, y)
。如果你还有数据错误估计,只需在修饰符选项中添加 {y | xy | z}errors
({ | }
表示可能的选项) (请参阅语法) 。例如
fit f(x) "data_set.dat" using 1:2:3 yerrors via par1, par2, par3
其中 {y | xy | z}errors
选项分别需要 1(y
),2(xy
),1(z
)列来指定误差估计的值。
指数拟合文件的 xyerrors
在确定残差平方,WSSR 或 chisquare 的加权和时,使用数据误差估计来计算每个数据点的相对权重。它们可以影响参数估计,因为它们确定每个数据点与拟合函数的偏差对最终值的影响程度。如果提供了准确的数据误差估计,则一些拟合输出信息(包括参数误差估计)更有意义。( Ibidem )
我们将采用由 4 列组成的样本数据集 measured.dat
:x 轴坐标(Temperature (K)
),y 轴坐标(Pressure (kPa)
),x 误差估计(T_err (K)
)和 y 误差估计(P_err (kPa)
) )。
#### 'measured.dat' ####
### Dependence of boiling water from Temperature and Pressure
##Temperature (K) - Pressure (kPa) - T_err (K) - P_err (kPa)
368.5 73.332 0.66 1.5
364.2 62.668 0.66 1.0
359.2 52.004 0.66 0.8
354.5 44.006 0.66 0.7
348.7 34.675 0.66 1.2
343.7 28.010 0.66 1.6
338.7 22.678 0.66 1.2
334.2 17.346 0.66 1.5
329.0 14.680 0.66 1.6
324.0 10.681 0.66 1.2
319.1 8.015 0.66 0.8
314.6 6.682 0.66 1.0
308.7 5.349 0.66 1.5
现在,只需构建函数的原型,理论上应该接近我们的数据。在这种情况下:
Z = 0.001
f(x) = W * exp(x * Z)
我们初始化参数 Z
,因为否则评估指数函数 exp(x * Z)
会产生巨大的值,这导致 Marquardt-Levenberg 拟合算法中的(浮点)无穷大和 NaN,通常你不需要初始化变量 - 看看在这里 ,如果你想了解更多关于 Marquardt-Levenberg 的信息。
现在是时候拟合数据了!
fit f(x) "measured.dat" u 1:2:3:4 xyerrors via W, Z
结果看起来像
After 360 iterations the fit converged.
final sum of squares of residuals : 10.4163
rel. change during last iteration : -5.83931e-07
degrees of freedom (FIT_NDF) : 11
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 0.973105
variance of residuals (reduced chisquare) = WSSR/ndf : 0.946933
p-value of the Chisq distribution (FIT_P) : 0.493377
Final set of parameters Asymptotic Standard Error
======================= ==========================
W = 1.13381e-05 +/- 4.249e-06 (37.47%)
Z = 0.0426853 +/- 0.001047 (2.453%)
correlation matrix of the fit parameters:
W Z
W 1.000
Z -0.999 1.000
现在 W
和 Z
充满了所需的参数和误差估计。
下面的代码生成以下图表。
set term pos col
set out 'PvsT.ps'
set grid
set key center
set xlabel 'T (K)'
set ylabel 'P (kPa)'
Z = 0.001
f(x) = W * exp(x * Z)
fit f(x) "measured.dat" u 1:2:3:4 xyerrors via W, Z
p [305:] 'measured.dat' u 1:2:3:4 ps 1.3 pt 2 t 'Data' w xyerrorbars,\
f(x) t 'Fit'
**** 使用 measured.dat
的拟合绘图使用命令 with xyerrorbars
将显示 x 和 y 上的误差估计值。set grid
将在主要抽动上放置一个虚线。
在错误估计不可用或不重要的情况下,也可以在没有 {y | xy | z}errors
拟合选项的情况下拟合数据:
fit f(x) "measured.dat" u 1:2 via W, Z
在这种情况下,还必须避免使用 xyerrorbars
。