数学建模社区-数学中国
标题:
matlab回归logistic模型
[打印本页]
作者:
enyangsh
时间:
2016-12-28 16:52
标题:
matlab回归logistic模型
请教大神matlab回归logistic模型代码及方法实现原理,最好附解析,有实例更好.
作者:
madio
时间:
2016-12-28 17:00
% curvefitLogistic.m
% 在实际应用时, 只有在确认所得的生物数据具有 logistic 曲线规律, 拟合的结果才
% 有意义,下面这组数据具有 logistic 曲线规律!
N=[3929 5308 7240 9638 12866 17069 23192 31443 38558 50156 62948 ...
75995 91972 105711 122775 131669 150697 179323 203185 226500];
t=1790:10:1980;
% 画原始数据图
plot(t,N,t,N,'r*')
hold on
% Logistic 函数的构造
func = @(beta,x) beta(1)./(1+(beta(1)/N(1)-1)*exp(-beta(2)*(x-1790)));
% 关键:寻优初值的选取:beta0(1)为函数的最大值,beta0(1)尽可能小,这里直接取 0
% 因为:现在在计算机上进行 logistic 曲线拟合, 多采用 Guass一Newton 算法和 Guass-
% Newton 的改进算法 Marquardt 法, 这两种算法只有在选取一组与实际值较接近的初
% 值K, a, b 时, 迭代过程的收敛性才好, 即找到的K 、a 、b 的值能使 R 值最小!
beta0 = [max(N) 0];
% lsqcurvefit 调用
[beta,resnorm,residual,exitflag,output]= lsqcurvefit(func,beta0,t,N);
% 画拟合图
plot(t,func(beta,t), t,func(beta,t), '*b');
作者:
enyangsh
时间:
2016-12-28 17:24
希望是能回归出logistic模型参数以及选取哪些变量,初步回归这样子,不要线性的那个我会.
作者:
madio
时间:
2016-12-28 17:32
beta不就是参数吗?你是需要逐步回归选取变量是吗?
作者:
madio
时间:
2016-12-28 17:43
你如果要逐步回归的话就把lsqcurvefit函数换成stepwisefit函数,具体的用法差不多,就是返回值有区别,一看帮助就知道了
作者:
enyangsh
时间:
2016-12-28 18:36
你这个 是logistic模型么?y只能取0或1,就是这个特殊啊,所以我才不知道该怎么做.
作者:
madio
时间:
2016-12-28 19:02
% Logistic 函数的构造
func = @(beta,x) beta(1)./(1+(beta(1)/N(1)-1)*exp(-beta(2)*(x-1790)));
注意函数你是可以自己根据需要定义的,就是你说的sigmod函数
作者:
Yip
时间:
2018-9-2 13:49
路过路过看看
作者:
KathyCheng
时间:
2020-11-22 15:07
跟楼主有一样的问题,蹲一个回答
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5