作者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
1F:推 doom8199:因为 lsqcurvefit 它是 iterative method, 本就无法确保 11/28 19:39
2F:→ doom8199:cost function 是否会收敛 11/28 19:40
3F:→ doom8199:若想让 [a,b] 估计结果较 smooth, 可以对 LSE 再加上 11/28 19:46
4F:→ doom8199:regularization term 11/28 19:47
5F:→ doom8199:ex: sigma[f(xi)-yi]^2 + |a|^2 + |b|^2 11/28 19:47
6F:→ doom8199:或者先对 yi 数据取 log 再做 optimization 11/28 19:49
7F:→ leoking0106:虽然不知道之後还会不会出错 11/29 16:32
8F:→ leoking0106:目前能顺利回归了感谢各位建议 11/29 16:33