繁体   English   中英

在R IRF图上添加置信带

[英]Add confidence band to R IRF Plot

我使用以下示例代码来绘制脉冲响应函数:

# Load data and apply VAR
library("vars")
data(Canada)
data <- Canada
data <- data.frame(data[,1:2])
names(data)
var <- VAR(data, p=2, type = "both")

# Apply IRf
irf <- irf(var, impulse = "e", response = "prod", boot = T, cumulative = FALSE, n.ahead = 20)
str(irf)
plot(irf)

# Response
irf$irf
# Lower & Higher
irf$Lower
irf$Upper

#Create DataFrame and Plot
irf_df <- data.frame(irf$irf,irf$Lower,irf$Upper)
irf_df$T<-seq.int(nrow(irf_df)) #T
irf_df
plot(data.frame(irf_df$T, irf_df[1]), type="l", main="Impulse Response")
abline(h=0, col="blue", lty=2)

尽管我认为代码可以改进,但到目前为止看起来似乎还可以。

是否可以为置信区间的上下限添加置信带?

如果你要绘制的LowerUpper带,你可以用lines()如果需要的功能,设置情节的y限制。

plot(irf_df$T, irf_df$prod, type="l", main="Impulse Response",
    ylim = c(min(irf_df$prod.1), max(irf_df$prod.2)) * 1.1)
abline(h=0, col="blue", lty=2)
lines(irf_df$T, irf_df$prod.1, lty = 2)
lines(irf_df$T, irf_df$prod.2, lty = 2)

对于充满置信带的较理想的图,请使用polygon 在这里,我们建立一个空图,然后绘制多边形,最后覆盖线。 还要注意,这里不需要设置新的data.frame:我们可以简单地使用irf()输出中的值:

plot(irf$irf$e, type = "n", main = "Impulse Response",
    ylim = c(min(irf$Lower$e), max(irf$Upper$e)))
polygon(x = c(seq_along(irf$irf$e), rev(seq_along(irf$irf$e))),
        y = c(irf$Lower$e, rev(irf$Upper$e)),
        lty = 0, col = "#fff7ec")
lines(irf$irf$e)

输出: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM