数学建模社区-数学中国
标题:
数模竞赛-人口问题
[打印本页]
作者:
杨利霞
时间:
2019-4-12 16:29
标题:
数模竞赛-人口问题
数模竞赛-人口问题
7 o$ v# U( ?4 P2 y) T# v
0 n5 Q; g. \ Q( e. u; F o$ c
学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
" V& p! G3 l! Z+ p# S
. v+ m2 q5 |3 u" p- J0 Q+ w
人口问题
~( V: j, L. @# [+ [
3 ~* ~+ @! a6 E3 T9 [1 Y7 N
在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。
* ~& \6 z& d4 U3 y
根据最后完成的《实施全面两孩政策人口变动测算总报告》,
0 I( u& K$ Q& ^+ _
2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。
7 S. p) Z( R9 I( |
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。
. d! @9 a3 m# K# w6 h. H
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。
* S: B$ c* B) E$ j' r
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。
: y4 J4 u: Y8 F4 N2 p+ ?" Z& }
人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。
\) X d& S8 Z- Q1 ~0 }
由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。
" k6 ]9 E% M& C
2 e' r8 _) Y1 U$ ^
建立数学模型分析下列问题:
5 N# ~1 \- R# }7 v! |
% {' M' ?! H) K" h/ l7 c6 h) F
(1) 在现有政策下预测未来人口的变化趋势。
, z; l& V* D8 T: E9 c/ [7 o! I9 T
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。
' Q, r! v0 _, t8 r$ S
(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。
, j& [7 M5 B, ?+ h* X$ O$ R3 f" c7 G
(4) 依据你的研究给政府相关部门写一份800字左右的报告。
8 Y( o- w2 n/ Q; ^4 F8 G; Y9 d
- n# H& d$ N6 ]( X5 q4 ^
拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。
8 ?9 t* L! m+ f
8 q- _& [3 b; w2 y x$ g
人口预测模型
- T( ^+ H% x K' b8 m
3 ~8 W: e. {' ~* R3 P+ A
先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
/ \$ E3 t6 b; M2 X2 Y8 h
8 q7 ~( D) k- i: B
灰度预测
9 P4 E7 T9 {7 g4 D
# I9 u0 I7 F& k9 D$ ]
先说公式推导
* W8 D7 p' `7 x9 a* {+ j
mathType的公式好像无法在makedown上面显示,我就截图吧
3 D8 J6 S7 W+ G; L! q" g
: E( {; ?7 t) l+ q
8 Q: a/ p+ V/ y0 W& W8 ^. @# [
9 V* y0 U8 u" K' e0 r7 O9 a9 u) R
* v: P1 Q) N( N% Q
上面就是公式的推导,下面是matlab的代码
! N# ~( ?* \9 O4 k( F- O
% |4 l5 i% z. l/ T% e
clc,clear;
8 i2 N" _- K$ n3 O
syms a b;
! U& H8 G$ i+ R
c=[a b]';
- Y9 X$ }( Y5 N5 U1 C- F
%2012-2017
O* O! x. A- G6 T; N8 U4 F2 J* h
A=[ 135404 136072 136782 137462 138271 139008];
9 {& O5 Z. H( i2 \
B=cumsum(A); %原始数据累加
, r3 F- y8 W9 ?6 K- y9 Z1 x/ t" A
n=length(A);
% ~, J/ t5 v( u
for i=1
n-1)
3 k2 l% J9 B" Z6 R
C(i)=(B(i)+B(i+1))/2; %生成累加矩阵
& l9 b' `2 c% [. O1 y
end
& [9 e& Z, ^7 X# M9 p$ Y/ ]. w
%计算待定参数的值
b; S! u7 f4 i' c6 D) G, T3 e% @, }
D=A;D(1)=[];
0 C& w' `/ Y! v' e7 F
D=D';
, `% k1 \. X3 u2 }& G1 A3 ~
E=[-C;ones(1,n-1)];
# B5 J7 i2 b4 u! l
c=inv(E*E')*E*D;
* B u( f2 ~4 g1 _- g3 X
c=c';
6 z7 f, O; D5 ?2 Q* J$ J4 @7 A, n
a=c(1);b=c(2);
2 p9 z4 O) n2 ]1 i ~+ h
%预测后续数据
) X0 R" Q& H5 s& j2 h
F=[];F(1)=A(1);
5 s. p! }5 S" n7 a0 [5 y3 ?
for i=2
n+5) %只推测后5个数据,可以从此修改
2 F" c2 r' J% P! H2 e
F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
. ]* \) {8 V" c# R( e9 r4 j
end
' ?* G* N0 D$ @: u* J
G=[];G(1)=A(1);
' ~1 Q5 K- m3 J k4 b
for i=2
n+5) %只推测后5个数据,可以从此修改
7 C+ ~; h7 z$ y: t& }2 x- e
G(i)=F(i)-F(i-1); %得到预测出来的数据
7 u7 s" f3 }$ y# a' d0 H
end
2 R$ C6 p# \0 g7 n$ T$ b
t1=2012:2017;
- m5 L/ v3 N$ K4 y
t2=2012:2022; %多10组数据
0 i& X' x: F" N0 @2 V
G
4 N8 m, ^5 S [0 ^+ F
h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较
" [+ S' S) W6 d$ W' I$ o& {
set(h,'LineWidth',1.5);
1 F g$ c8 F5 E& n3 n( O
5 y5 y/ T5 D; O2 J: e4 p
这是Excel里面的人口数据
7 S- |4 ]9 X6 f5 E. j
& d9 E- {+ W7 [& ~8 @; h
最后得出的结论,感觉还是挺靠谱的。
+ T u/ U- d9 N* \/ c% W+ Y! m+ U
5 m: f( b% a' G' N1 X# ?
1 [. `! x% Q0 V. M4 \9 U* r& \1 N6 d
logistic模型
6 e7 m- C# v9 s; v0 O" A: m" ^& }
' y5 S# _1 j' I
前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。
3 D, A/ s! P" `
" R0 X, z. H$ L0 T
" U* F8 }4 m0 b5 J
clear
N$ D# ?4 ~: A+ T5 y3 l+ H
clc
! G2 @- M# B3 v& ~
% 读入人口数据(1971-2000年) 1997 - 2017
* d8 A x4 {3 z+ |
Y=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008];
1 O3 ~2 F. t+ Q4 p/ d
% 读入时间变量数据(t=年份-1970)
7 O' C: d+ e/ ^0 h) F4 i$ b# R, K2 s9 j5 f
T=1997:2017;
6 V0 L. }0 ^8 L/ R7 Z2 q* I% B
% 线性化处理
1 L% x2 k! [( y) N- C4 ]
for t = 1:21,
$ c- z! S; _% @: u n
x(t)=exp(-t);
+ p0 C W" O f
y(t)=1/Y(t);
6 X Y3 f# u3 ]* [
end
3 \4 L- o% B# E. Q. Y
% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值
1 [9 G7 n& e: E- _# C1 d3 V$ M
c=zeros(21,1)+1;
7 r3 U6 ^8 L- S8 z5 B
X=[c,x'];%相当于30个方程组,求解a和b 的值.
7 W8 B* Q4 S$ {. m5 _8 W
B=inv(X'*X)*X'*y'
4 m5 ?9 d/ Q3 H7 a- j& m3 O
for i=1:21,
) ]1 m8 q' w* Q. X6 u/ M8 e, H2 S
% 计算回归拟合值
7 \9 h$ e9 J j
z(i)=B(1,1)+B(2,1)*x(i);
. \5 u6 a( Y# d% F# Y
% 计算离差
e5 t, S. L; o1 i/ l$ @
s(i)=y(i)-sum(y)/21;
" _/ W d4 Q* Q$ m- i
% 计算误差
8 t" l+ d' K2 E: t+ i9 }2 d5 h0 D
w(i)=z(i)-y(i);
6 B7 o3 E T; l- M) j! ^
end
3 g: E. k- _# e) Y+ c* i
% 计算离差平方和S
1 ?' V% x6 ~6 h# K# d2 \
S=s*s';
7 C: L" P: ^) l4 i( z d& l
% 回归误差平方和Q
- O B. t( A" N3 o
Q=w*w';
7 x* F6 ]/ [* D
% 计算回归平方和U
2 y: V$ O( F/ e7 z# y% g
U=S-Q;
2 K5 }) F# \! S3 A. X7 c% w& F
% 计算,并输出F检验值
& j) g& T) v# _. E
F=28*U/Q
3 h8 ~" _: p7 y' ?0 d
% 计算非线性回归模型的拟合值
4 P7 L7 w# ?, s& S7 w- ]
for j=1:21,
2 o( ?; s& Z# s) \
p(j)=1/(B(1,1)+B(2,1)*exp(-j));
! c: T2 k, O, A1 Z
end
$ d1 z: u5 t: N+ `/ B
% 输出非线性回归模型的拟合曲线(Logisic曲线)
% t, ~; K1 y/ K& P0 J6 A* y& E
plot(T,Y,'r*')
' N( l6 ]7 z- F1 S
hold on
' C4 @3 m; Y/ G+ I
plot(T,p);
+ \9 F! r- F. E1 ~( k3 C* y1 A/ \
8 a; l- Q/ B4 [$ `4 L
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧
" g5 j' c$ R o
* E" O. m5 Q% {; b# H9 D
3 y5 L- n6 t+ G0 v! D# ~
6 l$ d T0 R* b% g; i3 q" c) K, f
" P9 f, s3 b8 a5 y2 x8 C
数学建模解题思路与方法.pptx
2019-4-12 16:29 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 2, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5