24小时热门版块排行榜    

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

spinach45

捐助贵宾 (初入文坛)

[求助] 初学新手求教。求用Matlab求解一个非线性回归,或请指点门路。已有2人参与

第一次上论坛发帖,请多多指教啊。
想请教一下下面这个回归用怎样用Matlab编程?

初学新手求教。求用Matlab求解一个非线性回归,或请指点门路。

论文里面写着用NLLS解决。
这个怎么用Matlab编程啊,初始值应该怎么确定啊。自己研究了三天,但发觉没有方向,还想请教一下各位高手,应该怎样系统地看什么书啊?

我研究了三天,把变量变为时间序列后,自己用了这样编程。
CODE:
X = [R1,Xt_1,Xt_2,Xt_3];
Y = y;
modelfun = @(1+exp(b(1)*(b(2)-b(3))*X(:,4)*(X(:,2)-X(:,1)*X(:,3)))).^(-1).*b(2)*X(:,2)+(1-(1+exp(b(1)*(b(2)-b(3))*X(:,4)*(X(:,2)-X(:,1)*X(:,3)))).^(-1)).*b(3)*X(:,2);
beta0=[-10, 0.5, 0.5];
mdl = NonLinearModel.fit(X,Y,modelfun,beta0);

modelfun那行要不就是括号不对称要不就是不应为Matlab表达式。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

spinach45

捐助贵宾 (初入文坛)

 \"初学新手求教。求用Matlab求解一个非线性回归,或请指点门路。-1\"
 \"初学新手求教。求用Matlab求解一个非线性回归,或请指点门路。-2\"
 \"初学新手求教。求用Matlab求解一个非线性回归,或请指点门路。-3\" \"初学新手求教。求用Matlab求解一个非线性回归,或请指点门路。-4\"

各位,实在抱歉,之前回的帖子图都挂了,式子也看不到。上图是原文的论述和式子。我根据原文提到的数据用1stopt进行了回归,得出的结果不大相同,而且也不知道怎么得到其他例如AIC之类的结果。请问能不能帮我看看应该如何处理,或者用更高版本的1stopt帮忙走走程序?
我写的1stopt程序(省略了data,参见附件)
CODE:
Parameters b1, b2[0,1], b3[1,2];
Variable a, x, y, z;
Constant R=1.073533812;
Function R*a=(1+exp(b1*(b2-b3)*z*(x-R*y)))^(-1)*b2*x+(1-(1+exp(b1*(b2-b3)*z*(x-R*y)))^(-1))*b3*x;
data;

另外,我在尝试用matlab的时候也出现了问题,说“输入参数的数目不足”,还有原因,“原因:    Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue”,昨晚查了一晚也不知道怎么回事,能麻烦帮忙看看吗?(省略了data,参见附件)
CODE:
function fit_nonl
clear all;clc
format long

data=[
];
R=1.073533812;
Xt_1=data(:,2);
Xt_2=data(:,3);
Xt_3=data(:,4);
Xt=data(:,1);
X=[Xt_1, Xt_2, Xt_3];
Y=R*Xt;
b0=[-10; 0.5; 1.5];
lb=[-100; 0; 1]*1e9;
ub=[0; 1; 2]*1e9;


%-------------------------------------------------------------------------

% 使用函数lsqnonlin()进行参数估计
OPTIONS=optimset('MaxFunEvals',1000);
[b,resnorm,residual,jacobian] = ...
    lsqnonlin(@ObjFunc,b0,lb,ub,OPTIONS,X,Y);
ci = nlparci(b,residual,jacobian);
%residual;

%-------------------------------------------------------------------------

function f = ObjFunc(b,X,Y)
f=KineticsEqs(X,b)-Y;

%------------------------------------------------------------------------
function xt = KineticsEqs(b,X)
b1=b(2);
b2=b(3);
x1=X(:,1);
xt=(myfunc)^(-1)*b1*x1+(1-(myfunc)^(-1))*b2*x1;

function n=myfunc(b,X)
R=1.073533812;
B=b(1);
b1=b(2);
b2=b(3);
n=1+exp(B*(b1-b2)*X(:,3)*(X(:,2)-R*X(:,1)));

以防代码看不到,我把数据和代码都在附件里。

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 1stopt.txt
  • 2015-03-10 12:49:33, 5.07 K
  • 附件 2 : matlab.txt
  • 2015-03-10 12:49:33, 5.95 K
  • 附件 3 : 发问.txt
  • 2015-03-10 12:49:34, 6.69 K
11楼2015-03-10 12:52:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
"NLLS"是否就是指"NonLinear Least Squares"?即非线性最小二乘法,试试1stOpt吧,不需要初值,简单易懂。
2楼2015-03-06 09:42:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2015-03-06 10:54:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

spinach45

捐助贵宾 (初入文坛)

好,谢谢楼上两位!我明天趁周末先捣弄一下。
4楼2015-03-07 23:05:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见