数学建模社区-数学中国
标题:
数模竞赛-人口问题
[打印本页]
作者:
杨利霞
时间:
2019-4-12 16:29
标题:
数模竞赛-人口问题
数模竞赛-人口问题
% ]; Z5 U, Y" |
# ^' Y9 e# N5 [0 _% h1 d. x" E" L8 U0 @
学校最近的数学建模比赛,刚好组内同学也有想参加的,就一起报名了
" n* c4 p% d5 {4 |3 d$ X d) p
& V. K' {' q7 Z" S1 G
人口问题
, p. h( x1 ? U. x3 _1 \. F
) g) A2 B7 B6 }- H( ^
在全面两孩政策正式实施之前,卫计委牵头进行了全面两孩政策影响生育的预测研究。
. }2 C" Q) R* |
根据最后完成的《实施全面两孩政策人口变动测算总报告》,
4 u, F0 a U! c3 g2 t
2016年放开全面两孩,2017到2021年5年间增加两孩出生数将为1719.5万人,平均每年增加340万左右。
, |' U# V6 j& Z4 k( R& n% s0 R
其中,2017年出生人口总量将达到2109.9万人,2018年达到峰值,为2188.6万人。
, I! H6 c: F+ {/ X
国家统计局2018年01月18日公布数据显示,去年全国出生人口数量和人口出生率双双下降。
5 G3 B @) o1 A+ U
2017年全年共出生人口1723万人,比预测数据“少了387万人”,低于2016年的1786万人。
% L, R, C4 b! J, I
人口出生率也同样出现了明显下降,去年全国人口出生率为12.43‰,2016年这一数据为12.95‰。
; V# w) n* x. C2 t; v
由于与之前预测相差甚远,这个数据甚至令不少人口学界人士感到意外。
4 l; J/ D& f2 \+ Y
; {# a/ Y" q& z- a
建立数学模型分析下列问题:
! R& |6 [$ `, @, j& G+ r
; H; Q: J: L9 R3 V6 i% N
(1) 在现有政策下预测未来人口的变化趋势。
7 w$ _7 p3 Z. N! y
(2) 如何才可达到《实施全面两孩政策人口变动测算总报告》的预测效果。
. S: f7 s6 |- u. ?& m/ l3 x
(3) 分析人口变化的主要因素,建立人口增长与这些因素间的关系。
" n* W+ a1 X6 L+ L- v* ~3 w+ m1 t# D
(4) 依据你的研究给政府相关部门写一份800字左右的报告。
1 C' ?$ o6 P# }7 C) {9 n* c1 Z
- X" W* C2 E3 W( M% @1 Y! f( p' w p( w
拿到手感觉还不算难吧,网上应该有很多这样的分析,但是网上大部分都是时间有点久的,这个是考虑全面开放二胎后得人口变化,主要还是用近年的数据,这样得分会高一些。
' S% o6 p a# Z r$ W
7 a% g* V+ G( d/ k# ?
人口预测模型
5 X% G$ U; L9 x4 X# D, b X; t
_# Y0 [$ k6 g) l6 d
先说我查到的几个模型吧,指数模型,灰度预测模型(这个网上被吐槽得很水),logistic模型,Leslie矩阵,大概就这几个了,然后论文里面用得是灰度预测和logistic模型,Leslie矩阵我很想加进去,因为它用当前人口年龄结构来预测未来的人口,感觉很切合题目。但是没找到合适的,就不了了之了。
* ~) C% n/ y9 A: j) Z0 X) ~# v* H8 k) {
0 ^1 m0 R1 a- N! f
灰度预测
" o p' P1 b8 I
c: G: R8 j4 F$ w$ ]; N: l
先说公式推导
0 y$ f5 u: i, {4 {* D3 O5 D- o
mathType的公式好像无法在makedown上面显示,我就截图吧
% j8 p, _% E- ~# R
: R; Z7 q- z% y7 x/ }! a
. j& a: @8 R8 I7 \7 {
* V7 ]4 d& H& n4 n0 p- ^. t
S* q8 A# g! ?1 t
上面就是公式的推导,下面是matlab的代码
& I! n9 w$ S2 _ E' n
8 r) w" Z. @- D8 V+ j+ ]" G4 @3 w
clc,clear;
% ]2 V$ |9 S! M$ B
syms a b;
4 v2 B0 Q5 H$ @! q; u" c) e( R) g
c=[a b]';
! H1 o. y$ b% o2 |* D7 r
%2012-2017
- O4 _7 s4 V2 `) D# H
A=[ 135404 136072 136782 137462 138271 139008];
% l7 ]+ U5 Z( l" Q4 K b
B=cumsum(A); %原始数据累加
U7 L# l) d, n0 w* _# a6 P
n=length(A);
' M2 m# ?5 t3 B$ c( N9 ?* q
for i=1
n-1)
4 F4 ]9 w# m; r6 q0 c0 I
C(i)=(B(i)+B(i+1))/2; %生成累加矩阵
" ?6 w9 L. E' o% v/ i
end
3 G$ k% `. z6 ~2 V3 Q. W2 U
%计算待定参数的值
1 ?8 t, R- g5 o) I d& s
D=A;D(1)=[];
5 {# D% l9 x( k$ i/ J
D=D';
+ g6 m, l: R( p' z6 s
E=[-C;ones(1,n-1)];
, B" G' ?! }1 y
c=inv(E*E')*E*D;
3 w3 V/ D4 _5 Z' z- r& H6 u
c=c';
( d$ i3 N1 e, l
a=c(1);b=c(2);
8 g8 h6 ^+ I, u6 `" ^, ~
%预测后续数据
; _ t+ @" `" h
F=[];F(1)=A(1);
8 M( v& i9 u0 E. n/ X# O0 _9 X% z
for i=2
n+5) %只推测后5个数据,可以从此修改
$ h/ \& {3 M9 X K" w
F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
/ G/ R: L* H' N4 r- L
end
$ R4 L6 B9 M% {
G=[];G(1)=A(1);
4 w+ }) D) \) p
for i=2
n+5) %只推测后5个数据,可以从此修改
! e/ A3 c" Y0 g6 `" Z
G(i)=F(i)-F(i-1); %得到预测出来的数据
" M5 X1 ]2 D8 E1 Y* z
end
" I, A. o0 S, s) U
t1=2012:2017;
M. J3 n0 s2 v& I- P5 \, D8 A
t2=2012:2022; %多10组数据
6 a' h4 A8 x3 L8 B1 a/ E# t6 p$ I1 C
G
% C! [2 K, g I, c' y- a' P
h=plot(t1,A,'o',t2,G,'-'); %原始数据与预测数据的比较
" B+ M' i) |$ a) [8 @
set(h,'LineWidth',1.5);
3 C, d% V, h9 u8 X0 F9 |! }4 I/ J
9 ~1 a' D: v. J9 g: Z+ ^! i5 O
这是Excel里面的人口数据
9 N7 q! t- K' m2 f4 S2 Y
$ e, r) O* N% y' x' ?0 b! N8 P; H
最后得出的结论,感觉还是挺靠谱的。
7 P' `6 `0 k6 g/ p* l" N
) C( Q- H$ U/ I
2 W/ L6 D( H% u3 \: a& w
logistic模型
3 E4 w; [% _9 i+ Q
& m }" N+ P5 Q$ S! |9 e% X
前面说了灰度预测只适合用于样本量少的短期预测,logistic更适合中长期预测。
# F6 }8 h& o0 n: ~# H
2 L Z( P& _5 }1 N
6 [% e5 }' m8 J5 J
clear
+ ^& l9 H9 U/ m4 N2 C0 n \& T
clc
- e/ N' ?3 u1 x# R6 T8 {. C* H, G
% 读入人口数据(1971-2000年) 1997 - 2017
: A, T# y+ T8 ? ~1 n3 @4 Y& L
Y=[123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 133450 134091 134735 135404 136072 136782 137462 138271 139008];
! y$ ?) v3 A) V' u; m, ~1 }
% 读入时间变量数据(t=年份-1970)
1 K& o! I- C0 A3 X( m4 X3 R {/ q4 X/ n
T=1997:2017;
/ K, e8 @$ @3 y7 q6 x. A% o$ Z
% 线性化处理
! J+ ?4 w% f8 P
for t = 1:21,
( q0 _4 K7 k5 z4 r
x(t)=exp(-t);
( @2 }! |! s. L; n- J
y(t)=1/Y(t);
, Y' Q* E3 E5 B0 F4 C
end
$ L4 y9 A; {4 m9 D
% 计算,并输出回归系数B,即计算回归方程 y'=a+bx' 中的a和b的值
! m: t$ P( v2 D9 D
c=zeros(21,1)+1;
. K9 Q+ {3 V! d0 V8 m) p
X=[c,x'];%相当于30个方程组,求解a和b 的值.
, l3 e" Q# H( K
B=inv(X'*X)*X'*y'
% q' H8 p+ A" l
for i=1:21,
4 F2 i/ T* U6 }% d' _7 \" d- p
% 计算回归拟合值
; e# R( Z& ~# L2 u; A0 F" l
z(i)=B(1,1)+B(2,1)*x(i);
' u' k. ^& C% ?3 u3 e3 w& F
% 计算离差
6 U5 m) f4 V) [
s(i)=y(i)-sum(y)/21;
; x8 G+ M( d% T. t: a3 N
% 计算误差
3 h" q6 `6 O3 K9 T5 X
w(i)=z(i)-y(i);
, f- R2 G) p/ s+ W9 t
end
# I1 Y$ m9 j4 B4 S
% 计算离差平方和S
4 r" ^' Y4 i8 U6 s+ y- {7 @
S=s*s';
. i' r O/ n% J4 e4 e! G* V. P
% 回归误差平方和Q
0 C+ P! ]7 Z* s8 o
Q=w*w';
: T2 M h1 ~; u; B' p3 b
% 计算回归平方和U
3 f6 n# \9 Z# G5 L' p
U=S-Q;
, }: J; {1 `0 A P: |
% 计算,并输出F检验值
, z g( B; M5 }, g3 ^
F=28*U/Q
! B: _9 G8 D* a1 G6 j
% 计算非线性回归模型的拟合值
; O4 ^0 X' C5 K' J0 R
for j=1:21,
; {- Z, E1 z6 p; K( r
p(j)=1/(B(1,1)+B(2,1)*exp(-j));
' L3 M' ]0 a R: ^9 J9 p
end
" A# O- D+ e1 [ h/ F# t V
% 输出非线性回归模型的拟合曲线(Logisic曲线)
9 Y$ D2 L3 @3 }, l& X
plot(T,Y,'r*')
/ w! o8 Y& J; |/ Y
hold on
, C9 p% N2 K* I3 u# {1 y
plot(T,p);
/ r1 }0 _, w% N
; @0 B4 S" X; q2 q. n8 Q+ J
最后拟合出来的效果,无敌爆炸烂好吧,我也不知道为什么,等自己以后会了再来改吧
0 R6 g1 x' b# y; q! }
+ W" @8 p1 I0 T$ [
8 O* k* e1 H* z% q. ~$ \3 X
# M6 Q$ t! M% ~
/ r* L; K( X+ t& B$ `' Y2 @! j
数学建模解题思路与方法.pptx
2019-4-12 16:29 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 2, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5