从人口模型的研究例说数学建模的模型求解

(整期优先)网络出版时间:2022-06-08
/ 4

从人口模型的研究例说数学建模的模型求解

曾翰举

福建省三明第一中学 福建三明 353000

摘要:参数拟合可以在不同阶段以不同方法进行,拟合效果有差别。拟合效果可以用残差图来观察,但是预测效果必须用新的数据来观察,不能用“用于拟合的数据集”来检验“预测效果”。对于关键参数,有时需要人为给定一个先验值,但是严谨起见需要观察这个先验值的波动对结果的影响是否明显,最好选取一个效果最优的值。非线性拟合相较线性拟合不仅更难计算,而且对于数据的波动反应更为敏感。线性化是一个非常有效的方式,但是二者的结果并不能完全等价,只是两种近似方法。观察误差大小时,应结合绝对误差和相对误差综合观察。

关键词:人口模型;数学建模;模型求解

在研究了人口模型的基本假设,符号约定,模型建立,以及模型求解后,我们的求解还停留在符号和理论层面,我们如果需要确定参数,就需要基于历史数据。

下面这张表格,是我国大陆地区常住人口数的数据,它的数据来源有三个,分别是:户籍统计数、年度人口普查数据、非普查年度的年度人口抽样调查的推算数据。

年份

中国大陆总人口

单位:万人

年份

中国大陆总人口

单位:万人

年份

中国大陆总人口

单位:万人

1949

54167

1982

101654

2000

126743

1950

55196

1983

103008

2001

127627

1951

56300

1984

104357

2002

128453

1955

61465

1985

105851

2003

129227

1960

66207

1986

107507

2004

129988

1965

72538

1987

109300

2005

130756

1970

82992

1988

111026

2006

131448

1971

85229

1989

112704

2007

132129

1972

87177

1990

114333

2008

132802

1973

89211

1991

115823

2009

133450

1974

90859

1992

117171

2010

134091

1975

92420

1993

118517

2011

134735

1976

93717

1994

119517

2012

135404

1977

94974

1995

121121

2013

136072

1978

96259

1996

122389

2014

136782

1979

97542

1997

123626

2015

137462

1980

98705

1998

124761

2016

139408

1981

100072

1999

125909



有了数据表以后,我们完全可以以年份62a00ce1f0bfb_html_67ef45de8496e46f.gif 为横坐标,以人口数62a00ce1f0bfb_html_c2c81ad3269ddae5.gif 为纵坐标,来画出数据的散点图,如图6.1

62a00ce1f0bfb_html_849f90b51d65d7e5.png

(图6.1)

画出散点图后我们很容易看出一个趋势,即一开始先快速增加,然后缓慢增加。当然如果我们这个散点图的比例尺画的不太好,我们可能就看不出来这种趋势,例如将纵轴比例尺压得足够扁,那么整幅散点图看上去像是一个线性趋势,这其实是一个误区。我们要调整,看能够以什么样的比例尺,能够更好的反映数据的趋势。

1.参数拟合:离散模型拟合

首先拟合人口模型在离散形式下的参数,形式为62a00ce1f0bfb_html_bffc14a1bd0f8141.gif ,它是一个数列的递推关系式,由前一项确定后一项,参数是62a00ce1f0bfb_html_840cf41a10329631.gif62a00ce1f0bfb_html_81ea55b7d6090f17.gif 。面对这个递推关系式我们表格中的前面几组数据是没有办法使用的,因为这个递推关系是由前一项推后一项,但在表格的前几年当中并非年年都有数据,这是由自然条件,还有社会环境所决定,所以这几年的数据我们没有办法使用。从1970到2015年间这样的数据是每年都有,所以我们用1970到2015年间的数据拟合我们的参数62a00ce1f0bfb_html_840cf41a10329631.gif62a00ce1f0bfb_html_81ea55b7d6090f17.gif

我们先做一个代数变形,把62a00ce1f0bfb_html_bbd20af257f2dbb2.gif 除到左边去,之所以要除,是因为我们希望左边的式子62a00ce1f0bfb_html_6c351dfe63332bf5.gif 与右边62a00ce1f0bfb_html_26130b67cddc6a18.gif 成一个线性关系,即:62a00ce1f0bfb_html_608894ede2d9b262.gif

