目录

一、目的

二、数据来源和相关说明

1、数据来源

2、数据信息

3、变量信息

三、描述性分析

1、时序序列平稳性分析

2、描述统计

四、数据建模

1、全模型分析

2、模型选择

3、模型诊断

4、模型预测和评估

五、总结


一、目的

通过对某国失业率数据的分析,建立一个合理的计量经济学模型,从而挖掘失业率的变化规律,以及基于失业率的变化规律对以后的失业率作合理的预测。

二、数据来源和相关说明

1、数据来源

来源于某国1990年1月至2006年12月间每月的全国失业率(%)。

import os
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt# 参数设置
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width',300)
pd.set_option('display.max_info_columns',500)
plt.rcParams['font.sans-serif']=['SimHei'] #中文
plt.rcParams['axes.unicode_minus'] = False #负号
filePath = r'E:\CH8'
fileName = r'rate.csv'
# 获取数据
df_raw =  pd.read_csv(open(os.path.join(filePath, fileName)))

2、数据信息

共708条样本,包含2个变量。

print(df_raw.info())
print(df_raw.head())

3、变量信息

  • time:月份。
  • rate:失业率。历史经验表明,失业率的高低受月份的影响很大,不同月份的失业率没有直接的可比性,因此数据已提前做季节性调整,为后面的统计分析建模打下基础。

三、描述性分析

df_clean = df_raw.copy()
df_clean['time'] = df_clean['time'].astype(str)

1、时序序列平稳性分析

通过时间序列图来获取对失业率的直观印象,从图中看出:

  • 在过去27年(1990-2006)中,该国的失业率基本在5%以内,总体平均水平大约为2%,但是不同时期的失业率平均水平差异巨大。
  • 同时也明确表示,该失业率数据是非平稳的时间序列,对其直接进行统计分析的结果是缺乏预测能力的,因为只有基于平稳的时间序列数据的统计模型才具有良好的预测能力。
df_clean.plot(x='time', y='rate', legend=False)
plt.title('失业率的时间序列图')
plt.show()

因此,考虑对失业率的对数变化率进行分析,从其时间序列图可知:

  • 同原始数据(即失业率)相比,新数据(即失业率的对数变化率)的平稳性有了极大的改善。因此,在之后的分析中将着重考虑失业率的对数变化率。
df_clean['r'] = np.log(df_clean['rate']).diff().fillna(0)
df_clean.plot(x='time', y='r', legend=False)
plt.title('失业率对数变化率的时间序列图')
plt.show()

2、描述统计

利用箱状图对失业率以及失业率的对数变化率作简单的描述性分析,从图中可看出:

  • 原始的失业率:在过去的27年中,该国的平均失业率(以中位数计)大约为2%,处于非常低的水平,而失业率最高也没有超过5%。
  • 失业率的对数变化率:其月度平均失业率的对数变化率(以中位数计)大约为0,但是波动范围较大,最高接近15%,而最低超过-10%。
#失业率
df_clean.boxplot('rate')
plt.suptitle('')
plt.title('月度平均失业率的箱状图')
plt.show()
#失业率对数变化率
df_clean.boxplot('r')
plt.suptitle('')
plt.title('月度平均失业率对数变化率的箱状图')
plt.show()

四、数据建模

1、全模型分析

首先,观察失业率对数变化率的自相关系数图,从图中可看出:

  • 只有为数不多的几个自相关系数明显落在了阴影以外,即只有少数几个自相关系数是显著的。
  • 具体来说,四阶以后的自相关系数都不显著,因此首先考虑四阶的自回归模型。
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(df_clean['r'], lags=30, missing="drop")
plt.title('失业率对数变化率的自相关系数')
plt.show()

利用最小二乘法,可以获得全模型的估计结果,从中可发现:

  • T月(当月)失业率的对数变化率同T-1月微弱负相关,同T-2月高度正相关,而同T-3以及T-4月微弱正相关。
  • 表明,影响T月失业率对数变化率的主要是T-2月的失业率的对数变化率,即失业率对数变化率的影响的传递有一个月的滞后期,而且失业率的对数变化率对后期的影响是递减的,具体来说,约有41.53%的对数变化率会传递到间隔一个月的月份中。
