前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型

数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型

作者头像
拓端
发布2023-08-31 15:52:15
1740
发布2023-08-31 15:52:15
举报
文章被收录于专栏:拓端tecdat拓端tecdat

全文链接:http://tecdat.cn/?p=32496

人口流动与迁移,作为人类产生以来就存在的一种社会现象,伴随着人类文明的不断进步从未间断点击文末“阅读原文”获取完整代码数据)。

相关视频

人力资源是社会文明进步、人民富裕幸福、国家繁荣昌盛的核心推动力量。当前,我国经济正处于从以政府主导的投资驱动型的经济“旧常态”向以市场需求为主导的经济“新常态”转型过渡期。

本文帮助客户综合运用R语言灰色预测模型和logistic逻辑回归模型,以及综合运用ARIMA模型和logistic模型,得到武汉市外省流入人口规模查看文末了解数据免费获取方式的预测。

文献回顾

国内关于流动人口的定量预测模型有很多,如马尔萨斯模型[1]、马尔可夫链模型[2]、指数平滑预测模型[3]、宋健模型、BP神经网络模型、单变量的双曲模型[4]、系统动力学模型、Leslie人口预测模型[5]、年龄移算法[6-8]以及CPPS 软件预测等。然而,在经济学和管理学范畴内﹐最为主要的有三种,分别是:

第一,灰色预测模型。1982年,我国学者邓聚龙教授创立了灰色系统理论﹐灰色系统理论的研究对象是“部分信息已知,部分信息未知”的“小样本”、“贫信息”不确定性系统。GM(1,1)模型是最常用的一种灰色模型,由一个只含单变量的一阶微分方程构成的模型。国内不少学者运用灰色预测模型对我国总人口规模的发展趋势进行预测[9-11]。还有一部分学者从区域发展的角度出发,构建了一系列城市人口或区域流动人口的灰色预测模型[12一14]。为了减少预测的误差,学者们进一步修正了GM(1,1)灰色预测模型,构建了“等维灰数递补动态预测”模型对人口进行定量预测[15] 。

第二,Logistic曲线模型。Logistic曲线呈S形,称为生长曲线。Logistic方程最早由比利时数学家P. F. Verhult于1838年提出。但长期埋没﹐直到20世纪20年代被生物学家与人口统计学家R.Pearl和L.J. Reed重新发现。经不断完善和发展,现广泛用于人口和商业分析中。我国学者多运用Logistic模型预测我国某地区的人口数量、流动人口规模等[16—20]

第三,时间序列模型。时间序列分析方法是伯克斯和詹金斯(Box-Jenkins)1976年提出的。

数据来源与处理

将武汉市外省流入人口的时间序列记为{Yt}。

武汉市外来流入人口数据表


点击标题查阅往期内容

01

02

03

04

ARIMA模型

为降低原始数据随机波动的影响,先要对原始数据进行平滑处理,本文采用常用的三点移动平均法。计算公式如下:

首端点数据进行移动平均时,Yt-1取Yt,末端点数据进行移动平均时,Yt+1取Yt。

另外,由于取对数,不会改变数据的性质和关系,且得到的数据易消除异方差。

代码语言:javascript
复制

acf(dy)

然后用自相关图检查序列的平稳性,最后发现一阶差分后的序列是平稳的。 下面对平稳性序列 建立 模型 ,偏相关系数在滞后1期后很快地趋向于0,所以取p=1 ,自相关系数图形具有拖尾性,所以初步判断为ar(1)模型。

参数估计

代码语言:javascript
复制
arima(dy,order=c(p,0,q) )
which.min(aiclist$AIC)

尝试不同的p和q的值,得出最优AIC的模型。

从AIC的结果来看,arima(2,1,1)模型拥有最小的AIC值,因此为最优模型,因此将arima(2,1,1)模型作为最优模型。

对残差序列进行白噪声检验,通常考虑残差序列的随机性,即用伯克斯.皮尔斯 提出的I统计量进行检验,用修正的I统计量:

代码语言:javascript
复制
Box.test(model$residuals,type="Ljung")

在这里X-squared的值就是0.21927,概率值为0.6396,说明拒绝原假设。 犯第一类错误的概率为0.6396,这说明残差序列相互独立即为白噪声序列的概率很大,故不能拒绝残差序列是一个白噪声序列,检验通过。

单位根平稳性检验 检验

建立arima模型进行比较

ARIMA模型预测

代码语言:javascript
复制
pred=predict(model, 15)$pred

绘制预测序列时间图

代码语言:javascript
复制
plot( pred,type="b" ,main="ARIMA模型预测")

而arima模型预测的数据开始波动较大,到后面有逐渐平稳的趋势。

建立灰色模型GM(1,1)对应的函数

代码语言:javascript
复制
GM11<-function(x0,t,x){     #x0为输入训练数据序列列,t为预测个数,x为原始数据(训练数据+测试集)  
  x1<-cumsum(x0) #一次累加生成序列1-AG0序列  
  b<-numeric(length(x0)-1)  
  n<-length(x0)-1  
  for(i in 1:n){ #生成x1的紧邻均值生成序列  
    b[i]<--(x1[i]+x1[i+1])/2  
    b} #得序列b,即为x1的紧邻均值生成序列  
  D<-numeric(length(x0)-1)  
  D[]<-1  
  B<-cbind(b,D)  
  BT<-t(B)#做逆矩阵

计算相对误差

代码语言:javascript
复制
e2<-numeric(length(x0))  
  for(s in 1:length(x0)){  
    e2[s]<-(abs(e[s])/x0[s]) #得相对误差  
  }  
  cat("相对残差:",'\n',e2,'\n','\n')  
  cat("残差平方和=",sum(e^2),'\n')  
  cat("平均相对误差=",sum(e2)/(length(e2)-1)*100,"%",'\n')  
  cat("相对精度=",(1-(sum(e2)/(length(e2)-1)))*100,"%",'\n','\n')

后验差比值检验

代码语言:javascript
复制
avge<-mean(abs(e));esum<-sum((abs(e)-avge)^2);evar=esum/(length(e)-1);se=sqrt(evar)  #计算残差的方差

画出输入序列x0的预测序列及x0的比较图像

代码语言:javascript
复制
plot(xy,col='blue',type='b',pch=16,xlab='时间序列',ylab='值')  
  points(x,col='red',type='b',pch=4)

拟合模型

代码语言:javascript
复制
GM11(train,length(mynx),mynx)

预测15年的人口数

代码语言:javascript
复制

GM11(train,length(myn

logistic逻辑回归模型

代码语言:javascript
复制
glm(as.numeric(yy[1:lengt

预测

代码语言:javascript
复制
predict(model,newd
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全文链接:http://tecdat.cn/?p=32496
  • 文献回顾
  • 数据来源与处理
    • 武汉市外来流入人口数据表
    • ARIMA模型
    • 参数估计
    • 单位根平稳性检验 检验
    • 建立arima模型进行比较
    • ARIMA模型预测
    • 绘制预测序列时间图
    • 建立灰色模型GM(1,1)对应的函数
    • 计算相对误差
    • 后验差比值检验
    • 画出输入序列x0的预测序列及x0的比较图像
    • 拟合模型
    • 预测15年的人口数
    • logistic逻辑回归模型
    • 预测
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档