数学建模社区-数学中国
标题:
数模竞赛-人口问题
[打印本页]
作者:
杨利霞
时间:
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 J
2016年放开全面两孩,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/ P
1 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, h
mathType的公式好像无法在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 v
clc,clear;
5 ?3 N+ A; F2 ]" \% W
syms a b;
2 g3 k' f8 i. L
c=[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! S
n=length(A);
* n& O0 r5 @1 q8 l. L) n! _
for i=1
n-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 H
D=D';
$ ^. a' j: S5 x* u4 H
E=[-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) Z
a=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=2
n+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 R
end
' v1 j& G _9 G) R6 ~* e
G=[];G(1)=A(1);
. y9 P* ^% ^: x# f9 x3 e
for i=2
n+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 l
end
. [8 ]9 `; |( z: n) u3 e7 R
t1=2012:2017;
, I- o% d" v) A" Z$ G. o
t2=2012:2022; %多10组数据
8 ]9 c2 G" v" D) H# w
G
$ Z/ E4 |, w+ y: J! f
h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较
7 ^2 v3 w N1 d. E- k6 _( A
set(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 d
clear
: 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- _; C
Y=[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" H
for 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 B
B=inv(X'*X)*X'*y'
; Q3 a$ w; G! B- C" H
for 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 V
U=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( P
for 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 Z
plot(T,Y,'r*')
- }, E! `, N% [1 V% H
hold 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; ^* f
3 Y, P7 s$ T* V
数学建模解题思路与方法.pptx
2019-4-12 16:29 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 2, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5