很抱歉写的不够详细,让一些初学者无法得知数据的来源。本篇文章基于之前的数学模型——人口增长模型(基于python)进行注释,主要解释上一篇文章中,个别需要计算的参数是如何得到的。

需要导入的库如下:

from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

上篇及本篇的数据如下所示。其中t表示年份。

data = pd.DataFrame({"x": [3.9, 5.3, 7.2, 9.6, 12.9, 17.1, 23.2, 31.4, 38.6, 50.2, 62.9, 76, 92, 105.7,                         122.8, 131.7, 150.7, 179.3, 203.2, 226.5, 248.7, 281.4],"t": range(22),"r": [0.2949, 0.3113, 0.2986, 0.2969, 0.2907, 0.3012, 0.3082, 0.2452, 0.2435, 0.242, 0.2051, 0.1914, 0.1614, 0.1457, 0.1059, 0.1059, 0.1579, 0.1464, 0.1161, 0.1004, 0.1104, 0.1349]
})

一、 对于初始的增长模型

这里假定了,人口增长率是一个定值(当然现实中肯定不是,在之后会一步步放开这个假设)。根据普通最小二乘回归,可得参数。算法函数如下。(这里不放算法的具体推到过程,后续会专门做一篇)

def ols(x, y):x_mean = np.mean(x)  # x的均值y_mean = np.mean(y)x_mean_square = np.array([(i - x_mean) ** 2 for i in x])  # 计算xi-x_bar的平方y_mean_square = np.array([(i - y_mean) ** 2 for i in y])  # 计算yi-y_bar的平方xy_mean = np.array([((i - x_mean) * (j - y_mean)) for i, j in zip(x, y)])b = xy_mean.sum() / x_mean_square.sum()a = y_mean - b * x_meanfitvalue = np.array([])fitvalue = np.append(fitvalue, [a + b * i for i in x])  # 计算拟合值y_pred_square = np.array([(i - j) ** 2 for i, j in zip(y, fitvalue)])  # 残差平方和SSRSE = np.sqrt(y_pred_square.sum() / (len(y) - 2))R_square = 1 - np.array(y_pred_square.sum() / np.sum([(i - y_mean) ** 2 for i in y]))return a, b, fitvalue, SE, R_square

这个函数输入一个自变量x和一个因变量y,输出结果中,a表示截距,b表示回归系数,fitvalue表示模型拟合的因变量的值,SE表示标准误,当需要使用此模型进行预测或者解释回归系数的显著性时(显著性:该自变量是否真的能影响因变量),就得好好观察这个数值。R_square表示拟合模型的可决系数,这个系数越接近于1,表明模型拟合的越好,也意味着,x和y之间存在着明显的线性关系。

根据以下代码,即可得出

x = data.x
y = np.log(x)
x0 = 6.0496
t = data.ta, b, fitvalue, SE, r2 = ols(t, y)
print("截距:{}\n回归系数:{}\n标准误:{}\nR方值:{}".format(a, b, SE, r2))

二、 对增长率进行改进的增长模型

        在此处,已经放开了前面“增长率是不变”的假设,上述数据集data中的变量r即为人口增长率的变化。通过下面的代码,可知,此时会发现模型的输出结果,会发现是负的,但并不是算错了,在上篇文章中,假定的变化率方程是,已经带有一个负号,所以结果是没有错的。

r = data.r
r0, r1, f1, se, R2 = ols(y=r, x=t)
print(r0, r1)

三、 Logistics模型

很遗憾,由于初始值等原因,我无法很好的复刻出书中给的数值,但这边依旧给出非线性最小二乘的估计过程,望读者见谅。

代码如下:

from scipy.optimize import curve_fitdef func(x, R, xm):return R * (1 - x / xm)x = data['x']
r = data['r']params = curve_fit(func, x, r)
r0 = params[0][0]
xm = params[0][1]
print(r0, xm)def logistics(x, t):return np.array(r0 * x * (1-x/xm) + 0 * t)T = np.arange(0, 30, 1)
x = odeint(logistics, 3.9, T)
plt.scatter(data['t'], data['x'], c='r')
plt.plot(x)
plt.show()

根据上述代码计算得到的两个参数分别为,代入模型的结果如下图所示。

此拟合图上篇文章给出的图差距不算太大,但没有之前拟合的那么好。

总结

由于作者能力有限,得到最终logistics模型与原文中有些不大相符,但各位读者应更加注重模型参数的拟合过程与建模的思想。

本篇完结!如有问题,请留言评论区或者私信,感谢各位支持。

