90-预测分析-R语言实现-时间序列1

Python014

90-预测分析-R语言实现-时间序列1,第1张

时间序列(time series)是随机变量Y 1 、Y 2 、……Y t 的一个序列,它是由等距的时间点序列索引的。

一个时间序列的均值函数就是该时间序列在某个时间索引t上的期望值。一般情况下,某个时间序列在某个时间索引t 1 的均值并不等于该时间序列在另一个不同的时间索引t 2 的均值。

自协方差函数及自相关函数是衡量构成时间序列的随机变量在不同时间点上相互线性依赖性的两个重要函数。自相关函数通常缩略为ACF函数。ACF函数是对称的,但是无单位,其绝对值被数值1约束,即当两个时间序列索引之间的自相关度是1或-1,就代表两者之间存在完全线性依赖或相关,而当相关度是0时,就代表完全线性无关。

平稳性:实质描述的是一个时间序列的概率表现不会随着时间的流逝而改变。常用的平稳性的性质有严格平稳和弱平稳两个版本。tseries包的adf.test()函数可以检验时间序列的平稳性,返回的p值小于0.05则表示是平稳的。

白噪声是一个平稳过程,因为它的均值和方差都是常数。

随机漫步的均值是常数(不带漂移的随机漫步),但它的方差是随着时间的变化而不同的,因此它是不平稳的。

自回归模型(Autoregressive models, AR)来源于要让一个简单模型根据过去有限窗口时间里的最近值来解释某个时间序列当前值的想法。

自回归条件异方差模型:ARIMA模型的关键前提条件是,虽然序列本身是非平稳的,但是我们可以运用某个变换来获得一个平稳的序列。像这样为非平稳时间序列构建模型的方法之一是作出一个假设,假设该模型非平稳的原因是该模型的方差会以一种可预见的方式随时间变化,这样就可以把方差随时间的变化建模为一个自回归过程,这种模型被称为自回归条件异方差模型(ARCH)。加入了移动平均方差成分的ARCH模型称为广义自回归条件异方差模型(GARCH)。

任务:预测强烈地震

数据集:2000-2008年期间在希腊发生的强度大于里氏4.0级地震的时间序列。

不存在缺失值。

将经度和纬度之外的变量转换为数值型。

从图上可以看出,数据在30次左右波动,并且不存在总体向上的趋势。

通过尝试多个不同的组合来找到最优的阶数参数p,d,q,确定最优的准则是使用参数建模,能使模型的AIC值最小。

定义一个函数,它会针对某个阶数参数拟合出一个ARIMA模型,并返回模型的AIC值。如果某组参数导致模型无法收敛,就会产生错误,并且无法返回AIC,这时需要人为设置其AIC为无限大(InF)。

调用函数,选取最合适的模型。

然后找出最优的阶数参数:

得到最合适的模型为ARIMA(1, 1, 1)。再次使用最优参数训练模型。

使用forecast包预测未来值。

带颜色的条带是预测的置信区间,蓝色线表示均值,结果表示在后续的10个月里,地震的数量会有小幅增加。

检查自相关函数:

ACF绘图:虚线显示了一个95%的置信区间,特定延迟对应的ACF函数值如果处于该区间内,就不会被认为具有统计显著性(大于0)。这个ACF轮廓表明,针对本数据集,简单的AR(1)过程可能是一种合适的拟合方式。

PACF为偏自相关函数,是将时间延迟K的PACF定义为在消除了小于K的延迟中存在的任何相关性影响的情况下所产生的相关性。

