106347084 发表于 2009-3-24 22:48

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 编辑 ]

dingd 发表于 2009-3-25 11:03

建议使用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

106347084 发表于 2009-3-25 15:52

回复 沙发 dingd 的帖子

参数      最佳估算
----------      -------------
c1               -267020.349590751
c2               0.00713897243123714

那个参数指的什么什么?我的那个模型,不是有3个参数的吗?
还有1stOpt是软件,还是工具箱?
谢谢你的回答

106347084 发表于 2009-3-25 15:53

最好能解释下,为什么用lsqCURVEFIT和CFTOOL工具箱,无法拟合出效果?或者说是图形完全偏离?

ydlcsu 发表于 2009-3-25 16:07

回复 板凳 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 编辑 ]

106347084 发表于 2009-3-25 16:20

回复 沙发 dingd 的帖子

谢谢1stOpt。那个软件我已经使用了。但是我的那个得到的也是3个参数哦。为什么你那里只有2个参数。是把X0直接初始化定义了吗?
还有最好能有matlab的解释,谢谢

106347084 发表于 2009-3-25 21:11

原帖由 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里到底怎么使用比好好呢

dingd 发表于 2009-3-26 08:52

公式如果改为“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

106347084 发表于 2009-3-26 22:57

回复 8楼 dingd 的帖子

我想我又点明白为什么会错了。。。
看到那个拟合出来的那个X0=12424,但是本来的那个LOGISTIC模型,X0代表的初始年份的人口,所以都是往初值是3750那个地方考虑到。但是,可能对于这个的人口数据,确实不是很符合LOGISTIC的模型咯?
虽然在数学上是可以拟合出一个参数的,但是,其实已经完全无法解释其本身的东西了。。

现在,我又有了一个新的想法,我想用lOGISTIC的原型,DX/DT=R-S*X 其中R和S是参数。那么如果用这个做的话,主要的问题是那个DX/DT的东西,怎么处理啊?原本的那个东西是离散的,这个微分的定义如何得到比较好点呢?

106347084 发表于 2009-3-26 23:01

再次,在这里感谢所有回过帖子的人们,谢谢你们的帮忙!小的在这不胜感激!:@)

微分法那个东西怎么做好呢?

[ 本帖最后由 ChaChing 于 2009-11-7 21:30 编辑 ]

cike0843 发表于 2009-3-28 20:55

学习学习学习学习
页: [1]
查看完整版本: logistic人口模型,如何拟合?