它确定了一个线性关系,这个线性关系的一次项系数是62a00ce1f0bfb_html_8beb110dbfae0e85.gif ,常数项是62a00ce1f0bfb_html_b67b9a3789a68943.gif 。我们通过对①式进行最小二乘的线性拟合,可以求出62a00ce1f0bfb_html_8beb110dbfae0e85.gif62a00ce1f0bfb_html_b67b9a3789a68943.gif 的值,进而能求出62a00ce1f0bfb_html_840cf41a10329631.gif62a00ce1f0bfb_html_81ea55b7d6090f17.gif

62a00ce1f0bfb_html_b5c61f3cf11993a5.gif62a00ce1f0bfb_html_e271625624966596.gif

因为62a00ce1f0bfb_html_81ea55b7d6090f17.gif 的单位是万人,这意味着我们通过这种方式能够得到一个人口上限的预测值,即人口上限62a00ce1f0bfb_html_81ea55b7d6090f17.gif 为15亿4333万人。我们看拟合效果的好坏,即下个图6.2,当中的蓝色的点是真实数据,黄色的点是从1970年作为数列的首项,利用我们关系式推算出来的数据。

62a00ce1f0bfb_html_1c92bd8acf17b6da.png

(图6.2)

我们可以看到实际数据离我们递推关系推算出来的数据很接近,说明拟合的效果还是不错的。



如果我们以1970年为首项,进行计算,一直推算到2016年的人口数,得到62a00ce1f0bfb_html_ca52ead3499372ef.gif 为14亿人,这距离国家统计局发布的正式数据13亿8271万的相对误差只有1.51%。

但是如果我们直接利用我们最小二乘法拟合得到的关系式:

62a00ce1f0bfb_html_7a7cde1fae0d6096.gif

直接代入2015年的真实数据,去预测2016年的人口数据,我们得到的预测值为13亿8000万人,距离2016年实际数据13亿8271万人误差仅为0.082%,就是小数点后4位的误差,所以实际上我们利用离散模型的递推关系,从哪里开始推算,对于我们的预测效果其实是差别是很大的。

2.参数拟合:连续模型拟合(1)

我们也可以拟合连续模型当中的参数,62a00ce1f0bfb_html_85060889b2fb408e.gif 这是我们的连续模型,其中参数是62a00ce1f0bfb_html_2384f801b50bf49c.gif62a00ce1f0bfb_html_c4e2f17d7c2ef984.gif ,是两个正待定常数。数据是62a00ce1f0bfb_html_e7fba94cd0a3e942.gif62a00ce1f0bfb_html_86e167999e1027fe.gif ,其横坐标是第62a00ce1f0bfb_html_4b75c64fcaf4a547.gif 个年份,纵坐标是对应的人口数的真实值,62a00ce1f0bfb_html_89076421ee31034d.gif 是总共有多少个数据。我们试图用62a00ce1f0bfb_html_87a9d714e2ccf5f.gif62a00ce1f0bfb_html_94ab504cfe979633.gif 这些数据来拟合62a00ce1f0bfb_html_3c17729570a09e42.gif 中的参数62a00ce1f0bfb_html_2384f801b50bf49c.gif62a00ce1f0bfb_html_c4e2f17d7c2ef984.gif

首先我们做一个代数变形,62a00ce1f0bfb_html_7ba0ba71d547b4f1.gif 除到左边去,62a00ce1f0bfb_html_9617df850531d377.gif

再做一个近似处理,62a00ce1f0bfb_html_480bb7ee343a0e64.gif

这里的近似原理是用平均变化率来逼近瞬时变化率,即62a00ce1f0bfb_html_2b1a1a3e0debadc4.gif ,在这样的变形下,如果把左边62a00ce1f0bfb_html_d54dafa8f3641a4.gif 当成一个整体,然后把右边的62a00ce1f0bfb_html_3513844a30c240ee.gif 也当成一个整体,二者之间就是一个线性的关系,线性关系就可以使用最小二乘法的线性组合去找到62a00ce1f0bfb_html_d69243e201548529.gif 的值和62a00ce1f0bfb_html_c7e6cf464759477c.gif 的值,进而求出62a00ce1f0bfb_html_2384f801b50bf49c.gif62a00ce1f0bfb_html_c4e2f17d7c2ef984.gif 的值。

