我在使用Gnuplot时遇到曲线拟合过程的问题。我的数据时间从0.5024开始。我想使用线性sin / cos组合来随时间拟合值M(M = a + bsin(wt)+ ccos(wt))。为了进一步处理,我只需要c值。 我的代码是
f(x)=a+b*sin(w*x)+c*cos(w*x)
fit f(x) "data.dat" using 1:2 via a,b,c,w
参数c的渐近标准误差为66%,看起来相当高。我怀疑它与事实有关,时间从0.5024而不是0开始。我当然能做什么
fit f(x) "data.dat" using ($1-0.5024):2 via a,b,c,w
具有约10%的渐近误差,这种方法更低。问题是:我可以这样做吗?具有时间偏移的新绘图是否仍然代表原始曲线?还有其他想法吗?
先谢谢你的帮助: - )
答案 0 :(得分:1)
在没有看到您的数据的情况下回答这个问题有点困难,但您的观察是典型的。
问题是适合本身,甚至是你的公式的影响。让我用示例数据集来解释它。 (好吧,这将变成非主流......)
数据遵循函数f(x)= x,并且所有y值已经被gassian随机数移位。另外,数据在x-dange [600:800]中。
您现在可以简单地应用线性拟合f(x)= m * x + b。根据Gauß的错误分布,错误为df(x)=sqrt((dm*x)²+(db)²)
。因此,您可以绘制数据,线性函数和误差范围f(x) +/- df(x)
结果如下:
参数:
m = 0.981822 +/- 0.1212 (12.34%)
b = 0.974375 +/- 85.13 (8737%)
相关矩阵:
m b
m 1.000
b -0.997 1.000
您可能会注意到三件事:
第三点可以在图中理解:如果增加斜率m,y偏移也会减小。这两个参数都是非常相关的,其中一个参数的错误会分配给另一个参数!
从统计数据中您可能知道,线性回归函数总是通过数据的重心(cog)。那么,让我们移动数据,使得cog是原点(它足以移动它以使cog在y轴上,但我这样做了)
结果:
m = 1.0465 +/- 0.1211 (11.57%)
b = -12.0611 +/- 7.027 (58.26%)
相关性:
m b
m 1.000
b -0.000 1.000
与第一个图相比,m的值和误差几乎相同,但是现在非常大的误差ob b要小得多。原因是m和b不再相关,因此(微小的)变化m不会给出b(非常大)的变化。很高兴看到错误边际缩小了很多。
这是包含原始数据,第一个拟合函数和“移位数据的后移函数”的最后一个图:
首先,存在一个很大的相关问题:b
和c
非常相关,因为它们共同定义了振荡的相位和幅度。使用另一个等效函数会有很大帮助:
f(x)=a+N*sin(w*x+p)
在这里,你有相位和幅度分开。你仍然可以从拟合结果中计算你的c,我猜,错误要好得多。
与我的示例中一样,如果数据远离y轴,w
的小变化将对p
产生重大影响。因此,我建议移动你的数据,使它的齿轮在y轴上几乎摆脱它。
是。您不会更改数据,只需更改坐标系即可获得更好的错误。此外,拟合函数应描述数据,因此它应该在数据范围内非常准确。在我的第一个图中,最高精度是在y轴,而不是数据。
你应该经常注意你应用了哪些技巧。否则,有些人可能会检查你的结果并且没有技巧来拟合数据,看到红色曲线而不是绿色曲线,并且可能会指责你作弊......
答案 1 :(得分:0)
您是否可以这样做取决于您所适合的曲线是否代表您正在研究的物理现象,并且与您需要遵守的物理模型一致。我的建议是你提供这些并在物理论坛(或化学,生物学等,取决于你的领域)再次提出这个问题。