使用 'filledcurves' 和拟合数据

Using 'filledcurves' with fitted data

我正在使用 'fit' 拟合一些数据,获取 f(x) 并将其绘制得很好。但是,除了数据点和拟合曲线之外,我还想在图中添加一个置信区间,因此我需要在 f(x)-stddev_y 和 f(x)+[=20= 之间添加一个“条纹” ].

我可以把边界 f(x)-stddev_y 和 f(x)+stddev_y 写成 table,像这样

set datafile separator ';'
f(x) = a*x + b
fit f(x) '0706-2007.csv' using 7:8 via a,b
stddev_y = sqrt(FIT_WSSR / (FIT_NDF + 1 ))
set table "1.dat"
plot [10:80] f(x)-sqrt(FIT_WSSR / (FIT_NDF + 1 ))
set table "2.dat"
plot [10:80] f(x)+sqrt(FIT_WSSR / (FIT_NDF + 1 ))
unset table
plot [10:80] '0706-2007.csv' using 7:8 not with points pt 7 ps 1,f(x) not with lines,\
"< paste 1.dat 2.dat | awk '{print \";\"\";\";}' " using 1:2:3 with filledcurves title sprintf("σ = %.1f",sqrt(FIT_WSSR/(FIT_NDF+1)))

但看起来有点复杂。有没有更直接的方法?

如果我对你的理解是正确的,你想要填充被拟合的不确定性所覆盖的区域。在线性拟合的简单情况下,这确实可以通过恒定的移位因子轻松完成。可以使用特殊文件名 '+'(有关详细信息,请参阅 special-filename 上的手册)。

set datafile separator ';'
f(x) = a*x + b
fit f(x) '0706-2007.csv' using 7:8 via a,b
stddev_y = sqrt(FIT_WSSR / (FIT_NDF + 1 ))
plot '+' using ():(f()-stddev_y):(f()+stddev_y) with filledcurves

如果你碰巧有一个更复杂的拟合函数,你需要更仔细地考虑最小值和最大值的表达式是什么。为此,set fit errorvariables 可能会有用,它将 a, b 的拟合误差保存为 a_err, b_err