那为了要对62a00ce1f0bfb_html_320743d38ded2933.gif 这个式子进行线性回归,拟合为一次函数关系62a00ce1f0bfb_html_3fd7fa52d0c003c2.gif ,我们需要将一开始的数据进行变换,变换的方式如下:

62a00ce1f0bfb_html_42d2888938e6c134.gif62a00ce1f0bfb_html_131cc8df306c2e5a.gif ,则有:

62a00ce1f0bfb_html_86ac48bca7c7d57.png

即:现在的62a00ce1f0bfb_html_ae978341e81747fc.gif 是我们62a00ce1f0bfb_html_dee9d634a9d37d47.gif 这个式子的观察值,现在的62a00ce1f0bfb_html_f20cacd087022438.gif 是我们62a00ce1f0bfb_html_3325d6233c6ec8b6.gif 这个式子的观察值,我们试图用数据点62a00ce1f0bfb_html_30e3441b1eb0c387.gif 去拟合连续模型当中的参数62a00ce1f0bfb_html_2384f801b50bf49c.gif62a00ce1f0bfb_html_c4e2f17d7c2ef984.gif ,现在变成用数据点62a00ce1f0bfb_html_e717b32de86afa87.gif 用最小二乘法线性拟合一个线性函数。

拟合的结果为62a00ce1f0bfb_html_6da9dc4553215697.gif62a00ce1f0bfb_html_50869fa4a213867d.gif62a00ce1f0bfb_html_bac6ab1f9e1c90d3.gif 的单位为万人,此时我们的62a00ce1f0bfb_html_bac6ab1f9e1c90d3.gif 用连续模型拟合出来人口极限数量实际是16亿2128万人,这和离散模型当中的结果是有差异的,预示着我们使用不同的拟合方式,对连续模型的拟合,对离散模型的拟合,所预测出来的极限人口数其实是不一样的。

3.参数拟合:连续模型拟合(2)

当然,我们对连续模型62a00ce1f0bfb_html_c88729db10cfdf4e.gif 进行参数拟合,所用的方法并不是唯一的。我们知道,使用微分方程求62a00ce1f0bfb_html_ca23a08833dae5d9.gif 的解析解为62a00ce1f0bfb_html_c1432154b05578cd.gif 。我们可以直接用数据62a00ce1f0bfb_html_bc695f2a81d967f9.gif 对这个非线性函数进行最小二乘法的拟合,由于拟合过程是非线性的,所以需要解的是一个非线性方程组。

这里直接给出拟合结果62a00ce1f0bfb_html_747fbaf2564a2f28.gif 万人,这意味着这种方式预测到的人口数量极限约为10亿8111万人。这个解肯定与我们现实是不符的,因为我们目前的人口数就已经比这个数据多了。

但如果去掉前10个数据进行拟合得到的结果,就会变大一些,此时62a00ce1f0bfb_html_ddad1d08e364cd4a.gif ;去掉前20个数据会更大,得到62a00ce1f0bfb_html_c4c3a4e485cf5688.gif ;去掉前30个数据时62a00ce1f0bfb_html_5eb3dcff57b0c62f.gif ;去掉前40个数据,得到62a00ce1f0bfb_html_3794ca89ee5ae581.gif ,去掉前50个数据,62a00ce1f0bfb_html_1e22f0de862755a5.gif 。我们看到62a00ce1f0bfb_html_d0a5a51301654368.gif 的拟合值在逐渐增大,越来越接近于真实的情况。

这意味着什么呢?这意味着如果我们直接对非线性的目标函数进行最小二乘拟合的话,受数据波动的影响就比较大。因为我们都知道1970年前后的数据,对现在的指导意义远没有2010年以后的数据对现在的指导意义大,所以我们去掉前面的数据,只用后面的数据进行迎合,效果就会越来越好。所以如果数据是以时间序列的方式进行呈现的,那么较早的数据就会造成拟合效果的失真,这种失真会随着非线性的增加而增加,也就是我们平时说的混沌效应。

4.参数拟合:连续模型拟合(3)

我们当然还可以将非线性方程转化为线性方程,用线性化的方法来拟合62a00ce1f0bfb_html_ca23a08833dae5d9.gif 的参数。

62a00ce1f0bfb_html_c3ec047983afd1bc.png

