[转载]Matlab拟合Logistic曲线

标签:
转载 |
分类: 知书识理,自圆其说 |
原文地址:Matlab拟合Logistic曲线作者:易智
最近一直在做软件领域中数理统计相关的资料。三大统计软件SAS、SPSS、Stata做来应该是不费吹灰之力,换作Matlab如何实现,是我近期研究的一个目标。
结合网络上各种实现手法和使用SPSS进行拟合Logistic曲线的一些论文资料,现在我拿出来分享诸位读者,给大家这方面一点启迪。本来是要Gompertz、Logistic、Rayleigh曲线都要拟合的,我在这里仅作Logistic曲线拟合,其它两个方法类似,不多赘述。
|
|
2 | |
|
|
6 |
|
|
|
|
|
|
|
|
|
1038 |
|
选定初始值A=500(至于为何选取A=500,请参阅相关文献资料,有相当多的方法供选取),分别代入x=1,F(x)=3和x=2,F(x)=13到 Logistic曲线方程
>>[b,c]=solve('500/(1+b*exp(-c*1))=3','500/(1+b*exp(-c*2))=13','b,c')
解得初始值:A=500,
b=732.6,c=1.487
编写Matlab程序LogisticDemo.m如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x=1:8;
y=[3,13,80,195,332,895,1038,1143];
c0=[500,732.6,1.487];
fun=inline('c(1)./(1+c(2).*exp(-c(3).*x))','c','x');
b=nlinfit(x,y,fun,c0);b
t=0:.01:8;
plot(x,y,'r.',t,fun(b,t))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Matlab中运行如上程序,结果如下图
http://s3/middle/407abb0dh7453d0e83122&690
红色框内对应的3个值即为A,b,c的参数解
最终解得: A=1165, b=3109,c=1.5
Logistic曲线方程为:
http://s7/middle/407abb0dh8b46378d14f6&690