24小时热门版块排行榜    

查看: 1364  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

Ronny_chou

木虫 (正式写手)

[求助] Origin自定义模拟与matlab中cftool工具箱拟合结果比较 已有1人参与

P=[0.5070 1.318 2.772 4.338 6.241 7.839 9.849 14.66 19.35 24.56 29.93  34.13 39.04  46.20] ;
n=[0.4429 1.085 1.901 2.533 3.162 3.697 4.209 5.052 6.043 6.754 7.489 8.279 9.184 10.16];
想要拟合成曲线f(x) = nmax*(b*x)^(1/k)/(1+(b*x)^(1/k)) 与f(x) = nmax*x/(1+(a*x)^k)^(1/k) 的形式,然后我
通过Origin中的自定义曲线拟合与matlab中cftool工具箱模拟结果,比较如下:
(1)  matlab中cftool工具箱模拟结果
1.1. General model:
     f(x) = nmax*(b*x)^(1/k)/(1+(b*x)^(1/k))
Coefficients (with 95% confidence bounds):
       b =   0.0001122  (-0.001508, 0.001732)
       k =       1.658  (1.348, 1.968)
       nmax =       248.9  (-1699, 2197)

Goodness of fit:
  SSE: 0.3045
  R-square: 0.9975
  Adjusted R-square: 0.9971
  RMSE: 0.1664

1.2 General model:
    General model:
     f(x) = nmax*a*x/(1+(a*x)^k)^(1/k)
Coefficients (with 95% confidence bounds):
       a =    0.001947  (-0.01345, 0.01735)
       k =      0.1019  (-0.1258, 0.3297)
       nmax =   3.203e+04  (-5.908e+05, 6.549e+05)

Goodness of fit:
  SSE: 0.3006
  R-square: 0.9976
  Adjusted R-square: 0.9971
  RMSE: 0.1653

但是用origin模拟结果如下:
(1)     f(x) = nmax*(b*x)^(1/k)/(1+(b*x)^(1/k)) 模拟结果

Origin自定义模拟与matlab中cftool工具箱拟合结果比较

(2) f(x) = nmax*x/(1+(a*x)^k)^(1/k) 模拟结果

Origin自定义模拟与matlab中cftool工具箱拟合结果比较-1

用两者所模拟出来的nmax是有区别的,而nmax在我这里是有物理意义的,因此在收敛时不管用什么方法所模拟出来的结果应该是一样的。朋友们帮忙看看?我发现如果曲线拟合收敛比较困难时,调节初始化参数会对结果影响比较大。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : simulation2.jpg
  • 2015-09-23 11:32:52, 666.02 K
  • 附件 2 : simulation2.jpg
  • 2015-09-23 11:34:19, 666.02 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Ronny_chou

木虫 (正式写手)

引用回帖:
2楼: Originally posted by dingd at 2015-09-23 22:21:18
1:
第一个公式:y = nmax*(b*x)^(1/k)/(1+(b*x)^(1/k)),不能简化下吗,完全等同于:

y = nmax/(1+(b*x)^k);,看着都清爽些。直接拟合这个公式的话,目标函数(SSE)基本一样但nmax和b不稳定:
1)
均方差(R ...

谢谢,我想请问下用1stOpt求解出来的是没有设初始值的,然后求解出来的结果稳定唯一怎么理解?因为用matlab用您简化的那个函数一开始是收敛的,当我改变初始值时就会出现不一样的结果,即使最后通过固定某一个值达到收敛,但跟1stOpt结果相差较大,那究竟哪一个具有说服力?此外1stOpt中能够将几个系数都限制为大于零么?谢谢啦~
3楼2015-09-24 10:32:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
Ronny_chou: 金币+20, ★★★★★最佳答案 2015-10-29 10:03:09
1:
第一个公式:y = nmax*(b*x)^(1/k)/(1+(b*x)^(1/k)),不能简化下吗,完全等同于:

y = nmax/(1+(b*x)^k);,看着都清爽些。直接拟合这个公式的话,目标函数(SSE)基本一样但nmax和b不稳定:
1)
均方差(RMSE):0.146688964176323
残差平方和(SSE):0.301247130955714
相关系数(R): 0.998801066757962
相关系数之平方(R^2): 0.997603570956843
确定系数(DC): 0.997545478102313
卡方系数(Chi-Square): 0.085846619465631
F统计(F-Statistic): 2240.76224587093

参数        最佳估算
----------        -------------
b        6.38790682352766E-17
nmax        3715236827.67985
k        -0.589760207223845

2)
均方差(RMSE):0.146688964157574
残差平方和(SSE):0.301247130878707
相关系数(R): 0.998801066740756
相关系数之平方(R^2): 0.997603570922471
确定系数(DC): 0.997545478102941
卡方系数(Chi-Square): 0.0858466176890851
F统计(F-Statistic): 2240.76224644373

参数        最佳估算
----------        -------------
b        2.37230022879993E-20
nmax        391719737466.736
k        -0.589760208502794

应该是方程的形式造成这种结局,如果不考虑参数物理意义,其实公式:y = nmax/(1+(b*x)^k); --》y = nmax/(1+b^k*x^k); -->y = nmax/(1+b1*x^k);

此时稳定唯一:
均方差(RMSE):0.146648461643796
残差平方和(SSE):0.301080798234885
相关系数(R): 0.998804382533961
相关系数之平方(R^2): 0.997610194569047
确定系数(DC): 0.997546833359388
卡方系数(Chi-Square): 0.0881571807051252
F统计(F-Statistic): 2242.00015969098

参数        最佳估算
----------        -------------
nmax        -863.166782962704
b        -823.26708610708
k        -0.586003926097037

2:第二个式子: y = nmax*a*x/(1+(a*x)^k)^(1/k)

1stOpt求解稳定唯一,Matlab误差太大,Origin也有差距:

均方差(RMSE):0.144604300178649
残差平方和(SSE):0.292745650822194
相关系数(R): 0.998819337279252
相关系数之平方(R^2): 0.997640068522964
确定系数(DC): 0.997614747041354
卡方系数(Chi-Square): 0.06651177594336
F统计(F-Statistic): 2305.83510233767

参数        最佳估算
----------        -------------
nmax        185924116.646796
a        5.71405015369486E-5
k        0.0511661433683439
2楼2015-09-23 22:21:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

引用回帖:
3楼: Originally posted by Ronny_chou at 2015-09-24 10:32:53
谢谢,我想请问下用1stOpt求解出来的是没有设初始值的,然后求解出来的结果稳定唯一怎么理解?因为用matlab用您简化的那个函数一开始是收敛的,当我改变初始值时就会出现不一样的结果,即使最后通过固定某一个值达 ...

论优化拟合,Matlab和Origin都无法与1stOpt相比。在1stOpt中,参数范围限制也是很容易的。
4楼2015-09-24 14:02:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Ronny_chou

木虫 (正式写手)

引用回帖:
4楼: Originally posted by dingd at 2015-09-24 14:02:21
论优化拟合,Matlab和Origin都无法与1stOpt相比。在1stOpt中,参数范围限制也是很容易的。...

好的,谢谢,我再找1stOpt相关文档看看~
5楼2015-09-24 15:26:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见