我们还是一样对62a00ce1f0bfb_html_ca23a08833dae5d9.gif 的非线性代数式作一个代数变形,在我们推导62a00ce1f0bfb_html_ca23a08833dae5d9.gif 的解析式的时候得到62a00ce1f0bfb_html_b842e3570aedfa60.gif ,在这个代数式当中将左侧62a00ce1f0bfb_html_2cce3b050cbab0fd.gif 当作一个整体62a00ce1f0bfb_html_abfd67ab733d222c.gif ,右边62a00ce1f0bfb_html_79cad2148588d75.gif 当作一个整体62a00ce1f0bfb_html_ae5913b2cc3709f2.gif ,那么就会出现一个线性关系式62a00ce1f0bfb_html_72da957b231203a5.gif ,我们通过最小二乘法线性拟合来确定62a00ce1f0bfb_html_170a51dd22f36515.gif 还有62a00ce1f0bfb_html_c56e1b196c6258b4.gif 的值。

我们首先做一个变换,62a00ce1f0bfb_html_211b03331091b9ed.gif62a00ce1f0bfb_html_8e3c29790987b334.gif ,现在的62a00ce1f0bfb_html_580a304d23a23db6.gif62a00ce1f0bfb_html_8fbde99851581923.gif 的观察值,现在的62a00ce1f0bfb_html_88daff8b81e54dda.gif 是代数式62a00ce1f0bfb_html_74a3d15d7bce81af.gif 左边的观测值,通过62a00ce1f0bfb_html_959310ee24c9e9d1.gif ,我们用最小二乘法进行线性拟合就可以确定62a00ce1f0bfb_html_170a51dd22f36515.gif 还有62a00ce1f0bfb_html_c56e1b196c6258b4.gif 的值。

但此时需要先知道62a00ce1f0bfb_html_abed57165b044ea.gif 的值才能得到62a00ce1f0bfb_html_617f1b4fcd798b1d.gif ,也才能够得到62a00ce1f0bfb_html_959310ee24c9e9d1.gif 这个数据点,有了62a00ce1f0bfb_html_959310ee24c9e9d1.gif 我们才能够做最小二乘法,再进行线性拟合来得到62a00ce1f0bfb_html_abed57165b044ea.gif 的值。即我们要得到62a00ce1f0bfb_html_abed57165b044ea.gif 的值,得先有62a00ce1f0bfb_html_959310ee24c9e9d1.gif ,但要把62a00ce1f0bfb_html_2043e993b266574b.gif 变成62a00ce1f0bfb_html_959310ee24c9e9d1.gif 我们得先知道62a00ce1f0bfb_html_abed57165b044ea.gif 的值,这里面出现了一个循环论证式的矛盾。

那这个矛盾怎么去解决呢?其实我们可以先人为的确定62a00ce1f0bfb_html_abed57165b044ea.gif 大概的值,然后用最小二乘法去拟合,拟合之后再看一看效果。

当然这里面我们不能只指定一个62a00ce1f0bfb_html_abed57165b044ea.gif 值,我们要指定多个不同的62a00ce1f0bfb_html_abed57165b044ea.gif 值,去看它们的效果对比,如果出现62a00ce1f0bfb_html_abed57165b044ea.gif 值在一定范围内变化,对拟合效果影响不大,那这种方法就是比较合理的,我们可以确定一个62a00ce1f0bfb_html_abed57165b044ea.gif 的大概的值,就可以得到一个比较可靠的拟合效果。但是假如62a00ce1f0bfb_html_abed57165b044ea.gif 的微小波动会带来拟合效果的巨大变化,那么我们这种方式就不可以,因为我们人为确定62a00ce1f0bfb_html_abed57165b044ea.gif 大概的值总会有一个偏差,如果这个模型相对于62a00ce1f0bfb_html_abed57165b044ea.gif 这个参数来说,变化是非常敏感的,那么我们人为设定的62a00ce1f0bfb_html_abed57165b044ea.gif 值所带来的偏差就会引起拟合效果的巨大偏差,那这个时候这种方法就是不能采用。

