时间序列

分析简介

定义

时间序列

  • 按照时间的顺序把随机事件变化发展的过程记录下来就构成一个时间序列

时间序列分析

  • 对时间序列进行观察、研究,寻找它变化发展的规律,预测它将来的走势就是时间序列分析

随机序列

  • 按时间顺序排列的一组随机变量:X1,X2,X3……

观察值序列

  • 随机序列的n个有序观察值,称之为序列长度为n的观察值序列x1,x2,x3……

随机序列与观察值序列的关系

  • 关系:观察值序列是随机序列的一个样本实现
  • 研究目的:揭示随机时序的性质
  • 实现手段:都是通过分析观察值序列的性质,由观察值序列的性质来推断随机序列的性质

方法

描述性时间序列分析

  • 通过直观的数据比较火绘图观测,寻找序列中蕴含的发展规律
  • 分析方法
  • 操作简单、直观有效
  • 只能展示非常明显的规律性

统计时序分析

  • 统计时序分析:利用数理统计学的基本原理,分析序列值内在的相关关系
  • 频域时序分析
  • 频谱分析/谱分析
  • 原理
  • 假设任何一种无趋势的时间序列都可以分解成若干不同频率的周期波动
  • 特点
  • 非常有用的动态数据分析方法
  • 分析方法复杂,结果抽象,有一定的使用局限性
  • 时域时序分析
  • 原理
  • 时间的发展通常都具有一定的惯性,这种惯性用语言来描述就是序列值之间存在着一定的行管关系,这种关系通常具有某种统计规律
  • 目的
  • 寻找出序列值之间相关关系的统计规律,并拟合出适当的数学模型来描述这种规律,进而利用这个拟合模型预测序列未来的走势
  • 特点
  • 理论基础扎实,操作步骤规范,分析结果易于解释,是时间序列分析的主流方法
  • 步骤
  • 考察观察值序列的特征
  • 根据序列的特征选择适当的拟合模型
  • 根据序列的观察数据确定模型的口径
  • 检验模型、优化模型
  • 利用拟合好的模型来推断序列其他的统计性质或预测序列将来的发展

R program

下载

安装包

  • install.packages(“forecast”)

加载包

  • library(forecast)

符号

  • 变量赋值
  • <- 或 -> 或 =
  • 运算符
  • != 不等于 !x 非x x|y x或y

帮助

  • help©
  • ?ts

直接录入

  • price=从(101,82,66,35,31,7)
#安装
install.packages("forecast")

#调用
library(forecast)

#直接录入
#1、行输入
price=c(101,82,66,35,31,7)
  #调用c函数,以行输入的方式将6个时序数据依次赋值给了price这个变量。
  #price以向量的方式存储了这6个数据。
price=ts(price,start=c(2005,1),frequency=12)
  #指定price为时间序列变量,而且序列名仍然取为price。
  #start选项指定序列的起始读入时间。本例指定从2005年1月开始读入。
  #frequency选项指定序列每年读入的数据频率。本例指定读入频率为每年12个,即该序列为月度数据。
  #半年度数据:frequency=2,季度数据:frequency=4,周数据:frequency=52,日数据:frequency=365
price
  #查看时间序列price的情况。运行结果:行标识为年份,列标识为月份,对应的6个月度的时间序列值。

#2、列输入
price=scan()
  #调用scan函数,以列输入的方式将6个时序数据以列的方式读入(手工输入/复制粘贴)
price=ts(price,start=c(2005,1),frequency=12)
price

#外部数据文件转换
x=read.table("E:/data/file1.csv",sep=",",header=T)
  #sep指定制表分隔符。
  #txt格式:sep="\t":文件以制表符分隔
  #csv格式:sep=",":文件以逗号分隔
  #header指定第一行是否包含变量名。
  #herder=TURE(简写T):要转换的文本文件第一行包含变量名
  #header=FALSE(简写F):赶文件第一行不包含文件名
  #x$year或x$yield:“数据框$变量名”:单独考察这两个变量的特征
x
x$Year

#变换
y=log(x$yield)
y
  #时间序列分析得到观察值序列,分析观察值序列的某个函数变换,比如对数变换序列

#子集
z=subset(x,Year>1925,select=yield)
z

#缺失值插值
a=c(1:7)
  #将1~7赋值给变量a
a[4]<NA
  #定义序列a第四个序列值为缺失值
a

#线性插值
y1=na.approx(a)
y1

#样条插值
y2=na.spline(a)
y2
  #线性插值和样条插值都可以由zoo程序包提供。