Re: [問題]不是多項式的回歸

看板MATLAB作者 (white)時間10年前 (2013/11/28 13:46), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《leoking0106 (white)》之銘言: : 現在我有一組xdata和一組ydata : 我想要用回歸的方式求出下式 : ydata=(1/(1+(a*xdata)^b))^((b-1)/b) : 的a和b : 因為不是多項是沒辦法用polyfit : 寫矩陣也沒辦法完全提出a和b做左除法 : 拜託版上的高手給我一點想法或告訴我甚麼指令可以做 : 感激不盡~ 我剛剛試了一下lsqcurvefit 這是我寫的code clear all clc x=[3.01;6.0154;19.558;27.392;39.999;49.565;60;80;100] y=[0.6967;0.689367;0.649;0.59923;0.45573;0.313833;0.17363;0.068367;0.0403] f=@(a,x)1./(1+(a(1).*x).^a(2)).^((a(2)-1)/a(2)); b=lsqcurvefit(f,[1,0.1],x,y) 我想請問一下我[1,0.1]那邊只要改變數字算出來的係數就會差很多 想請問一下各位高手為什麼會這樣 還有以我這個例子的x,y數字大小這邊應該設多少比較恰當呢? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.108

11/28 19:39, , 1F
因為 lsqcurvefit 它是 iterative method, 本就無法確保
11/28 19:39, 1F

11/28 19:40, , 2F
cost function 是否會收斂
11/28 19:40, 2F

11/28 19:46, , 3F
若想讓 [a,b] 估計結果較 smooth, 可以對 LSE 再加上
11/28 19:46, 3F

11/28 19:47, , 4F
regularization term
11/28 19:47, 4F

11/28 19:47, , 5F
ex: sigma[f(xi)-yi]^2 + |a|^2 + |b|^2
11/28 19:47, 5F

11/28 19:49, , 6F
或者先對 yi 數據取 log 再做 optimization
11/28 19:49, 6F

11/29 16:32, , 7F
雖然不知道之後還會不會出錯
11/29 16:32, 7F

11/29 16:33, , 8F
目前能順利回歸了感謝各位建議
11/29 16:33, 8F
文章代碼(AID): #1IbjZ1xB (MATLAB)
文章代碼(AID): #1IbjZ1xB (MATLAB)