多元时间序列数据

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多元时间序列数据
来自百度文库常用的一元时间序列方法 单位根及协整检验 VARX模型与状态空间模型
时间序列是指数据按照一定时间间隔收集的一系列数据. 时间序列可以是一维或一元的, 也就是说只有一个按照时 间记录的变量, 比如一个气象站点获取的降水量数据. 也有 些是多维的, 即变量是多维向量, 比如一个气象站按照同样 时间间隔收集的气压、气温、降水量、风力等多个指标. 研究时间序列的一个主要目的是做对同样变量的未来值的 预测. 这就意味着下面的假定必须成立: 这个未来值能够完 全由同样变量的现在和过去值预测, 而不受任何其他变量 的影响. 这个假定很强, 往往不能满足, 但人们往往又有意 无意地无视这个假定. 当然也有加入其他变量的模型. 中国 通常的时间序列教科书内容的主要部分都是讲的一元时间 序列, 这是因为其数学推导和结论被研究得比较透彻, 比较 容易讲. 到了高维时间序列, 一切都不那么清晰和漂亮, 一 元时间序列的一些漂亮数学结论和公式很难推广到高维情 况.
ARIMA模型
例7.1的货币基数数据, 截取货币基数的一部分数据(从1918年1月到2007年 12月), 试试ARIMA(0,1,8)(1,0,0)模型.
w0=ts(w1[1:1080],start = c(1918,1), frequency = 12,)#到2007-12-01 854.997 b0=arima(w0,order=c(0,1,6),seasonal = list(order = c(1, 0, 0))) bp72=predict(b0,72);plot(w2);lines(bp72$pre,lty=2);tsdiag(b0)#图7.4
单位根及检验
如果一个时间序列是平稳的, 则没有任何预测价值, 因为平稳序列的 均值不变, 任何预测都不会有什么有价值的结果. 因此人们只对非平 稳序列感兴趣, 而对平稳序列的研究, 也是因为对于非平稳序列, 总 希望可以通过差分等方式转换成平稳的, 而后者是可以通过数学方 式予以解释的. 如果由$d$次差分可以将一个非平稳序列转换成平稳 的, 则称其为$d$阶单整的, 记为$I(d)$. 换句话说, 如果$\Delta^d X_t$ 为平稳的, 则序列$X_t$称为有$d$个单位根.
单位根及协整检验
单位根及协整检验
此外, 在实际工作者使用这些方法时, 往往把``不能拒绝零 假设‘’当成``零假设正确‘’或``接受零假设‘’的同义词, 这在在 逻辑上是完全错误的, 在统计上是绝对不允许的. ``不能拒 绝零假设‘’意味着拒绝的证据不足, 并不意味着零假设正确 . 在拒绝零假设时, 至少给出了犯错误的大致概率, 即p值, 但任何人都给不出``接受零假设‘’时犯错误的概率, 做出结 论而又不给出该结论所包含的风险是极端不负责的行为. 但实际工作者往往需要在显著性检验中无法拒绝零假设时 做出决策, 合乎逻辑的说法是: “在所有关于模型形式(比 如某种线性表示以及对数据的各种假定都成立的前提下, 我没有足够证据否定零假设, 因此把零假设当成另一个附 加的假定.”
结构时间序列模型/一元状态空间模 型
测量方程 动态方程(状态方程)
data(Nile,package="datasets") (fit <- StructTS(Nile, type = "level")) plot(Nile) lines(fitted(fit), lty = 2) # 同期平滑得到的状态 lines(tsSmooth(fit), lty = 3, col = 4) # 固定区间平滑得到的状态 legend("bottomleft", lty=1:3, c("Nile", "contemporaneous smoothing","fixed-interval smoothing")) par(mfrow=c(1,2));acf(residuals(fit));pacf(residuals(fit))
Ljung-Box检验的零假设为序列独 立(对于某个滞后)
B=NULL;for( i in 1:30) B=c(B,Box.test(b0$resi, lag = i, type = "Ljung-Box")$p.value) plot(B,main="Ljung-Box tests", ylab="p-value", xlab="lag",pch=16) abline(h=.05,lty=2)
最简单的情况为(这里带有截距)随机游走
随机游走为$I(1)$单整的, 它有1个单位根.
例7.2 芬兰数据(finland.csv). 该数据来自Johansen and Juselius(1990), 有4个时间序列变量, 它们是从1958年第2季度到1984年第3季 度的货币供应量M1的对数(lrm1), 实际收入的对数(lny), 边际 利率(lnmr), 通货膨胀率(difp).
函数自动根据AIC选择AR模型的阶数
打印出来的结果为: Call: arima(x = Nile, order = c(2, 0, 0)) Coefficients: ar1 ar2 intercept 0.4096 0.1987 919.8397 s.e. 0.0974 0.0990 35.6410 sigma^2 estimated as 20291: log likelihood=-637.98,aic=1283.96 用下面语句点出Ljung-Box检验的p值(虚线为0.05水平线), 残差的acf和pacf函数图(图7.7), 看 来拟合虽然不是那么完美, 但也还过得去.
ADF显著性水平为0.1的临界值为-3.13(值越小就越显著), 而这4个检验统计量的值分别为2.2702, -1.5932, -3.1016, -2.7569, 因此没有足够证据拒绝零假设, 也就是说, 没有证据说它们 是平稳的. 因此假定它们都至少是$I(1)$的.
单位根及协整检验
本节的方法在计量经济学中是比较精彩的方法. 很多人都 在使用. 但是, 这些数学公式都是人们用有限的数学语言对 现实问题的一种近似. 首先, 这里所有的方法都要求时间序 列具有线性表示, 甚至如Johansen方法中的更强的VAR表示, 没有这种假定, 所有的方法, 所有的渐近性质和结论都毫无 意义. 想想看, 宇宙间有多少规律是严格线性的? 人们之所 以处处使用线性模型, 或用线性模型近似, 仅仅是因为线性 关系是我们或多或少可以控制的少数几个关系之一. 其次, 所有的方法的结论都严重依赖于大样本性质, 这是因 为独立同正态分布的条件几乎不可能满足, 也不可能验证. 而没有任何统计学家(无论他们证明了多少大样本定理)可 以断定在实际中样本量多少才算是大样本. 而在小样本情 况下,可能所有这些结论根本不成立, 显著性检验也没意义.
一些时间序列可能是相关的, 他们在一定时期可能显示出较强的相 关性. 但是, 用它们自己来预测自己的未来或者互相预测, 则风险很 大. 就拿宏观经济时间序列来说, 它们都受到经济危机、金融危机、 政策变化、政权更迭、天灾人祸疾病等偶然事件、法律和规则的改 变以及人们心态改变的影响, 而这些无法预料的因素根本无法加入 到这几个只包含了若干可测量的时间序列的模型之中, 某些短期预 测往往不用时间序列也可以猜出来, 而长期预测则往往是极端不可 靠的. 单纯利用时间序列来做出推断, 而且还给出``政策建议'', 不但 是不科学的, 也是很不负责任的. 我们还会遇到不同方法得到的结论不相同的问题. 这么多检验方法( 这里只介绍几个)产生出不同的结论, 原因在于这些方法的数学模型 不同, 这些模型及假定与事实不符. 不仅仅不同方法会造成不同结论, 同一个方法的不同角度也会造成不同的结论. 比如Engle-Granger检验 , 很可能轮换回归得到的结论就不同, 不仅如此, 该方法有两个步骤, 第二个步骤肯定继承了第一个步骤的误差, 最终误差可能达到不可 承受的地步.
例7.1 货币基数(AMBNS.csv). 这是在圣路易的美国联邦储备银行发 布的货币基数. 该数据是月度数据, 从1918年1月1日到2012年1月1日, 单位是10亿美元.
w=read.csv("AMBNS.csv") w1=ts(w[,2],start = c(1918,1), frequency = 12,) par(mfrow=c(1,2)) ts.plot(w1);lines(diff(w1),lty=3,col=4) w2=ts(w1[949:1129],start = c(1997,1), frequency = 12,) ts.plot(w2,ylim=c(0,max(w2)));lines(diff(w2),lty=3,col=4)
7.3 尼罗河(Nile.txt). 这是是在阿斯旺 (Ashwan)所测量的1871–1970年尼 罗河的年度流量
利用下面语句来点出尼罗河数据的acf和pacf函数图(图7.6) data(Nile,package="datasets") layout(matrix(c(1,1,2,3),2,2,byrow=TRUE)) plot(Nile); acf(Nile) ;pacf(Nile) ; ar(Nile) # 选择了二阶AR模型 rn=arima(Nile, c(2, 0, 0))
多元时间序列在预测上是否就比一元强 些呢? 这不见得. 时间序列, 特别是经济 领域的时间序列受到大量其他因素的影 响, 比如疾病(如SARS), 自然灾害(如地震 海啸), 法律政策的改变, 全球的金融危机 等等. 这些经济特征的时间序列严重受制 于那些大的环境因素的变化, 而后者是几 乎无法用数学方法预料的.
Loess方法对橙汁的冰冻橙汁厂家价格做 季节趋势分解
data(Orange,package="Ecdat") ts.plot(Orange[,1]) #原始变量点图 a=stl(Orange[,1], "period") #对第一个变量(Orange[,1])分解 ts.plot(a$time.series[,1:3])#画出分解出来的三部分
B=NULL;for( i in 1:30) B=c(B,Box.test(rn$resi, lag = i, type = "Ljung-Box")$p.value) layout(matrix(c(1,1,2,3),2,2,byrow=TRUE)) plot(B,main="Ljung-Box tests", ylab="p-value", xlab="lag",pch=16,ylim=c(0,1)) abline(h=.05,lty=2) acf(rn$res) ;pacf(rn$res)
下面就是对于例7.2数据的ADF检验, 看其4个变量有没有单位根.
library(urca) data(finland) attach(finland) lrm1.df=ur.df(lrm1,lags=5,type='trend');summary(lrm1.df) lny.df=ur.df(lny,lags=5,type='trend');summary(lny.df) lnmr.df=ur.df(lnmr,lags=5,type='trend');summary(lnmr.df) difp.df=ur.df(difp,lags=5,type='trend');summary(difp.df)
常用的一元时间序列方法 时间序列的组成和分解, 差分及 平滑
Holt-Winters滤波函数(可做指数 平滑) b2 <- HoltWinters(w2, gamma = FALSE, beta = FALSE)
par(mfrow=c(1,2)) plot(b2) #原序列及拟合曲线图 ee2=b2$x-b2$fit[,1] plot(ee2) #拟合误差图
相关文档
最新文档