from statsmodels.tsa.ar_model import AutoReg
model = AutoReg(df_clean['r'], lags=4, missing='drop').fit()
print( model.params)

2、模型选择

从上述全模型分析中发现,第3个和第4个系数非常小,有可能并不需要用到四阶的自回归模型,因此用AIC的方法来选择最优的阶数。

from statsmodels.tsa.ar_model import ar_select_order
maxlag = 30
ar_select = ar_select_order(df_clean['r'], maxlag=maxlag, ic='aic')
# AIC曲线
aic_dict = ar_select.aic
aics = []
for k,v in aic_dict.items():if k != 0:aics.append((max(k), v))
pd.DataFrame(aics, columns=['p', 'aic']).sort_values('p').plot(x='p', y='aic')

经过计算发现,根据AIC标准,二阶自回归模型是一个最优的选择。T月失业率的对数变化率同T-1月微弱负相关,而同T-2月高度正相关,这点与全模型的结论一致,但此模型更为简单。

# 最优模型
model_s = ar_select.model.fit()
print( model_s.params)

3、模型诊断

为保证模型的正确性,对该模型所分离出的残差项进行检验,发现残差项非常接近白噪音。其中没有明显的异常值,而且残差分布非常接近正态分布。这些都表明,AIC所挑选的模型经受住了检验,其拟合效果是比较理想的。

# 自相关检测
df_clean['resid'] = model_s.resid
plot_acf(df_clean['resid'], lags=30, alpha=0.05, missing='drop')
plt.title('残差的自相关系数')
# 时间趋势检测
df_clean.plot(x='time', y='resid')
plt.title('残差的时间序列图')
plt.show()
# 正态检测
from statsmodels.api import qqplot
qqplot(df_clean['resid'])
plt.title('残差的QQ图')
plt.show()

 

4、模型预测和评估

由于失业率的对数变化率数据涵盖了总共707个月份(首月不计),因此,考虑用第1至600个观测建立二阶自回归模型,然后用此模型对第601个观测进行预测。即利用前600个数据估计二阶自回归模型的系数,然后利用估计结果预测第601个月份的失业率。(对第601至707个月份中的每一个月都用其前600期的数据估计一个二阶自回归模型,然后利用估计结果预测当前月份的失业率)

t_train = 600 #训练集窗口
t_test = 1 #测试集窗口
predicts = []
for t in range(t_train+t_test+1, len(df_clean)): #变化率第一个数为无效值train = df_clean[t-t_train-1:t]model = AutoReg(train['r'], lags=2, missing='drop').fit()test = df_clean[t:t+t_test]subtime = str(test['time'].values[0])subtrue = test['r'].values[0]subpredict = model.forecast(t_test).values[0]predicts.append((subtime, subtrue, subpredict))

在得到预测值之后,拿其与真实值进行比较来判断预测是否准确,得到相对预测误差(RPE)为79.9%,表明模型的预测精度大约提高了20.1%,可见预测结果良好。为了更直观地对比预测值与真实值之间的关系,对二者作时间序列图。从图中看出,预测值与真实值之间是比较吻合的,而且在波动方向上表现得很一致。

predicts = pd.DataFrame(predicts, columns=['time', 'true', 'predict'])
rpe = np.mean((predicts['true'] - predicts['predict'])**2)/np.var(predicts['true'])
predicts.sort_values('time').plot(x='time', y=['true', 'predict'])
plt.title('真实值与预测值比较的时间序列图, RPE: %.4f' % rpe)
plt.show()

五、总结

从以上的分析结果,可看到失业率确实存在一定的变化规律。具体来说,T月失业率的对数变化率同T-1月微弱负相关,而同T-2月高度正相关。

