数学建模社区-数学中国

标题: 数模竞赛-人口问题 [打印本页]

作者: 杨利霞    时间: 2019-4-12 16:29
标题: 数模竞赛-人口问题
数模竞赛-人口问题
4 {6 K8 d& q5 \6 z1 ^# _
0 v5 C5 \' v  ]2 D  T3 E学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
( x( ]1 u! ?: F: e6 s- l# O) u
' a4 t6 w$ {, G, _$ I6 f人口问题! A/ ]' h, l# s- X2 F

! [- y$ r0 U5 }: y0 k( P) e在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。
7 Y/ L; I, m" h& ^根据最后完成的《实施全面两孩政策人口变动测算总报告》,
0 B/ t3 J) _1 q- w2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。 . i% z) D/ _8 V) U- g. g
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。 . [  X( w7 m& ~% m
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。 0 y9 }3 `" b* \* N) Y  p
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。 ( @  e$ E& Y. H9 Z% F! b9 I
人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。
* P$ ]# n; B. \# U! N由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。
$ ^' H2 P2 ?' k4 I2 y& y
2 c$ K/ r6 A4 ?) I2 Y建立数学模型分析下列问题:
. H" b+ G% x2 p4 C& f
' P9 K& {3 J( ^- g(1) 在现有政策下预测未来人口的变化趋势。 3 Y! L5 W0 N- y! B* u4 I: T
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。 $ p0 @" f$ w5 M
(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。 - H. k6 k5 b) a5 U" F% E
(4) 依据你的研究给政府相关部门写一份800字左右的报告。# `+ e) ]% L3 Z$ T4 q4 r

! l3 x' Z4 o: S0 e3 J6 d1 ]* p! u拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。8 [8 P. X+ G8 L/ T% q1 x1 z( {

! U: b5 f4 ?! d+ V2 m$ k7 _人口预测模型
, g* t  D" P; A* k# }2 k1 p& r- v  s
先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
7 o# D5 Z/ A0 U6 H+ I$ _! s  `
8 N, r' f# A# x2 |) j灰度预测+ ]+ O+ ~) {) q

( ~7 p" B. ]; d9 t, M先说公式推导 ! s4 q; E% c8 q+ z! K) m( N2 @
mathType的公式好像无法在makedown上面显示,我就截图吧
9 @; J8 p: K  g. h
5 E& r/ n  t' E' j5 @, D6 |+ h1 S+ h9 T4 S% e" \% V/ ^; w
* U# ?; i# }  Q- ?

3 D+ {6 S- R5 ~' I9 T, \上面就是公式的推导,下面是matlab的代码
6 z& o. y# e0 L( n$ \% V3 b# _
7 x/ V3 F: a- ^8 Z" k+ aclc,clear;  ; E5 h5 K- n5 P- `& c: m# ?) B
syms a b;  4 n* e1 O/ I2 j: W& b* a# P
c=[a b]';  
# n* X$ A, K0 Y) O%2012-20173 A6 a7 x  r% N
A=[ 135404   136072   136782   137462   138271   139008];
( d; M8 t& _1 p7 C; u" ^: |B=cumsum(A);  %原始数据累加  - o% I0 O' p' m0 k3 m
n=length(A);  
" f  B* j7 a7 d1 Z# a  Y& P+ v9 Mfor i=1n-1)  
4 I- Q5 c& I( v: _" V( E0 {    C(i)=(B(i)+B(i+1))/2; %生成累加矩阵    q* j4 j# l/ J
end  5 y, M  p3 U, _$ N! X
%计算待定参数的值  2 _! U7 J/ i6 C2 B0 u' |+ g
D=A;D(1)=[];  5 N) J, q4 B2 e. h' z
D=D';  + G" H# @6 C- m0 z' p0 B/ U. \
E=[-C;ones(1,n-1)];  ' z1 Q; C& n1 d. Y5 V
c=inv(E*E')*E*D;  
+ Z  X$ n% S/ L7 hc=c';  
/ q7 |7 E, J2 I. K' n: [  Na=c(1);b=c(2);  5 W. L4 m% W! c6 J
%预测后续数据  8 N6 S0 B0 x; P4 u$ l# o9 O  q! Z
F=[];F(1)=A(1);  / @) S  ?1 R0 s- z2 [8 o8 T
for i=2n+5)  %只推测后5个数据,可以从此修改  4 X) e* g7 o! i; `1 g1 f
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;  
) e" C# i* G( l" I; Q% Oend  3 r6 L. \5 {; I, T4 H
G=[];G(1)=A(1);  
8 U+ s5 W! X8 ^9 `7 P0 Tfor i=2n+5)  %只推测后5个数据,可以从此修改  
0 Z8 S9 }, ?; q. O3 R, F- I    G(i)=F(i)-F(i-1);  %得到预测出来的数据  
1 T9 F9 A! [) j& Eend  - S( s! `( K. m: i
t1=2012:2017;  * p& \" v; A: w% @# T5 \0 o- Q
t2=2012:2022;  %多10组数据  
0 X4 ?) t+ P/ C0 ~' dG
& E" F; u3 d# j% ]. a1 c4 @5 ^; Ph=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较  $ _4 }5 d( q, p* I& B
set(h,'LineWidth',1.5);6 i) {% `) S+ M% k6 C1 r

