2016-10-22 55 views
0

我用下面的示例代碼來繪製一個脈衝響應函數:信心樂隊添加至R IRF情節

# 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) 

它看起來像它的工作原理,到目前爲止,雖然我感覺到,代碼可以改進。

是否可以爲置信區間的下限和上限添加置信區間?

回答

0

如果要繪製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) 

輸出: enter image description here

+0

這一個已經是不錯的,但我喜歡在兩條線之間填充房間 - 小孩說淡紅色 - 不僅繪製線條。 – Rnaldinho

+0

完美,正是我所搜索的:) – Rnaldinho