数学建模社区-数学中国
标题:
数模竞赛-人口问题
[打印本页]
作者:
杨利霞
时间:
2019-4-12 16:29
标题:
数模竞赛-人口问题
数模竞赛-人口问题
9 K: h V2 ^% M& d
4 o7 c; O( B4 ~
学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
9 A3 p0 l" M; b$ W' h8 C9 q
( ^6 J; ?2 }# P% ~/ R+ r
人口问题
; \! X9 p0 v3 c0 j% A
% m6 N0 o- Z7 x/ q! ?) @+ l/ B
在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。
- H# b) U. O" r
根据最后完成的《实施全面两孩政策人口变动测算总报告》,
. ` Z. ~. A3 [, F+ ~. w7 h& j
2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。
" x3 z0 g5 D8 a
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。
; s! b& F* ~% y
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。
& ?2 L' b, B- @1 a5 J6 x
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。
0 x' f! g) g4 m% T+ A# T
人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。
9 U( a4 {8 ?8 d+ w
由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。
- C+ ^+ y5 E V5 |' c" Q {
! C& f: ?" `( P6 M" `: q/ _- b
建立数学模型分析下列问题:
" q4 [+ u; T* u0 x
- q# _9 w: n+ a
(1) 在现有政策下预测未来人口的变化趋势。
7 p0 h, I0 k" ^& k
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。
( n# C S; j1 C, r. c
(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。
8 \6 ]( w& z3 j; q
(4) 依据你的研究给政府相关部门写一份800字左右的报告。
3 C$ k' s; k7 a, u
% V! L8 h4 Q1 K# p# M1 Z
拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。
" C3 z2 @9 b i, G5 t; [& e+ X* D1 s* |
8 o- o* {! k) c: U; }3 ]
人口预测模型
, B" u0 F0 e+ ^
' G- q$ {7 n4 y1 F% Y
先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
5 y4 e3 K- L5 W# X" |8 _
; y3 {4 Q5 V: W/ R$ _3 s! t5 w
灰度预测
+ [5 ^! B1 \1 `8 Y" k* w' [2 H2 {
" v* z0 \. ~& f$ H6 ^8 w
先说公式推导
2 e; s# p2 k$ q
mathType的公式好像无法在makedown上面显示,我就截图吧
7 p( I5 u! T- o6 |5 e
# X+ R5 t& x; }# K8 e2 Y. i
) ] }$ H; F" f# [' m
1 F2 n: k# a" L- n1 I1 K
5 R3 n! L; F" T& D
上面就是公式的推导,下面是matlab的代码
- p4 L* `. N; J# M3 B
4 a; x$ O# J9 q$ n" L
clc,clear;
& A2 g" ~9 J' P y
syms a b;
5 M% a' n: L9 q, V
c=[a b]';
+ H) b8 W a9 Y& j8 \# K9 @
%2012-2017
) s1 ^4 V. U/ \& D( A
A=[ 135404 136072 136782 137462 138271 139008];
9 W5 o) \* }& Q6 u$ `; f. R- _
B=cumsum(A); %原始数据累加
, D6 i& n+ W9 y9 e/ u
n=length(A);
& j6 n) {8 n1 c. o4 @& C0 y3 J8 O
for i=1
n-1)
" d% b2 J- g2 S% c
C(i)=(B(i)+B(i+1))/2; %生成累加矩阵
3 [1 f' u! I+ Z5 R5 ]4 y6 q5 i8 I
end
8 V Q3 h8 [4 l9 s' ?
%计算待定参数的值
+ f* D& D) T; Q" c: | W) `8 `
D=A;D(1)=[];
, O0 _& e) I+ _: T+ `2 }! B# g
D=D';
3 @- b9 \) R; s8 G/ o0 J4 |; s4 Y7 T) j
E=[-C;ones(1,n-1)];
, i/ i9 q; k0 J5 Z
c=inv(E*E')*E*D;
, H A' V3 }! w. w0 X% Z8 @0 c; n
c=c';
- N: @' K+ w% P# c; `- g: {
a=c(1);b=c(2);
. ~, [) y1 _: n% Q& I2 u, S& }
%预测后续数据
# z. C" J) _7 q, P9 | u; Z( n
F=[];F(1)=A(1);
7 A: I/ n& s$ E4 Z. D' ~5 Z; r6 s
for i=2
n+5) %只推测后5个数据,可以从此修改
! o+ p4 W1 e* |1 w' k
F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
0 W+ J0 [( }" P1 D* C
end
. X& v: L6 N6 a6 j0 c6 d4 \" ?4 I/ H
G=[];G(1)=A(1);
3 a% f( ^* d1 y+ ?8 d- S3 n
for i=2
n+5) %只推测后5个数据,可以从此修改
5 m$ p h4 }8 }
G(i)=F(i)-F(i-1); %得到预测出来的数据
( e; S/ h: r" }" H
end
8 p' U8 p$ A9 E2 Z
t1=2012:2017;
y# v5 R) b& i D& q& }# g; p, y6 C3 w
t2=2012:2022; %多10组数据
; [* Z$ ^" m: d. X( n
G
: j, r. P; Y1 Y4 K7 Q
h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较
' H d' a& `, E$ Y6 M) ?9 I
set(h,'LineWidth',1.5);
0 l# O8 }7 M! M/ i) ^9 V
. f& E- [$ k9 c0 W5 W
这是Excel里面的人口数据
7 s$ E. k( P+ Q+ z! P, J/ o
8 @! ~9 [/ A; j0 F
最后得出的结论,感觉还是挺靠谱的。
) C# t# ]' } `. G3 S9 x. O; O
6 w9 e" ?$ k# e0 x. f. A
: J$ }) L1 G! D6 U
logistic模型
! F3 P' Q$ J3 N6 U. M) h4 e
* L' A# E: `8 b' q: {
前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。
0 V) ]+ z2 x: _. \
5 N2 H- X. I8 I! a N( ~
- g- Y# W! K5 V
clear
7 ^5 H& i/ D, K4 ^. G+ a
clc
! Z: W# U1 u0 `' G I% Z6 G
% 读入人口数据(1971-2000年) 1997 - 2017
# l8 {: k1 d7 d) M! Z' T
Y=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008];
- H8 f3 g8 a! T' R& o
% 读入时间变量数据(t=年份-1970)
7 r; y& E/ e$ D$ }' A
T=1997:2017;
! l" {2 e- H1 ~4 a) t
% 线性化处理
1 S$ z1 U, ]- A3 U
for t = 1:21,
- @' x" Q+ @% z# t
x(t)=exp(-t);
$ A0 d* F }: k
y(t)=1/Y(t);
3 w9 V/ ~2 R1 P! i% ^) a$ _
end
3 }7 h- Q. K! X% O1 X/ j" B
% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值
3 ~% i3 X7 v- U" S
c=zeros(21,1)+1;
8 s8 p8 v/ v/ E- Y3 ]! m
X=[c,x'];%相当于30个方程组,求解a和b 的值.
; m% v8 Y& t& h/ k; i; G, }
B=inv(X'*X)*X'*y'
1 Y( N3 g7 A: c: c7 s$ y
for i=1:21,
0 g/ q) ]7 w- E% y/ q3 P4 D& Z/ \
% 计算回归拟合值
% Y$ n7 |/ w- H' L2 R2 v# r) }
z(i)=B(1,1)+B(2,1)*x(i);
( G" F& d# G' y& U f
% 计算离差
5 D! x @7 R5 `8 Z% F
s(i)=y(i)-sum(y)/21;
; j3 ]' Y) {8 M( _' ]0 s2 S
% 计算误差
, t3 d; |6 K. G# U% p# S. }, [2 _9 Z
w(i)=z(i)-y(i);
- m' H9 _5 K g9 w5 i' X
end
, I4 O+ T1 V* S& h
% 计算离差平方和S
8 Z/ B2 M9 P( W+ S6 s. i# ]7 E- R
S=s*s';
0 k' [# V: w: V q/ l" z6 A
% 回归误差平方和Q
* m' G' ]0 h+ T; P& s+ K' \
Q=w*w';
3 Q9 G8 _! K% |5 |. `; `& T
% 计算回归平方和U
$ c9 D% \. L# E* g) N- d
U=S-Q;
; i' ]1 e, T- s& b/ @, w, F0 {
% 计算,并输出F检验值
4 g: D3 t1 g6 ]% Q
F=28*U/Q
/ B5 n3 v" x: E
% 计算非线性回归模型的拟合值
& Y0 [) m6 r" Z
for j=1:21,
0 S4 G* ^- U% s( q% |! e
p(j)=1/(B(1,1)+B(2,1)*exp(-j));
% }6 g8 R, i0 [" e3 Y9 Y7 W
end
# ~, ]- F- m( O2 y, a" Z" N
% 输出非线性回归模型的拟合曲线(Logisic曲线)
9 O) [) g5 A+ _, u
plot(T,Y,'r*')
6 h- X: K M$ m
hold on
; ^( ^- U3 p9 d3 Z1 r
plot(T,p);
0 V* }9 J, R: L- }" j* D
* b# d7 ] @1 [# i/ j9 [, G+ ~
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧
6 h; V+ E' D7 F2 s- ?% d
. p/ z" Q4 [( V- y) W* {# P
9 ?: G" a4 B* W4 r
6 ~, |* f" A+ C/ A5 u
) Y# w- A" s. x, Z3 F* z
数学建模解题思路与方法.pptx
2019-4-12 16:29 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 2, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5