数学建模社区-数学中国
标题:
数模竞赛-人口问题
[打印本页]
作者:
杨利霞
时间:
2019-4-12 16:29
标题:
数模竞赛-人口问题
数模竞赛-人口问题
7 G, H" a' }/ A1 g
* s& } n% k9 a, _
学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
! n. F' F. z$ N2 w' U1 J
8 o" S4 V& q: h2 M
人口问题
; _) R& Y# v5 i: E, z& X1 ~
( }3 B8 u( R- a
在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。
) F& w2 H0 y. e2 k/ d( p" j' \
根据最后完成的《实施全面两孩政策人口变动测算总报告》,
$ ?/ {0 i: S( b
2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。
. y. M& M; [, J+ D( D
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。
& R4 Q7 e$ [0 M! T" s4 d
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。
: N8 B( ?8 n: |: ^
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。
" |( g- ~/ s7 o% \% ?
人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。
, F. V. I4 |2 [/ H- D
由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。
) z9 I0 b) n$ Y* \& x8 a0 @, N
+ k7 u4 ?- D* }6 m
建立数学模型分析下列问题:
( p) X! ~2 K/ z: e5 u
, A8 [1 R# l* F" Y
(1) 在现有政策下预测未来人口的变化趋势。
! R5 @0 D) ]" D8 Z7 W/ F0 u( W
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。
/ v/ S Z# Q, L8 \9 Y$ v8 Q
(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。
( i% ~6 \+ p' j/ k+ v1 S
(4) 依据你的研究给政府相关部门写一份800字左右的报告。
/ U+ `+ e- G2 l1 J% c
. ?# O0 T% q8 f3 L
拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。
5 W: e3 B7 K# `0 }; E2 J% v: J8 x
# L" w7 H' _( v3 p( O! L$ v1 Z
人口预测模型
& i4 Z: ^" a% n [! k1 a
" }6 g7 `4 j# S0 }6 J8 P
先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
/ x6 |; v, t7 [- |# z5 c: n! I
2 N' g8 a% H- u) w3 `' o
灰度预测
0 ^1 }( l+ D+ a+ Z
+ m3 O. O$ J8 ^: c
先说公式推导
- A9 E+ g; d1 Q$ j
mathType的公式好像无法在makedown上面显示,我就截图吧
4 H8 }) J, i" D r {2 a3 U" p& ~, y
Y. z6 q* t6 m' X: V
; v& T' o2 @( x* b/ Q: Z
5 m+ U4 e$ S1 q. _" n% |/ h" F
9 O$ w' |/ v6 ]3 N$ V/ ?
上面就是公式的推导,下面是matlab的代码
' z5 a9 P+ b- k/ d/ @: L
$ i6 o! `. {0 Y: e7 m- C. T
clc,clear;
# W& s; G' S! i
syms a b;
, k: p: q+ t6 l1 d- A& Z
c=[a b]';
, O. t, w1 y$ G
%2012-2017
: f7 o9 H' Z9 M$ `5 p2 j& O& i. l
A=[ 135404 136072 136782 137462 138271 139008];
2 f& B" E# F; v8 B4 K& k
B=cumsum(A); %原始数据累加
% k/ y+ Y5 k, G" H# E2 u* l
n=length(A);
9 c+ e o1 |% B5 [: U) G
for i=1
n-1)
4 u# C2 \6 [ X4 s0 k" g
C(i)=(B(i)+B(i+1))/2; %生成累加矩阵
: u9 v0 h/ t" r% O7 W
end
) X# ?" \" q) ^( Y: R
%计算待定参数的值
2 s: e- h- {0 ]4 s0 h' j$ y o
D=A;D(1)=[];
4 h s* z. w( @. g9 Q6 V1 J0 I' N
D=D';
1 e1 n ?1 h% t4 M
E=[-C;ones(1,n-1)];
6 r6 C5 _# r6 P8 A/ F3 j1 [
c=inv(E*E')*E*D;
, @' ?# s0 K& z7 y, }2 @! f
c=c';
( u: k, @: ]( M/ ]; Q
a=c(1);b=c(2);
) J4 W. M9 G1 d2 h' Z3 t5 [, C
%预测后续数据
5 u- [" O3 B) a. p, I, y+ u
F=[];F(1)=A(1);
9 x B$ W2 ~" F' h0 K1 S
for i=2
n+5) %只推测后5个数据,可以从此修改
: ~. S" a4 x: X* n" b4 j
F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
, }' P1 T1 g4 I F; G5 @0 S
end
8 W, q! O; E/ ~3 ]: M" P) o; H/ N
G=[];G(1)=A(1);
b; n# O3 B% s# |* C( W
for i=2
n+5) %只推测后5个数据,可以从此修改
5 U; d1 h- o8 k4 B$ l- B" H
G(i)=F(i)-F(i-1); %得到预测出来的数据
3 ^+ T1 h3 r! ?
end
, D0 K& R$ ^+ O- n( P+ Q
t1=2012:2017;
`7 w8 r8 {7 r' Q
t2=2012:2022; %多10组数据
7 N$ l2 t- t- r- d3 h$ I8 i
G
" H5 K) O t& w2 z( c1 f
h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较
, h& z# e( Y( c8 Z0 Q
set(h,'LineWidth',1.5);
( [+ v5 R4 H, E, {6 z
/ Q; u# |4 J2 w7 |# _9 V0 ^
这是Excel里面的人口数据
5 q: t9 o, s6 `& Y4 @3 M8 s; p
! l9 g( e! m+ r2 U
最后得出的结论,感觉还是挺靠谱的。
0 M6 g, l5 I7 M) A
' b; d& W# F4 T x* f2 n' a2 k* m* a- a
6 {5 n) `; i5 U
logistic模型
% V, F: K7 K: E, @# A, X5 L
) Y1 Y% ~/ A. ]* B' }# S& ]
前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。
& g/ u5 B! B6 x8 Y' `3 M5 `8 o
3 V- ~5 b' E' [( \0 v4 a5 o# N
# B" Y U* f9 K% o
clear
2 a9 V; |4 e* D* c+ k8 z6 o# s" K
clc
; X. u1 [/ Y4 _" w/ ~( c, W
% 读入人口数据(1971-2000年) 1997 - 2017
% |! E! L! n4 J3 P% l+ p& [
Y=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008];
! W& ^* b1 J: G8 J$ U
% 读入时间变量数据(t=年份-1970)
( s" j6 ?; @+ G2 ^8 W7 @0 w; a. j3 b
T=1997:2017;
0 S0 [7 ?( M4 _8 Q7 {; |3 t9 F% _
% 线性化处理
# l" {+ \6 ` a9 o
for t = 1:21,
& E+ i! ~" ?2 Y
x(t)=exp(-t);
9 I* K: C. N! o/ K- @
y(t)=1/Y(t);
) _ m/ K+ C4 d V' z0 w
end
* b3 H1 U0 L: @8 T: }. e
% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值
' _) J" l, ?$ ~( ?1 S/ T' o- H$ M
c=zeros(21,1)+1;
. }( @' v2 s( P# w& G s3 f+ K7 j% ^
X=[c,x'];%相当于30个方程组,求解a和b 的值.
6 o- i$ w+ A# U
B=inv(X'*X)*X'*y'
% b4 R e5 u; P- Q0 m/ Z$ d8 Z% G
for i=1:21,
" I# s6 I" r! W( z( Y/ V
% 计算回归拟合值
9 I2 P$ b0 w' P: k$ K T
z(i)=B(1,1)+B(2,1)*x(i);
; z8 M8 B/ b/ `# t
% 计算离差
; V% D4 a& P% k1 @9 e% j- ~6 q
s(i)=y(i)-sum(y)/21;
; J3 c& S8 E% ^
% 计算误差
) B, ^5 G: y: q
w(i)=z(i)-y(i);
1 |. G6 n" _7 ~/ B" ]" ^8 S0 I
end
3 V5 M3 v( M' y4 V) i5 O
% 计算离差平方和S
. w% H- q9 o* O" \( c5 E( B, K' t1 j
S=s*s';
+ a3 m" y; h. W( I
% 回归误差平方和Q
* A i' v6 v1 O! o
Q=w*w';
# k8 R( b; w/ V: Z) x
% 计算回归平方和U
0 Q4 O0 {8 w. ]
U=S-Q;
! D; H* k4 E) d0 D, q
% 计算,并输出F检验值
! a O2 v5 m* S
F=28*U/Q
. C7 `; ^# c1 M5 Z' W
% 计算非线性回归模型的拟合值
2 z' ` b, U) {8 P. l1 f
for j=1:21,
, s4 c3 L1 [+ E
p(j)=1/(B(1,1)+B(2,1)*exp(-j));
1 j8 e7 i. k$ L; R( P7 Y) ~
end
. z, V4 k3 Z- u% U4 M. f
% 输出非线性回归模型的拟合曲线(Logisic曲线)
/ W% m, v8 E, v
plot(T,Y,'r*')
$ t. q E$ f2 |: \- [, l7 K0 z
hold on
/ a; `* z! D! e& g, m
plot(T,p);
$ o" N2 R7 \; D) d$ W$ q+ O! P
7 L. j; a& n& m" O4 F; D9 M
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧
) [$ J9 @9 h3 R- j5 |# S
# Z$ o$ n( V4 k4 p' U- Q2 h
5 {6 i* @0 l! g9 r- c. e
+ Q* y1 F* b+ S' m: u
5 Z4 ~6 S1 T, p# n7 e/ ~
数学建模解题思路与方法.pptx
2019-4-12 16:29 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 2, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5