3 g6 B$ e0 I+ @$ @0 \这是Excel里面的人口数据 8 y; o9 X& R! k

4 Z, D/ k  N/ ^) Z" h1 Z! d最后得出的结论,感觉还是挺靠谱的。
4 E3 W( S+ u2 `8 O3 i" c6 R
/ V+ n. D  ]1 u! S" \4 J7 a) y3 }" m; d1 N5 m6 |/ U8 L
logistic模型
3 o0 o6 h" I* \, S/ _/ m) O& |% m  h
前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。 9 P5 U# ]0 X4 F( }0 s

# V; e$ _+ v; s5 F7 V  Z
% n, F- ?$ G1 y: W3 h" j3 qclear  
9 L* B$ S5 h% E! P, Eclc  
" M( n# @2 @4 e# m9 F% 读入人口数据(1971-2000年)  1997 - 2017" _) I" t9 |$ _! r9 R. f
Y=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008];
3 k: a2 X5 Z1 j, q7 e8 X& O! r' O% 读入时间变量数据(t=年份-1970)  2 Q( B. {9 U4 e
T=1997:2017;! B% N; a( E+ \
% 线性化处理  " Q9 @8 |4 y' Z' \" l2 Q* U9 M% f
for t = 1:21,   
& c& @( C" D8 F1 |. W   x(t)=exp(-t);  1 _* r' s7 m8 m
   y(t)=1/Y(t);  9 U- S; S1 \. @0 S: y4 E' `
end  
/ l6 F9 o* [: u" S+ M) Z$ p% h% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值  1 o7 g3 J. c! w5 h, U; n+ K  S, a
c=zeros(21,1)+1;  5 g( B5 n6 r, p5 ^: f3 a
X=[c,x'];%相当于30个方程组,求解a和b 的值.  
  y$ u) J! M- ?& Q$ \" ZB=inv(X'*X)*X'*y'  
# k' |6 M9 U# o7 _5 Sfor i=1:21,  9 {# x$ D4 t- S7 s$ v4 T; v
% 计算回归拟合值      8 S% u5 F# K% n! r8 s9 p! b
    z(i)=B(1,1)+B(2,1)*x(i);  
4 F/ B/ Y: N; n) ?& y3 \% 计算离差  - t: `" n6 [: ~' c0 @6 h, X
    s(i)=y(i)-sum(y)/21;  1 r3 Z" k+ i! F3 X
% 计算误差      % {  h# A% Z0 t! @! U6 P
    w(i)=z(i)-y(i);  
' }% f9 e6 G' c) E! m9 f, }end  & P9 V' v) o5 u. @& [
% 计算离差平方和S  $ I3 J8 V# @8 u: V! {! w( H
S=s*s';  
; _, R' \4 ^% Q' l% 回归误差平方和Q  $ m, e" q2 S: w+ P
Q=w*w';  
3 [. m) r8 U0 A+ A; ~% 计算回归平方和U  5 c. J8 A* }; H/ ^' s
U=S-Q;  
# E( F) L4 S( y5 `% 计算,并输出F检验值  
% [2 f: ?. x1 }F=28*U/Q  ; O  P5 P1 h1 j# f, f" L' C
% 计算非线性回归模型的拟合值
# |! `& O8 e" T' d$ Sfor j=1:21,  . n  j6 }' Q  g
    p(j)=1/(B(1,1)+B(2,1)*exp(-j));  
* z& M, X& V3 r8 |0 B3 W- bend    k9 K1 N7 z3 |$ s2 H& ^6 s( i) ^7 g! j
% 输出非线性回归模型的拟合曲线(Logisic曲线)  
" y' w" S1 C7 Q1 W: b; Kplot(T,Y,'r*')2 }$ K8 F/ e9 p, Q! J3 g; w
hold on& @. U; [1 `) M! B4 X6 m
plot(T,p);$ ]& E8 }5 {% A  Q8 F9 l/ |) A8 K
# p7 h4 p4 b( {1 I; ?- a1 h8 S. B+ `, J
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧 - e# b' j/ M& V* V/ e
5 N7 l; @% o& L4 U! k3 p! u

/ ]4 _$ J6 H  r* L/ b( C$ w! A' d( q" A) l7 T3 |
. r% k6 w+ V# E. |+ A6 D) n

数学建模解题思路与方法.pptx

117.69 KB, 下载次数: 2, 下载积分: 体力 -2 点






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5