【问题标题】:Gnuplot Curve Fitting With Time-Offset具有时间偏移的 Gnuplot 曲线拟合
【发布时间】:2014-11-10 16:29:42
【问题描述】:

我在使用 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%,这要低得多。问题是:我可以这样做吗?我的带有时间偏移的新图是否仍代表原始曲线?还有其他想法吗?

提前感谢您的帮助:-)

【问题讨论】:

    标签: gnuplot offset curve-fitting


    【解决方案1】:

    在没有看到您的数据的情况下回答这个问题有点困难,但您的观察是典型的。

    问题是拟合本身的影响,甚至是您的公式。让我用一个示例数据集来解释它。 (好吧,这将成为题外话......)

    统计讲座

    数据遵循函数 f(x)=x 并且所有 y 值都被高斯随机数移动。此外,数据在 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 
    

    你可能会注意到三件事:

    1. b 的误差非常大!
    2. x=0 时误差范围很小,但随着 x 增大。它不应该是数据所在的最小位置,即 x=700 处吗?
    3. m 和 b 之间的相关性为 -0.997,接近最大(绝对)值 1。

    第三点可以在图中理解:如果增加斜率 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 的(非常大的)变化。也很高兴看到误差幅度缩小了很多。

    这是最后一张图,其中包含原始数据、第一个拟合函数和“移位数据的后移函数”:

    关于你的拟合函数:

    首先,有一个很大的相关性问题:bc 非常相关,因为它们共同定义了振荡的相位 幅度。使用另一个等效的功能会很有帮助:

    f(x)=a+N*sin(w*x+p)
    

    在这里,您将相位和幅度分开。你仍然可以从拟合结果中计算出你的 c,而且我猜它的误差要好得多。

    就像我的例子一样,如果数据远离 y 轴,w 的微小变化将对p 产生很大影响。所以,我建议你改变你的数据,让它的 cog 位于 y 轴上,以消除这个问题。

    允许这种转变吗?

    是的。您无需更改数据,只需更改坐标系即可获得更好的错误。此外,拟合函数应该描述数据,因此它应该在数据所在的范围内非常准确。在我的第一个图中,精度最高的是 y 轴,而不是数据所在的位置。

    重要

    您应该始终备注您应用了哪些技巧。否则,有人可能会检查你的结果并在没有技巧的情况下拟合数据,看到红色曲线而不是绿色曲线,并可能指责你作弊......

    【讨论】:

      【解决方案2】:

      能否做到这一点,取决于您拟合的曲线是否代表您正在研究的物理现象,是否与您需要遵守的物理模型一致。我的建议是你提供这些并在物理论坛(或化学、生物学等,取决于你的领域)中再次提出这个问题。

      【讨论】:

      • 虽然您也可以在这里告诉我们 - 如果我熟悉该主题,我可能会为您提供帮助。
      • 是CFD数据。该模型代表我的物理系统,但当然它只是模拟数据。没有可与之比较的测量数据,所以我必须在这里坚持我的 CFD 数据。因此无需在物理论坛上问这个问题。我所拥有的只是从 t=0.5024 开始的更大数据集的截取。
      • @Jan 但这并不能真正解决问题:您只是想获得一条尽可能接近结果的曲线(无论其形状如何),还是您正在建模的物理现象由一个特定的拟合函数描述,你需要适应那个吗?如果是第一个选项,那么就使用任何可行的方法,如果是第二个选项,那么你就会坚持你所拥有的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多