加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]Matlab拟合Logistic曲线

(2017-04-10 15:06:32)
标签:

转载

分类: 知书识理,自圆其说
原文地址:Matlab拟合Logistic曲线作者:易智

最近一直在做软件领域中数理统计相关的资料。三大统计软件SAS、SPSS、Stata做来应该是不费吹灰之力,换作Matlab如何实现,是我近期研究的一个目标。

 

结合网络上各种实现手法和使用SPSS进行拟合Logistic曲线的一些论文资料,现在我拿出来分享诸位读者,给大家这方面一点启迪。本来是要Gompertz、Logistic、Rayleigh曲线都要拟合的,我在这里仅作Logistic曲线拟合,其它两个方法类似,不多赘述。

 

 Logistic曲线模型:

file:///C:/WINDOWS/TEMP/moz-screenshot.png

 http://s16/middle/407abb0dh8b46235954ef&690

 如下为拟合的原始数据点:

 x  1 2  3  4  5  7  8

 y

 3  13  80  195  332  895 1038   1143

 

选定初始值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

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有