2016-10-22 2 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

Если вы хотите построить полосы Lower и Upper, вы можете использовать функцию 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