我们分别取62a00ce1f0bfb_html_abed57165b044ea.gif 等于14亿,15亿,16亿和17亿,来看拟合的效果对比和残差图(如图6.3),其中蓝色的点是真实的数据点,红色的点用相应的62a00ce1f0bfb_html_c03beb6718967a39.gif 值进行拟合计算出来的参数带入到62a00ce1f0bfb_html_93c3406fa0f0a0e4.gif 这个函数当中后,所得到的62a00ce1f0bfb_html_3bce7950c5a12771.gif 的函数图像。

62a00ce1f0bfb_html_e8e841c55fd7e1e1.png

(图6.3)

我们可以看到,当62a00ce1f0bfb_html_c03beb6718967a39.gif 在15亿,16亿和17亿这个范围内变化的是时候,它的残差图的变化并不是特别的明显,基本上都是正负62a00ce1f0bfb_html_707b58c0566bcf29.gif 万~62a00ce1f0bfb_html_e3defb54dfa2f1ed.gif 万这个范围,所以我们认为这个模型对于62a00ce1f0bfb_html_c03beb6718967a39.gif 这个参数来说比较稳健,即我们只要取一个大一点的62a00ce1f0bfb_html_c03beb6718967a39.gif 的值,就可以得到一个比较好的拟合效果。并且当我们对比一下残差图,还是能比较哪个62a00ce1f0bfb_html_c03beb6718967a39.gif 值是相对来说拟合的更好一些。

实际上从残差图可以看得出来,当62a00ce1f0bfb_html_c03beb6718967a39.gif 为16亿的时候,它的拟合效果会相对来说更好一些。相应的62a00ce1f0bfb_html_3bce7950c5a12771.gif 的解析式为这样一个函数:62a00ce1f0bfb_html_fb19eb134fb78f85.gif

当我们把2016带进去,我们去预测2016年的人口数,得到的数值,就是13亿9408万人,国家统计局发布的真实数据13亿8271万人,相对误差是62a00ce1f0bfb_html_abeec05bb687ea3d.gif

不仅如此,如果我们仔细的去观察这个残差图,其实我们可以看出很多事情,比如说什么时候是出国热,什么时候是回国热,什么时候是自然灾害,哪几年有社会运动,包括计划生育的影响等等,其实都可以通过残差图看出来,因为残差图是真实值和拟合值之间的差距,拟合值预示着这一年应该是多少,但真实值就反映真实的情况。所以真实情况与拟合的情况会有偏差,那这个偏差的原因是什么呢?就有可能是各种各样的社会事件。

5.总结

参数拟合可以在不同阶段以不同方式进行,拟合效果会有差别。比方说我们可以在解出解析解之前,针对方程来进行参数拟合,也可以再解出解析解之后,针对函数进行参数拟合。我们可以针对连续函数模型进行参数拟合,可以针对离散模型。我们可以对非线性函数进行参数拟合,也可以线性化以后再进行参数拟合,都是可以的。但是计算的路径,还有拟合效果会有差别,需要各位同学仔细体会。

考察拟合效果好与不好的时候,我们可以用残差图来观察,但是我们来考察预测效果好与不好,我们就不能够用“用于拟合”的数据来检验,因为如果你模型拟合的还不错的话,你的拟合效果肯定是可以的,你拿拟合效果来预测效果,这是不合理的。所以加入我们是用1949~2015年的数据来进行拟合,那我们用来检验预测效果就要用2016年的数据来检验。

对于关键的参数,有的时候需要人为的指定一个先验值,但是严谨起见,需要观察这个先验值的波动对结果的影响是不是明显,当然最好选取一个效果比较优的一个检验值,是最好的。

非线性拟合较线性拟合不仅更难以计算,而且对于数据的波动反应更为敏感,线性化是一个非常有效的方式。但是二者的结果并不完全等价,这只是两种近似的方法,

再有就是观察误差大小的时候,我们应该结合绝对误差和相对误差综合来观察,不能够只观察绝对误差,当然也不能够只观察相对误差。

参考文献

[1]李虎.中学数学建模案例分析——以人口模型为例.福建中学数学,2020(4):43-46.

[2]王勇.Logistic人口模型的求解问题.哈尔滨商业大学学报(自然科学版),2006,(5).58-59.

[3]任运平,杨建雅.LOGISTIC人口模型的改进[J].河东学刊,1999,(6).23-24.

注:三明市基础教育科学研究2020年度(专项)课题立项《数学建模在高中数学课堂教学中的实践研究》立项编号:JYKT-20003研究成果(3)


7/7