《应用商务统计分析》第八章 自回归相关推荐

  1. 《应用商务统计分析》第一章 线性回归(报告)

    说明:本报告仅供学习参考,不代表任何投资建议.同时欢迎各位大佬指点交流~ 报告地址:因为博客里面的编辑界面不太友好(本人懒),所以将报告上传至了github:

  2. 《应用商务统计分析》第六章 泊松回归

    目录 一.目的 二.数据来源和相关说明 1.数据来源 2.数据信息 3.变量信息 三.描述性分析 1.描述统计 2.单因素分析 四.数据建模 1.全模型分析 2.模型选择 3.模型预测和评估 五.总结 ...

  3. [渝粤教育] 云南师范大学 东南亚南亚商务 参考 资料

    教育 -东南亚南亚商务-章节资料考试资料-云南师范大学[] 第一章导论 第一章导论 1.[单选题]中国将依托以下哪三个省份的区位优势,打造21世纪海上丝绸之路与陆上丝绸之路经济带有机衔接的重要门户? ...

  4. 全球及中国生产性服务产业动态展望与十四五建设现状规划报告2022版

    全球及中国生产性服务产业动态展望与十四五建设现状规划报告2022版 -------------------------------------  <出版单位>:鸿晟信合研究院[专员客服对接 ...

  5. ​【Python】Python中的经典时间序列预测模型总结

    时间序列预测是机器学习中一个经常被忽视的重要领域.时间序列在观察之间添加了显式的顺序依赖性:时间维度.这个额外的维度既是一个约束,也是一个提供额外信息来源的结构. 时间序列 时间序列分析 使用经典统计 ...

  6. 2017年高教社杯全国大学生数学建模竞赛题目 B题 “拍照赚钱”的任务定价

    "拍照赚钱"的任务定价分析 "拍照赚钱" 是一种需要会员在APP上领取任务,完成后赚取对任务所标定的酬金的自助服务模式,这种APP中任务定价是其核心要素.通过对 ...

  7. 南开大学数学院本科生课程信息汇总表(2013.11.19)

          数学院本科生课程信息汇总表         课程代码 课程名称 英文课程名称 课程组成员 学分 先导课程 参考教材 作者 出版社 1010011090 概率论 江一鸣 4 数学分析 概率论 ...

  8. 【R语言】回归分析案例:北京市商品房价格影响因素分析

    这一案例是王汉生老师<应用商务统计分析>方差分析章节的案例,主要对离散型变量进行了处理. 这里将连续型变量也加进来,进行协方差分析,建立完整的模型. 首先对房价进行对数变换,解决异方差问题 ...

  9. 调整泊松回归中的过度分散

    广义线性模型(Generalized Linear Models) The Poisson regression model naturally arises when we want to mode ...

最新文章

  1. Ruby常用比较操作符
  2. python自动化开发例子_Python自动化开发从浅入深-语言基础(常用模块)
  3. C语言高级编程:指针变量p指向的地址与p自身的地址
  4. hive命令出现问题Failed with exception Java.io.IOException:java.lang.IllegalArgumentException: java.NET.URI
  5. 8.霍夫变换:线条——介绍、参数模型、直线拟合_1
  6. Python内置库修炼——turtle绘图库指令大全
  7. android学习——popupWindow 在指定位置上的显示
  8. 基于Redis的微博关注与粉丝
  9. windows 7 下安装Oracle 9i 解决方法
  10. 数据结构视频教程 -《数据结构(邓俊辉)》
  11. 深刻理解Binder机制
  12. 显卡游戏温度测试软件,看谁最发烧 10款游戏的显卡温度测试
  13. 网络共享时 计算机名如何设置方法,win7怎么在局域网共享文件夹|win7局域网共享设置方法...
  14. eTS UI开发学习
  15. Qt QPainter::end: Painter ended whith 2 saced states
  16. 干货 | 区块链项目估值的逻辑和误区
  17. vue-cli3.0以上 + typeScript 教程学习指导(一) 入门typeScript
  18. LaTex科学论文写作
  19. AutoMapper 的使用
  20. Android:ping

热门文章

  1. 完美解决:Chrome无法显示鼠标
  2. 大学里挂了一科MySQL_大学里挂了科还能考研吗?挂科会产生哪些影响?
  3. 关于五子棋AI的一点小尝试
  4. [Python工具]pdf表格提取camelot安装教程
  5. JustAuth 1.15.9 版发布,支持飞书、喜马拉雅、企业微信网页登录
  6. 在JS里面获取浏览器sessionId
  7. html在手机显示时间,手机息屏显示时间如何设置?其实息屏显示App也能帮你实现...
  8. 软考高级哪个容易通过
  9. python常用运算符-各除法运算符
  10. 【白板动画制作软件】万彩手影大师教程 | 调整整个动画时长