作者leoking0106 (white)
看板MATLAB
標題Re: [問題]不是多項式的回歸
時間Thu Nov 28 13:46:38 2013
※ 引述《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
推 doom8199:因為 lsqcurvefit 它是 iterative method, 本就無法確保 11/28 19:39
→ doom8199:cost function 是否會收斂 11/28 19:40
→ doom8199:若想讓 [a,b] 估計結果較 smooth, 可以對 LSE 再加上 11/28 19:46
→ doom8199:regularization term 11/28 19:47
→ doom8199:ex: sigma[f(xi)-yi]^2 + |a|^2 + |b|^2 11/28 19:47
→ doom8199:或者先對 yi 數據取 log 再做 optimization 11/28 19:49
→ leoking0106:雖然不知道之後還會不會出錯 11/29 16:32
→ leoking0106:目前能順利回歸了感謝各位建議 11/29 16:33