3.2 【实验】预测美国人口.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

【实验】预测美国人口

3.2.1预测美国人口

应用该模型的逻辑:根据Malthus人口模型理论,指数增长的数据满足模型关系:

注意,t-t0只是表示相对时间,取t0=0也是一样的:

通过数据拟合出唯一参数r的最优估计,则得到可适用于数据的具体模型,从而可以用于预测和决策。

以美国人口数据为例,以10年为间隔,可获得图3-3。

3-3美国1790年-1930年人口数据

首先,根据数据给出散点图。MATLAB代码:

【例s3_1】:

%美国1790-1930年人口数据(10年为间隔)

P=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,...

38.6,50.2,62.9,76.0,92.0,106.5,123.2];

year=1790:10:1930;

plot(year,P,bo)

3-4美国1790年-1930年人口散点图

这里所运用的处理技巧是对数据做变换,以简化函数关系。对于指数增长的数据,可以通过取对数法,转化为线性函数关系。

做一次对数变换,看下效果如何,MATLAB代码如下。

【例s3_1】:

figure

plot(year,log(P),bo)

3-5对数变换之后的散点图

可见,取对数后大致是“直线”关系。下面对数据做如下变换:

注:将年份转化为第几年,可避免回归系数过小。

利用MATLAB按式(3.5)对数据做变换,再用自带函数fitlm()拟合线性关系,MATLAB代码如下。

【例s3_1】:

%对数据做变换,拟合线性关系

X=year-1789;

y=log(P);

mdl=fitlm(X,y)

3-6运行结果

发现拟合效果非常好(拟合优度R2=0.988),就得到线性模型:

代换回原来的变量:

lnP=0.025215*(year-1789)+1.4962

再变形得到想要的具体模型:

下面来看预测效果:

【例s3_1】:

%用匿名函数方式来定义预测函数

f=@(t)exp(0.025215*(t-1789)+1.4962);

Pm=f(year);%计算预测值

errs=100*abs(Pm-P)./P;

result=array2table([year;P;Pm;errs],VariableNames,{Year,P,Pm,Error})

3-7运行结果

接下来考察预测结果如何。利用如下代码可以直观看到真实值与预测值的接近程度。

【例s3_1】:

figure

plot(year,P,bo,year,Pm,r*)

legend(真实值,预测值)

3-8运行结果

可见,指数增长模型在早期的预测效果还是挺好的,后期开始展现爆炸式增长趋势。

文档评论(0)

あいしてる + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档