logistic人口模型,如何拟合?
logistic人口模型,如何拟合?我用过lsqCURVEFIT和CFTOOL工具箱,都拟合不出来。
已经知道
x=;
y=[3750.96,3792.33,3826.58,3871.51,3924.32,3963.1,3993.09,4029.56,4070.07,4121.19, ...
4169.85,4208.88,4234.91,4261.37,4285.91,4313.3,4341.2,4369.63,4400.09,4422.28, ...
4446.86, 4467.46,4501.22,4519.84,4535.98,4551.58,4577.22,4602.11,4629.43];
plot(x,y,'*');
fun=inline('c(1)./(1+(c(1)./3750-c(2)).*exp(-c(2)*x))','c','x');
c=lsqcurvefit(fun,,x,y)
[ 本帖最后由 ChaChing 于 2009-3-26 10:06 编辑 ] 建议使用1stOpt:
均方差(RMSE): 42.0039711977
残差平方和(RSS): 51165.6742949392
相关系数(R): 0.987075390882719
相关系数之平方(R^2): 0.974317827286273
决定系数(DC): 0.974303493926034
卡方系数(Chi-Square): 6.12850932993576
F统计(F-Statistic): 1050.72650430691
参数 最佳估算
---------- -------------
c1 -267020.349590751
c2 0.00713897243123714
====== 结果输出 =====
No 实测值y 计算值y
1 3750.96 3830.66569205249
2 3792.33 3858.5071410989
3 3826.58 3886.55384668415
4 3871.51 3914.8073644006
5 3924.32 3943.26926224868
6 3963.1 3971.94112074485
7 3993.09 4000.82453303055
8 4029.56 4029.9211049824
9 4070.07 4059.23245532332
10 4121.19 4088.76021573485
11 4169.85 4118.5060309706
12 4208.88 4148.47155897072
13 4234.91 4178.65847097769
14 4261.37 4209.06845165309
15 4285.91 4239.70319919565
16 4313.3 4270.56442546046
17 4341.2 4301.65385607936
18 4369.63 4332.97323058256
19 4400.09 4364.52430252148
20 4422.28 4396.30883959286
21 4446.86 4428.32862376406
22 4467.46 4460.58545139969
23 4501.22 4493.08113338951
24 4519.84 4525.81749527765
25 4535.98 4558.79637739307
26 4551.58 4592.01963498146
27 4577.22 4625.48913833843
28 4602.11 4659.20677294406
29 4629.43 4693.17443959884
回复 沙发 dingd 的帖子
参数 最佳估算---------- -------------
c1 -267020.349590751
c2 0.00713897243123714
那个参数指的什么什么?我的那个模型,不是有3个参数的吗?
还有1stOpt是软件,还是工具箱?
谢谢你的回答 最好能解释下,为什么用lsqCURVEFIT和CFTOOL工具箱,无法拟合出效果?或者说是图形完全偏离?
回复 板凳 106347084 的帖子
fun=inline('c(1)./(1+(c(1)./3750-c(2)).*exp(-c(2)*x))','c','x')还真没看出来你这里哪来的3个参数
我印象中logistics模型的y是2个概率的对数的比值,不知道楼主的y是不是符合要求。
[ 本帖最后由 ChaChing 于 2009-3-25 23:27 编辑 ]
回复 沙发 dingd 的帖子
谢谢1stOpt。那个软件我已经使用了。但是我的那个得到的也是3个参数哦。为什么你那里只有2个参数。是把X0直接初始化定义了吗?还有最好能有matlab的解释,谢谢 原帖由 ydlcsu 于 2009-3-25 16:03 发表 http://www.chinavib.com/forum/images/common/back.gif
fun=inline('c(1)./(1+(c(1)./3750-c(2)).*exp(-c(2)*x))','c','x')
还真没看出来你这里哪来的3个参数
悲剧,我错了,实际上是fun=inline('c(1)./(1+(c(1)./c(3)-c(2)).*exp(-c(2)*x))','c','x')
我在MATLAB原始求解的时候,因为那个C(3)3个变量,我怀疑是这个原因,所以给C(3)赋值了一下(根据表达式的定义,那个C(3)应该是人口的初始值)不好意思了~
最后,再次问下,那个在MATLAB里到底怎么使用比好好呢 公式如果改为“c(1)./(1+(c(1)./c(3)-c(2)).*exp(-c(2)*x))”,效果就更好了。实际上Matlab拟合工具或函数完全可以做,但关键是初值不好定,而1stOpt则免去了这一麻烦。
均方差(RMSE): 8.08182251009928
残差平方和(RSS): 1894.15979745768
相关系数(R): 0.999524242875486
相关系数之平方(R^2): 0.999048712095813
决定系数(DC): 0.999048712063094
卡方系数(Chi-Square): 0.22666028762507
F统计(F-Statistic): 13665.6836438844
参数 最佳估算
---------- -------------
c1 4989.8456811006
c3 12424.745381341
c2 0.0506445362287291
====== 结果输出 =====
No 实测值y 计算值y
1 3750.96 3741.55384307032
2 3792.33 3788.35552215901
3 3826.58 3833.94458066219
4 3871.51 3878.31136209857
5 3924.32 3921.44976944857
6 3963.1 3963.35709985016
7 3993.09 4004.03386793235
8 4029.56 4043.48362023472
9 4070.07 4081.71274305409
10 4121.19 4118.73026592773
11 4169.85 4154.54766281069
12 4208.88 4189.17865283921
13 4234.91 4222.63900239605
14 4261.37 4254.94633001255
15 4285.91 4286.11991545884
16 4313.3 4316.18051419246
17 4341.2 4345.15017815869
18 4369.63 4373.05208376622
19 4400.09 4399.91036770052
20 4422.28 4425.74997108721
21 4446.86 4450.59649237792
22 4467.46 4474.4760492049
23 4501.22 4497.41514933549
24 4519.84 4519.44057075595
25 4535.98 4540.57925082449
26 4551.58 4560.8581843558
27 4577.22 4580.30433043314
28 4602.11 4598.94452768906
29 4629.43 4616.80541775026
回复 8楼 dingd 的帖子
我想我又点明白为什么会错了。。。看到那个拟合出来的那个X0=12424,但是本来的那个LOGISTIC模型,X0代表的初始年份的人口,所以都是往初值是3750那个地方考虑到。但是,可能对于这个的人口数据,确实不是很符合LOGISTIC的模型咯?
虽然在数学上是可以拟合出一个参数的,但是,其实已经完全无法解释其本身的东西了。。
现在,我又有了一个新的想法,我想用lOGISTIC的原型,DX/DT=R-S*X 其中R和S是参数。那么如果用这个做的话,主要的问题是那个DX/DT的东西,怎么处理啊?原本的那个东西是离散的,这个微分的定义如何得到比较好点呢? 再次,在这里感谢所有回过帖子的人们,谢谢你们的帮忙!小的在这不胜感激!:@)
微分法那个东西怎么做好呢?
[ 本帖最后由 ChaChing 于 2009-11-7 21:30 编辑 ] 学习学习学习学习
页:
[1]