2

R 包vars有一些很好的类型建模的固定例程VAR,包括一个非常简洁的 fanchart 绘图方法。

这些图不包括日期 - x 轴仅标有数字。

例如:

require(vars)
data(Canada)
var.2c <- VAR(Canada, p = 2, type = "const")
var.2c.prd <- predict(var.2c, n.ahead = 8, ci = 0.95)
fanchart(var.2c.prd)

我查看了代码,fanchart但无法理解如何实现我的目标。

有没有其他人解决过这个问题?

4

1 回答 1

2

它是基本图形,因此xaxt="n"将抑制默认轴axis并可用于制作新标签。这是一个时间序列对象,所以它确实没有我们可以识别为日期的东西,但可以提取时间

 times <- as.vector(time(Canada) )

这是 fanchart 中设置用户坐标的代码:

plot.ts(c(endog[, names[i]], rep(NA, n.ahead)), main = main[i], 
          ylim = c(ymin, ymax), ylab = ylab, xlab = xlab, col = col.y,  
         ...)

我正在尝试添加一个 xy.labels 参数,以便 plot.ts 尊重它,但到目前为止没有成功。

我要把它还给你。这是我认为应该给出一个适当的位置,但它比绘制的点更宽。如果这在与这些模型相关的磨合和跳动问题方面有意义,那就太好了。如果不是,也许你可以改进这一点

axis(1, at=seq_along( c( times, rep(NA,8) )), labels=c( times, rep(NA,8)) ,
        las=3, line=2, cex.axis=0.6)

额外的 NA 旨在说明具有预测的区域。长度来自nrow(var.2c.prd$fcst[[1]]) [1] 8

哈......我明白了:试试这个

fanchart(var.2c.prd, xaxt="n")
 par(new=TRUE)
 axis(1, at=seq_along( c( times, rep(NA,8) )), labels=c( times, rep(NA,8)) ,
       las=3, line=-26, cex.axis=0.6)
 axis(1, at=seq_along( c( times, rep(NA,8) )), labels=c( times, rep(NA,8)) ,
       las=3, line=0.5, cex.axis=0.6)

在此处输入图像描述

没有par(new=TRUE). 您应该能够将其他轴放置在您想要的位置。

于 2012-09-19T03:56:24.277 回答