数学建模社区-数学中国

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

作者: 杨利霞    时间: 2019-4-12 16:29
标题: 数模竞赛-人口问题
数模竞赛-人口问题
/ M* Y8 [% a& W* t$ f, Y- t2 ?7 E8 j- ^5 R/ ~, @; e6 p
学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
2 e4 j: L* g( n- e' c9 S: P6 ~7 {3 f5 e/ M% X$ `
人口问题/ ]$ u1 q5 O" W' l+ ^, O  }  }
: I" y/ a8 I$ Y# z! }( B
在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。 / d8 T( a, s; h7 T
根据最后完成的《实施全面两孩政策人口变动测算总报告》,
( ~& I, B% f2 J2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。 % A% T" q7 F( Y7 t( ?5 ~! n
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。 ( Z. Y7 M- p" z( l  z) @# J, T, X
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。 / ]( G. |& Y( Q# `; r$ B) `
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。 " l4 C1 {( {+ u0 X/ F$ Y
人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。
9 `( T. ~5 i6 t) y7 \: h) i1 U由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。
- v" G0 b8 r# \: E% D0 @: g$ Z8 f1 Y  u+ k2 f% a2 t! a
建立数学模型分析下列问题:# s% C$ O( A( W) M. @7 c7 F

& }6 j2 o: z+ B(1) 在现有政策下预测未来人口的变化趋势。 0 S3 Z8 b$ x) y4 x( F
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。
5 p0 L  B3 \9 k(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。 ; P+ A5 V' t5 f) w, T7 q
(4) 依据你的研究给政府相关部门写一份800字左右的报告。" t. s$ {0 B8 Z4 x+ X) M  f

1 R0 x! V2 {) I. o( K' P拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。
4 Y- f. a) h7 b9 B* n. `. v' d0 f8 y- U
人口预测模型
( o  m# _$ \6 q$ ]  X4 K9 j, p
7 P5 b; ~# i  Z% D7 f, m先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
' }6 t% U2 M8 G6 [7 o; n, x/ P1 w: h1 c9 b: ?' Z# q
灰度预测
3 Q/ P$ y# k$ y, a" m2 [: `4 {
' P9 m& s$ a6 i/ E' }先说公式推导
9 @! P- O$ `4 W" Y, hmathType的公式好像无法在makedown上面显示,我就截图吧 " ?; m, Q: x; R  b# r: l- w/ B0 \5 p

; h8 Q* i4 U  l5 N* c3 y; ]# Q) j# Z
* t: V) g6 C3 z$ g& ?+ ]: K  C

3 I; u$ c; L! h9 n5 x上面就是公式的推导,下面是matlab的代码3 C1 y* b7 i+ M1 Z

$ N+ r# }( d$ K8 ^8 O2 vclc,clear;  5 ?3 N+ A; F2 ]" \% W
syms a b;  
2 g3 k' f8 i. Lc=[a b]';  1 E# s! E2 K5 z! @  u7 M6 J
%2012-2017) T2 f+ m. P+ u7 q  G) t; ^3 _
A=[ 135404   136072   136782   137462   138271   139008];
0 r4 B3 V2 {9 k9 j3 h; a6 \( |B=cumsum(A);  %原始数据累加  
# s( m1 O& e! Sn=length(A);  
* n& O0 r5 @1 q8 l. L) n! _for i=1n-1)  ; k6 p0 j5 b- W; h; f
    C(i)=(B(i)+B(i+1))/2; %生成累加矩阵  * V2 I  C5 q0 y9 D
end  + w7 O% d. _! Q; k9 W4 ?/ X
%计算待定参数的值  6 g, w! V; F- w* C, k" }' o3 x9 e
D=A;D(1)=[];  
' H# `! f: O$ x6 [+ @5 HD=D';  
$ ^. a' j: S5 x* u4 HE=[-C;ones(1,n-1)];  / }* ~( u. b" p- O0 u( w
c=inv(E*E')*E*D;  * M. y9 T. T# x$ r1 r
c=c';  
  q: a3 A$ d  A' d) Za=c(1);b=c(2);  
# r8 w; S# C& C%预测后续数据  
5 A) |) T' |& j6 W4 `F=[];F(1)=A(1);  4 o6 l: J- v( y9 o
for i=2n+5)  %只推测后5个数据,可以从此修改  
* s( p% k6 j% b7 l    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;  
6 i! R2 A( S" f. [2 Rend  ' v1 j& G  _9 G) R6 ~* e
G=[];G(1)=A(1);  
. y9 P* ^% ^: x# f9 x3 efor i=2n+5)  %只推测后5个数据,可以从此修改  
8 q# d& q4 E) d6 b; [7 L    G(i)=F(i)-F(i-1);  %得到预测出来的数据  
6 W4 T: `0 i5 p2 [# ^9 lend  . [8 ]9 `; |( z: n) u3 e7 R
t1=2012:2017;  
, I- o% d" v) A" Z$ G. ot2=2012:2022;  %多10组数据  
8 ]9 c2 G" v" D) H# wG$ Z/ E4 |, w+ y: J! f
h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较  
7 ^2 v3 w  N1 d. E- k6 _( Aset(h,'LineWidth',1.5);" m) H0 h9 W6 f8 p. n

2 ]- Z  V+ m: i+ r这是Excel里面的人口数据 0 r* e3 l, |5 {2 A$ J. z; Z

; ^( N! q  w' N+ R; q1 b& `最后得出的结论,感觉还是挺靠谱的。 + A" P5 a: V/ O. `1 m
* X4 Q" ?4 n8 b4 Y+ W+ s
; B" ~, q6 T2 z" U1 t" H  C0 @
logistic模型
" q6 y& y( E' X. |2 S
4 g3 D% J3 v( y0 r! h! o* b8 p前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。
2 j6 g5 u4 V7 J  D
% I7 o4 z) t9 E9 R& G. a9 k$ W
' Y2 g3 B* u* o2 |2 dclear  : q, N0 m* d, U; j7 a- c2 u
clc  , X7 |* F* g4 E' q, W
% 读入人口数据(1971-2000年)  1997 - 2017
. c+ _9 }2 e) f% j( Q- J- _; CY=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008];
7 D7 k9 e7 u4 e! p8 n& e6 n% 读入时间变量数据(t=年份-1970)  
8 H; P  J3 Q7 L# j8 L" |  ^T=1997:2017;) k* v0 n7 Y; K
% 线性化处理  
+ N3 S& y  i: R) c" Hfor t = 1:21,   " b5 X9 r3 q* c
   x(t)=exp(-t);  7 W, V  x9 y" i
   y(t)=1/Y(t);  + X; ^% h, D4 k# p$ t9 \8 G' C
end  
( \; C' F0 G  f( Y6 s% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值    {2 B; R% P/ k- h( |8 W" R
c=zeros(21,1)+1;  
/ }4 |7 B5 U+ W( O5 |X=[c,x'];%相当于30个方程组,求解a和b 的值.  
1 M, i- d: k+ H4 s) H6 N& x3 E6 BB=inv(X'*X)*X'*y'  
; Q3 a$ w; G! B- C" Hfor i=1:21,  $ b+ S1 F5 S  e
% 计算回归拟合值      2 X2 r" M" E% m8 j/ [$ j! H, o! f
    z(i)=B(1,1)+B(2,1)*x(i);  
. {6 Z; X  b3 A% 计算离差  
) G: i( `2 m0 u) L& Y    s(i)=y(i)-sum(y)/21;  
  m8 `% t2 s8 x3 Q: K8 _! t% 计算误差      
; c* H- T8 M5 _9 m: i: S# \    w(i)=z(i)-y(i);  
; ]  N/ i1 j) C% Z" K+ t1 J# ^end    C8 _8 ]5 l4 w7 j6 c) a
% 计算离差平方和S  0 p3 S9 H5 e) t% n" ]7 s( F
S=s*s';  
- p' J- s" A$ V" R5 V+ y* k$ t! F% 回归误差平方和Q  ( [) y& R  q. j5 Z
Q=w*w';  2 }# |+ h( A* d1 B3 t: |5 Y
% 计算回归平方和U  
" ]2 ?6 R5 F+ C5 W" c5 VU=S-Q;  ' G8 d$ b2 p, G
% 计算,并输出F检验值  ( i% C3 k, G+ y! I; I& N
F=28*U/Q  
" g4 z- m: t5 q' h- m% 计算非线性回归模型的拟合值
! r  G( a- C6 P8 A5 }: I6 i( Pfor j=1:21,  
3 m/ |/ u% @+ a+ f- O2 L    p(j)=1/(B(1,1)+B(2,1)*exp(-j));  - ?( P  A/ d' s8 E: C
end  
) z$ o3 X/ t+ g+ L5 t1 ]% 输出非线性回归模型的拟合曲线(Logisic曲线)  
) |2 X8 ~; N* N, n/ [: ?3 Zplot(T,Y,'r*')
- }, E! `, N% [1 V% Hhold on, x8 J0 S0 `! B( o: V4 y% `8 o
plot(T,p);
4 N* ^# b8 c+ n1 O) J5 h/ k$ V0 x& h; Q
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧 ; J  d. y, h: E) g9 E
, `* `  q% N' q

( ?& e* b( v' y8 V- D, U
- u. n! }& B; ^* f3 Y, P7 s$ T* V

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

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






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