[已解决] 数据拟合Curve fitting Tool设置参数界限导致精度下降

[复制链接]
空空是不空空 发表于 2022-6-18 21:20:52
本帖最后由 空空是不空空 于 2022-6-19 08:44 编辑

x=
1426.61084568306        1557.34510513090        1702.94864803137        1867.09692724308        2010.00412126521        2154.01362132604        2314.29471571415        2490.21062292600        2647.41860049626        2804.96511308839        2926.42778065750        3104.25742218513        3281.28436653587        3441.56558095757        3622.14070500265        3799.82681375898        3995.21579576998        4171.79140070454        4359.79665543550        4501.89866256511
y=
0.00110132676234799        0.00110278644102936        0.00106024972376629        0.00106197677917478        0.00103646965074234        0.00100962727705056        0.000982613106536824        0.000964352457523288        0.000948496151450424        0.000920634239097866        0.000917279438504015        0.000920965806573972        0.000908228805806111        0.000894623122504436        0.000887950313763300        0.000887456894569732        0.000874354541901629        0.000861576181405633        0.000863336531947576        0.000857042266151787

用matlab自带的app-Curve Fitting Tool拟合方程

已知参数b∈(0,1),a,b>0一开始我并没有设置参数上下界,拟合精度是比较高的,设置以后精度略有下降,这是什么原因导致的呢?
未设置边界时,a,b,c∈(-∞,+∞)如文末图1

未设置参数时

未设置参数时

  1. General model:
  2.      f(x) = 1/(a*230*x^b)+c
  3. Coefficients (with 95% confidence bounds):
  4.        a =     0.05163  (-0.09379, 0.197)
  5.        b =       0.705  (0.2632, 1.147)
  6.        c =   0.0006283  (0.0004165, 0.00084)

  7. Goodness of fit:
  8.   SSE: 2.519e-09
  9.   R-square: 0.9803
  10.   Adjusted R-square: 0.978
  11.   RMSE: 1.217e-05
复制代码
设置边界后,a,c∈(0,+∞),b∈(0,1)就不收敛了

设置参数后就不收敛了

设置参数后就不收敛了


事实上上面的算法都是随便选的,只能选这个,别的不收敛。。。而且c只能设置成(-inf,inf),要是设置成(0,inf)的话就是一条直线,不知道为何。

疑问:为什么设置参数范围后参数会发生改变,甚至不收敛?我还应该设置参数范围吗?如果设置应该设置多大?



最佳答案


shihe 发表于 2022-6-20 15:23:29
最小二乘法拟合的目标函数是SSE(残差平方和),该值越小越好。
Trust-Region、Levenberg-Marquardt这两个算法都非常依赖初值赋予的好坏,不容易得到稳定唯一解

6 条回复


shihe 发表于 2022-6-19 00:00:52
想得到帮助就应该尽量把代码及数据给全了

空空是不空空 发表于 2022-6-19 08:46:00
shihe 发表于 2022-6-19 00:00
想得到帮助就应该尽量把代码及数据给全了

感谢提醒,第一次不太会用,现在代码上传好了,只有两组数据x,y,没有其他代码。我只用了APP做的拟合曲线,和代码是完全一样的。

shihe 发表于 2022-6-19 10:36:57
初值的原因,和范围设定无关吧。
搂主得到结果都不是最优解吧,下面才是唯一稳定正解
  1. Sum Squared Error (SSE): 2.08948016096837E-9
  2. Root of Mean Square Error (RMSE): 1.02212527631606E-5
  3. Correlation Coef. (R): 0.991810506900267
  4. R-Square: 0.983688081597764

  5. Parameter        Best Estimate               Std. Deviation              Confidence Bounds[95%]
  6. ---------        -------------               --------------              --------------------------------
  7. a                0.10388622931026            0.125537826926996           [-0.160975433547659, 0.36874789216818]
  8. b                0.598899966696044           0.196959110764026           [0.183352566609905, 1.01444736678218]
  9. c                0.000580246628823309        0.000126297121400348        [0.00031378299465735, 0.000846710262989268]
复制代码

空空是不空空 发表于 2022-6-20 09:22:23
shihe 发表于 2022-6-19 10:36
初值的原因,和范围设定无关吧。
搂主得到结果都不是最优解吧,下面才是唯一稳定正解
...

算法里有两个选项,分别是Trust-Region、Levenberg-Marquardt,这两个得出的结果略有差别,您所说的稳定与否是如何确定的?或者说我该如何评价这两个解呢?       SSE、RMSE、R-sqare有大有小。   还有鲁棒性那两个选项:LAR、Bisquare,需不需要我选呢?

shihe 发表于 2022-6-20 15:23:29
最小二乘法拟合的目标函数是SSE(残差平方和),该值越小越好。
Trust-Region、Levenberg-Marquardt这两个算法都非常依赖初值赋予的好坏,不容易得到稳定唯一解
回复此楼

空空是不空空 发表于 2022-6-20 20:22:12
shihe 发表于 2022-6-20 15:23
最小二乘法拟合的目标函数是SSE(残差平方和),该值越小越好。
Trust-Region、Levenberg-Marquardt这两个 ...

请问有没有相关资料可供参考呢?您有没有相关书籍推荐呢?这个问题我觉得很有意思,想深入了解一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表