par()函数是R里有关绘图的重要函数之一,以下是对par()函数说明内容的一些整理。描述:par函数用于设定或询问绘图参数。参数设定可通过par(参数名=取值)或par(赋值参数列表)的形式进行。用法:par(,no.readonly=FALSE)函数变量:“参数名=取值”或“赋值参数列表”形式的变量。no.readonly逻辑变量。如=TRUE且没有其他变量,则返回当前绘图设备下已设定好的绘图参数。参数:参数分为三类:一、仅仅用于询问不能被设定的参数:cin,cra,csi,cxy,dim。二、仅能通过par()设定参数:ask,fig,fin,lheight,mai,mar,mex,mfcol,mfrow,mfg,new,oma,omd,omi,pin,plt,ps,pty,usr,xlog,ylog。三、除了par(),也能在其他高级绘图函数中设定的参数。应用中,涉及这三类参数最多的是第三类,最少的是第一类。查看当前参数的赋值用par("参数名")第三类参数:adj调整函数text,mtext,title里文本串的位置。=0:文本串左对齐;=0.5(缺省):文本串居中;=1:文本串右对齐。ann=FALSE:不进行绘图解释标记(例如横轴标题等)。bg设置绘图区背景色。缺省为bg="transparent"。bty设置绘图边框的形式。="o"(缺省):四周边框;="l":左下边框;="7":右上边框;="c":上左下边框;="u":左下右边框;="]":上右下边框;="n";无边框。cex设置文本和符合的尺度。缺省为cex=1。cex.axis相对于当前的cex设置,放大坐标标记(坐标轴标记的数字)。缺省为cex.axis=1。cex.lab相对于当前的cex设置,放大坐标轴标题。缺省为cex.lab=1。cex.main相对于当前的cex设置,放大图标题。缺省为cex.main=1。cex.sub相对于当前的cex设置,放大图副标题。缺省为cex.sub=1。col设置绘图颜色。缺省为col="black"。col.axis设置坐标标记颜色。缺省为col.axis="black"。col.lab设置坐标轴标题颜色。缺省为col.lab="black"。col.main设置图标题颜色。缺省为col.main="black"。col.sub设置图副标题颜色。缺省为col.sub="black"。crt缺省为crt=0。err期望的错误报告程度(像该参数目前在R中未生效)。缺省为err=0。family设置文本字体字体族。缺省为family=""。fg设置前景色,主要用于坐标轴,边框,图形等,对坐标标记与坐标轴标题等外围无影响。缺省为fg="black"。font设置文本字体。=1(缺省):普通字体;=2:粗体;=3:斜体;=4:粗斜体;。font.axis设置坐标标记字体。font.lab设置坐标轴标题字体。font.main设置图标题字体。font.sub设置图副标题字体。lab设置坐标轴刻度数,lab=c(x,y,len)形式,目前len的设置在R中未生效。缺省为lab=c(5,5,7)。las设置坐标标记显示方向。=0(缺省):平行于坐标轴;=1:平行于x轴;=2:垂直于坐标轴;=3:平行于y轴。lend设置线结束端的形状(只有把线画很粗才能看出来)。=0(缺省):圆形;=1:“短”方形;=2:“长”方形。ljoin设置线交接处的性质(只有把线画很粗才能看出来)。=0(缺省):圆角;=1:方角;=2:切方角顶角。lmitre设置ljoin里方角向切方角顶角过渡的程度。缺省为lmitre=10。lty设置线的类型。=0:空白;=1:(缺省)实线;=2:短线虚线;=3:点虚线;=4:短线点虚线;=5:长线虚线;=6:长短线虚线。lwd设置线宽。缺省为lwd=1。mgp设置坐标轴标题,坐标标记和坐标轴边界宽度。mgp[1]影响坐标轴标题,mgp[2,3]影响坐标标记和坐标轴。缺省为mgp=c(3,1,0)。pch设置点的类型。缺省为pch=1。srt逆时针选择字符串,单位为°,只用于text函数。缺省srt=0。tck设置坐标刻度线长与方向(与图宽和高的较小者成比例)。缺省为tck="NA"。tcl设置坐标刻度线长与方向(与文本行高成比例)。缺省为tcl=-0.5。xaxs,yaxs设置坐标轴的范围。="r"(缺省):先将数据范围向双边扩大4%,然后绘图;="i":在原始数据范围内绘图。xaxt,yaxt设置坐标轴样式。="s"(缺省):标准样式;="n":不绘坐标轴。第二类函数:ask=TRUE:在新图绘制前进行提示。fig设定图在绘图设备中的位置,fig=c(x1,x2,y1,y2)的数值向量(0<=x1

obs:观察值

exp:期望值

test <- chisq.test(obs,p <- exp/sum(exp))

test$parameter <- c(df=你自己设置)

test$p.value <- pchisq(test$statistic,df=test$parameter,lower.tail = F)

test

这样就可以啦

亲测有效

直接卡方检验的结果

自己设置df的结果