[問題] 關於非線性迴歸問題已回收
要來麻煩版上大家了
最近在搞非線性迴歸 搞得一個頭兩個大
我是用 [beta,r,J] = nlinfit(X,y,fun,beta0) 去做
在nlinfit中要設定參數初始值beta0
想請問一下初始值要怎麼找才會迴歸才會成功
我都是自己設定初始值比如說beta0=[1 1 1]或beta0=[2 2 2]
可是有時會出現
Error using ==> nlinfit>checkFunVals
MODELFUN has returned Inf or NaN value
想請問板上高手初始值要怎麼找才是正確的
-------------------------------------------------
另外這是我在一個大陸網站找到的一個例子
它的問題如下:
對公式: y=2*(exp(a*b*X/2.)-1)/(a*x)中的参數 a,b 進行非線性迴歸,討論它的
收斂域。觀測次數43 ,迴歸時, ab可作為一個參數。
觀測值如下:
y=2060.,2140.,2240.,2340.,2440.,2490.,2550.,2630.,2720.,2800.,2880.
,2940.,3010.,3080.,3140.,3200.,3240.,3280.,3330.,3380.,3420.,3460.
,3510.,3550.,3600.,3640.,3680.,3720.,3750.,3800.,3850.,3900.,3940.
,3980.,4020.,4060.,4110.,4150.,4180.,4210.,4230.,4250.,4280.
t=0.3,0.4,0.5,0.6,0.7,… 4.2,4.3,4.4,4.5。
(從0.3始,間隔0.1,至4.5)
有一個人寫的code為:
function F = fun(x, xdata)
F= 2 * ( exp ( x(1) * x(2) * xdata ./ 2.0 ) - 1 ) ./ ( x(1) * xdata );
----------------------------------------------------------------------
xdata = [0.3:0.1:4.5];
ydata =
[2060.,2140.,2240.,2340.,2440.,2490.,2550.,2630.,2720.,2800.,2880.,2940.,3010.
,3080.,3140.,3200.,3240.,3280.,3330.,3380.,3420.,3460.,3510.,3550.,3600.,3640.
,3680.,3720.,3750.,3800.,3850.,3900.,3940.,3980.,4020.,4060.,4110.,4150.,4180.
,4210.,4230.,4250.,4280.];
x0 =[.2e-3, 2000]'; % Starting guess
[betafit,r,J]=nlinfit(xdata,ydata,'fun',x0)
我好奇的是
他怎麼能一開始就知道初始值x0 =[.2e-3, 2000]'
還有題目中講到觀察參數a,b的收斂域是怎麼去觀察的呢
文章很長真是抱歉= =
只是非線性迴歸研究了好久我還是不懂
只好來向板上高手求救了
麻煩大家了謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.224.67
※ 編輯: biggoodhead 來自: 60.250.224.67 (11/23 10:40)
推
11/23 13:28, , 1F
11/23 13:28, 1F
→
11/23 13:29, , 2F
11/23 13:29, 2F
→
11/24 15:52, , 3F
11/24 15:52, 3F
→
11/24 15:52, , 4F
11/24 15:52, 4F
→
11/24 15:54, , 5F
11/24 15:54, 5F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章