数学建模社区-数学中国

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

作者: 杨利霞    时间: 2019-4-12 16:29
标题: 数模竞赛-人口问题
数模竞赛-人口问题
# X( S1 B5 B3 }8 ]. s/ e) W% u& {
学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
6 u) p0 b0 u6 g; D2 v9 l% M( M" c8 p+ \% l1 u( P
人口问题# M& F: U5 t6 i( C, U3 Q
$ n" s- @& x; J2 x( m, d6 f
在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。 $ Q0 k. z  N3 ~0 a) n0 ^
根据最后完成的《实施全面两孩政策人口变动测算总报告》, $ d7 o9 o5 b+ K& E' r
2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。 : }! d  s: ]' t/ W
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。 ( r- S# e7 o4 o7 `5 c
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。   ^; `& @8 ]+ s* J3 S/ p: w  p' M1 w. J
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。
* ]1 e) ~# Y" J$ O( u: c/ ?人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。 5 v( L7 g6 P4 k7 x- I9 S1 a
由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。$ \, t2 ^4 t0 T8 I0 A' N2 \

- x6 `- N0 h4 h! t2 T9 L" |建立数学模型分析下列问题:
5 a& ?: H# h5 l1 M/ R* I/ x6 E) L# s( z, i0 u! N
(1) 在现有政策下预测未来人口的变化趋势。 ' T4 O, A( `1 j! @
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。 + W) @7 g4 G" @9 Y5 w, z
(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。   g& o2 F! y# n4 Q8 c  r2 y' f
(4) 依据你的研究给政府相关部门写一份800字左右的报告。
* a+ [; q  G2 i. B6 {; g6 [+ T% e. }3 a& R6 g% C4 U
拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。
1 m/ Z5 g8 v8 W+ `4 Z. V$ W, C/ o, O7 l# r; {" O
人口预测模型# g1 B3 q6 m9 \& v
+ ?/ a; T; n8 F9 \! ^0 O* J( N
先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
% m( {7 ]: f  d* W* ~$ P" L. e& i+ J- Z! n0 w8 y) o* [
灰度预测8 o2 O, i+ @  ^0 S( f9 z: ]

2 E4 P$ Y* X; `5 M" d4 a先说公式推导
4 m6 }5 d6 w! o8 X% d- {% fmathType的公式好像无法在makedown上面显示,我就截图吧 ! y* l' Q/ O: E6 z- |
* U& _! g3 m9 Z& c$ W1 W
7 i7 S* S1 R2 j) u2 \9 }

, ^) U& G  ?3 I. M1 }' G2 W6 H5 q2 ~6 r7 z
上面就是公式的推导,下面是matlab的代码. c' k) O( D2 m; F
' e" n2 I+ M/ Q. \/ l+ D
clc,clear;  
1 l- C/ i% @- g; r+ h# Dsyms a b;  $ c0 n. Q8 g5 g1 [2 @1 f
c=[a b]';  
# P5 J4 [/ `" W1 x' R7 E3 w%2012-2017- C( n8 Q/ g) R
A=[ 135404   136072   136782   137462   138271   139008];0 m( p' Q' S$ g1 H
B=cumsum(A);  %原始数据累加  % M# k: q  c! Y, Y& v
n=length(A);  5 m, X# [0 F2 D7 u8 u) b/ j
for i=1n-1)  ( k' `2 r3 h2 _2 q
    C(i)=(B(i)+B(i+1))/2; %生成累加矩阵  ! l: q- `* C8 r; I  [3 l7 X
end  * b* P3 a, C: O, m8 h1 |% t2 y% u
%计算待定参数的值  2 h% ~7 y- ~8 I* y4 C$ x1 ?' ^. K
D=A;D(1)=[];  
; @- X" Y# ^# Z" S6 j- uD=D';  4 X4 w! A9 I1 e1 [% n
E=[-C;ones(1,n-1)];  $ p: n" o5 s1 i3 |3 @7 y
c=inv(E*E')*E*D;  
, D( l  W7 M0 Z$ ?6 m" @c=c';  
" e1 B) b) W6 K- N* F1 Fa=c(1);b=c(2);  / y3 m, a4 u: W7 V& U* x, K
%预测后续数据  ! _* v  Y& x+ v
F=[];F(1)=A(1);  
% Q, T- N! L9 ~" n5 |) Kfor i=2n+5)  %只推测后5个数据,可以从此修改  
: G$ s- `2 ]: t8 O+ r; b    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;  
% x( d; o: B- t, Q0 Eend  " ~9 o' K! Z. n
G=[];G(1)=A(1);  
& a- m: I7 F* z- M& ^% Yfor i=2n+5)  %只推测后5个数据,可以从此修改  
7 V4 U/ G/ Y, t8 J: o# h    G(i)=F(i)-F(i-1);  %得到预测出来的数据  
4 H; t# P$ l- {. c% a( }4 jend  - e3 E* M& x, ^9 [5 S! D: q! X) @& r
t1=2012:2017;  1 q9 f2 \3 |4 K/ h( a, O, t4 w  }+ R
t2=2012:2022;  %多10组数据  0 b* a) ?& d- k: F3 T
G
4 o) S9 u- e5 q1 i1 W( ~h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较  
+ i! W" f) n8 f  L) lset(h,'LineWidth',1.5);- ]) D& H* \0 D4 D

+ q0 S+ A4 Y$ U  ]1 j) v这是Excel里面的人口数据
6 M1 @2 F. K3 _& Y% R8 R
7 H# N- Q2 E5 Z7 g- A最后得出的结论,感觉还是挺靠谱的。 + Y6 E; T' ^8 ^& D# @
1 q1 u; I  V$ [+ M( H
" @5 S$ t; C* D; G. n# ~
logistic模型
* S$ m, s4 }& l* Q' Q! \% X% O' W. U( p  t! p' w
前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。
' \% F6 t4 Y! T6 _. P: {9 R- A8 c0 Y/ |& O: m1 h, \
( c. d) A& a1 K( b6 q$ E
clear  
" i. D+ D. c- S% ~( p- sclc  
6 N- |5 q1 E( b% 读入人口数据(1971-2000年)  1997 - 2017
7 j* X5 E0 }( ?! o( B- n. vY=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008]; 3 k; \2 J  a& N, i* ~* S
% 读入时间变量数据(t=年份-1970)  
+ N; z8 d9 V7 T& y, q3 c( _: w+ j) aT=1997:2017;
0 E, Y2 Z; z, v. y) i( M% 线性化处理  
6 ~# `% W5 {- p. M7 ofor t = 1:21,   
% y8 u4 O: Z) L   x(t)=exp(-t);  
& B) J0 w4 O+ o9 s+ ^   y(t)=1/Y(t);  
% h: M  h- {0 j. x" e* C& Iend  ; n" E! c7 Y: {, k( s
% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值  
7 l) n9 a7 l, Q. nc=zeros(21,1)+1;  
5 R& B1 @0 G2 ^. m3 {" e  rX=[c,x'];%相当于30个方程组,求解a和b 的值.  
& I0 U" q( O0 k# |$ ?, O2 r$ hB=inv(X'*X)*X'*y'  
; t, D# \/ D! [/ z) Sfor i=1:21,  4 M: V# A# J( G" a. X
% 计算回归拟合值      
- |5 \% |0 `- @+ G1 I% p    z(i)=B(1,1)+B(2,1)*x(i);    k! u, @. n& V0 l+ N, b
% 计算离差  ' }& c- l8 Z' B. L
    s(i)=y(i)-sum(y)/21;  ) O9 v1 H/ l' ^4 |4 D4 y
% 计算误差      1 a! O+ ?: \. Z
    w(i)=z(i)-y(i);  & H+ d6 w' t5 n! p0 i0 p# {
end  * s) ]/ u# a  |" b, y: O  x( w: c- K
% 计算离差平方和S  
- H! f+ B7 y  J5 pS=s*s';  5 K: x; \2 V8 }4 g
% 回归误差平方和Q  
! c9 M. o# ~9 w6 E, E' T. p! SQ=w*w';  5 a4 }* i# z* A" j
% 计算回归平方和U  
' S$ H5 f- o# n+ BU=S-Q;  3 b- L+ f" y7 O; E: Z9 K. I
% 计算,并输出F检验值  
" K) D3 Z; f* k6 {, F4 VF=28*U/Q    r. F( J% f" D$ H, w- |
% 计算非线性回归模型的拟合值
0 [' f6 F% E2 u* m( r+ U1 wfor j=1:21,  " \' S% ?, g0 I+ c: U- P  V
    p(j)=1/(B(1,1)+B(2,1)*exp(-j));  # i+ i% W5 |% G  }6 U' j
end  
3 w' ?% L$ o( O+ P% 输出非线性回归模型的拟合曲线(Logisic曲线)  4 D" K. e) ]; c; L
plot(T,Y,'r*')) L: i( `7 B1 t; [& v5 o1 E
hold on9 M# Q7 F# M! ]5 ^; I8 W1 j& N4 g
plot(T,p);2 g, k8 H' X% q+ ^
, c8 r( Q) H  ^0 G* B# o! L* ]( N
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧
( \) W! z) n3 I; l% D6 E0 s+ X. N4 x! }6 s, \1 `1 Z) }: q' u  G

& e$ r+ |  `1 V4 M8 _6 d; r- `, T- G# Q$ v7 {, N0 Z

( n" M$ A6 ]6 L) i: p

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

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






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