赞
踩
文章内容部分参考自:
(9条消息) 数学建模——人口预测模型公有木兮木恋白的博客-CSDN博客数学建模人口预测模型
logistic回归应用指南 - 知乎 (zhihu.com)
非线性最小二乘估计
- clc, clear
-
- a=textread('data4.txt'); %把原始数据保存在纯文本文件data4.txt中
-
- x=a([2:2:6],:)'; %提出人口数据
-
- x=nonzeros(x); %去掉后面的零,并变成列向量
-
- t=[1790:10:2000]';
-
- t0=t(1); x0=x(1);
-
- fun=@(cs,td)cs(1)./(1+(cs(1)/x0-1)*exp(-cs(2)*(td-t0))); %cs(1)=xm,cs(2)=r
-
- cs=lsqcurvefit(fun,rand(2,1),t(2:end),x(2:end),zeros(2,1))
-
- xhat=fun(cs,[t;2010]) %预测已知年代和2010年的人口
logistic回归是一种广义的线性回归分析模型,常用于疾病诊断、经济预测等领域,主要用途为寻找危险因素(寻找某一疾病的危险因素)、预测(不同自变量情况下,某病或某种情况的发生概率)和判别(判断某人属于某病或某种情况的概率有多大),在疾控项目中较多涉及寻找危险因素,因此,本文主要以寻找危险因素进行举例说明。
直接用SPSS软件去分析,操作指南见:
logistic回归应用指南 - 知乎 (zhihu.com)
考虑了人口能够承受的最大值
数据出错时拟合的不够好,必须要有正确的数据才能够拟合
数学模型简单,有一定的公式
原理
Logistic模型认为人口增长有最大值Xm和人口的固有增长率r0。当人口增长到Xm附近,人口将保持这个水准不会有大的变动,数学公式如下
- dx/dt=r0(1-x/Xm)x
- x(0)=x0
x是人口数量,x0是初始人口数量
解这个方程组得到
x=Xm/(1+(Xm/x0-1)exp(-r0t))
- clc
-
- clear
-
- closeall
-
- x=[97.42102.36105.78 111.16 116.04 121.71 126.26 134.93 141.24 141.89 143.2 147];%常驻老年人口
-
- n=length(x);
-
- t=0:1:n-1;
-
- rk=zeros(1,n);
-
- rk(1)=(-3*x(1)+4*x(2)-x(3))/2;
-
- rk(n)=(x(n-2)-4*x(n-1)+3*x(n))/2;
-
- fori=2:n-1
-
- rk(i)=(x(i+1)-x(i-1))/2;
-
- end
-
- rk=rk./x;
-
- p=polyfit(x,rk,1);
-
- b=p(2);
-
- a=p(1);
-
- r0=b;
-
- xm=-r0/a;
-
- %输出
-
- pnum=zeros(n,1);
-
- fori=0:1:n-1
-
- pnum(i+1)=xm/(1+(xm/x(1)-1)*exp(-r0*i));
-
- end
-
- year1=2008:2019;
-
- plot(year1,pnum,'r--o',year1,x,'k-*')
-
- xlabel('年份')
-
- ylabel('老年人口数量/万人')
-
- legend('预测老年人口数量','实际老年人口数量')
预测
- figure(2)
-
- fnum=zeros(n+16,1);
-
- fori=0:1:n+15
-
- fnum(i+1)=xm/(1+(xm/x(1)-1)*exp(-r0*i));
-
- end
-
- year2=2008:2035;
-
- plot(year2,fnum,'r--o')
-
- xlabel('年份')
-
- ylabel('老年人口数量/万人')
-
- legend('预测老年人口数量')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。