【续】数学模型——人口增长模型相关推荐

  1. 机器学习(MACHINE LEARNING)MATLAB人口增长模型logistic参数确定

    文章目录 1 Logistic函数(又称sigmoid函数) 2 logistic回归模型 3 logistic 人口增长模型的参数确定 1 Logistic函数(又称sigmoid函数) Logis ...

  2. 【数学模型】模型整合

    文章目录 Chapter1 预测模型 1.1 线性回归模型 总体步骤 案例分析 1.2 赛跑模型 1.3 时间序列模型 1.4 人口模型 1 指数增长模型 参数 r r r 的估计 2 Logisti ...

  3. 人口增长模型_未来中国近一半人口将生活在20强城市,这是异想天开还是大势所趋?...

    原文链接:未来中国近一半人口将生活在20强城市,这是异想天开还是大势所趋? 山川网:按照国际通行划分标准,当一个国家或地区65岁及以上人口占比超过7%时,意味着进入老龄化:达到14%,为深度老龄化:超 ...

  4. 【续】RUP模型与XP模型

    接续上一篇文章的标题,本文主要分享一下XP模型的相关知识. XP模型 1.XP模型简介 Extreme Programming(极限编程,简称XP)是由KentBeck在1996年基于增量模型发展而提 ...

  5. 四旋翼数学模型——动力模型

    一.动力模型 动力模型研究四旋翼机体系 xyzxyzxyz 轴上的力矩与四个电机输入油门的关系.这个过程中,假设电池电压不变,那么油门(即PWM波占空比)越大,则电调输入的等效电压越大,电机与螺旋桨转 ...

  6. 城市流动劳动力的数学模型matlab,数学建模_人口预测

    2007高教社杯全国大学生数学建模竞赛 承诺书 我们仔细阅读了中国大学生数学建模竞赛的竞赛规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话.电子邮件.网上咨询等)与队外的任何人(包括 ...

  7. 数学模型复习资料---自用款--大家可以借鉴来复习--持续更新

    数学模型复习资料 第一章:建立数学模型 学习建模的意义: 对于解决现实问题,根据问题内在特点,做出必要假设,合理利用数学方法和工具,得到一个恰当的数学表述. 在一般工程技术领域,数学建模仍然大有用武之 ...

  8. 2020.08.20_Task1_基于逻辑斯特模型,实现分类预测

    Hello大家好,今天就来学习和了解一下逻辑斯特模型,以及它在机器学习领域中的一个重要用途:实现分类预测. 其实一开始看到标题是:"基于逻辑回归的分类预测",我挺疑惑的.一是完全不 ...

  9. 数学建模--预测类模型

    目录 一.中短期预测 1.灰色预测法 ①适用范围 ②模型实现 2.回归分析 ①适用范围 ②模型实现 3.时间序列分析 ①自适应滤波法 ②指数平滑法 ③移动平均法 4.微分方程 二.长期预测 1.神经网 ...

最新文章

  1. Redis学习之路(一)--下载安装redis
  2. 【0521模拟赛】小Z爱划水
  3. android 默认打开服务器地址,Android开发实现任意切换服务器地址
  4. 【加密解密】单表加密(Javascript实现)
  5. java监控activemq,ActiveMQ与Spring整合-监听消息
  6. 机器学习(6)--化无限为有限(二)
  7. 样例解释:1013 数素数 (20分)
  8. 获取浏览器高度_QQ浏览器违法收集用户信息,你的浏览器还安全吗?
  9. 斯坦福大学教育学院院长:学习本身就是一门学问
  10. php本地文件打包代码,PHP实战:几行代码轻松实现PHP文件打包下载zip
  11. 设置Android AI开发环境
  12. 如何使用 vCenter 警报自动监控 VSAN 组件阈值?
  13. java u0002_老玩法,输出金字塔
  14. 偏差、方差和噪声的权衡关系
  15. 欧姆龙PLC 通过CJ1W-EIP21实现在线编程
  16. Caused by: java.io.IOException: ZIP entry size is too large
  17. C++取字符串长度函数三种方法
  18. oracle匹配excel数据,ORACLE与excel的数据互传方法
  19. Hadoop 简介 及 安装
  20. 窄带高清赋能体育赛事,世界杯高清直播背后的技术变革

热门文章

  1. 「翻译」Vue3 相比 Vue2 都有哪些优化?
  2. 【加密】对称加密DES和非对称加密AES、数字签名|非对称加密--公钥和私钥的区别
  3. div2 649 D. Ehab‘s Last Corollary
  4. Java核心技术卷一 -第十二章:多线程
  5. nvm的安装配置教程
  6. Linux攻关之基础模块三 文件命令
  7. SR综述论文阅读的一点点笔记
  8. DeleteMapping GetMapping PutMapping
  9. 一周疫情对行业影响观察 | 对香港IPO冲击大于内地,纺织服装新增企业同比下滑超五成...
  10. 快速批量去除图片水印方法大全~~