Как добавить собственные имена переменных в график IRF? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть следующий код:

var <- VAR(data, p=2, type="const", ic="AIC")
names <- 
 c("log(p_l)","log(val)","log(vol)","log(er)",
 "log(lr)","log(Exp)","log(Imp)","log(rgdp)","log(p_oil)","log(r)")

ir_plot <- plot(irf(var, n.ahead=20, ci=0.95, runs=100, seed=123), varnames = names)

Где последний аргумент varnames = names - это то, что я пытаюсь выполнить sh. Я переместил аргумент и попытался variable.names безрезультатно. Я просто хочу изменить имена переменных, которые отображаются на графиках, на список в names.

edit:

Один из графиков, которые дает мне приведенный выше код:

enter image description here

Я хочу изменить все имена переменных для чего-то более читабельного. Как бы я это сделал?

1 Ответ

1 голос
/ 19 марта 2020

Вы используете names=, если хотите указать имя переменной для построения графика:

library(vars)
data(Canada)
var.2c <- VAR(Canada, p = 2, type = "const",ic="AIC")
var_irf <- irf(var.2c, n.ahead=20, ci=0.95, runs=100, seed=123)
plot(var_irf,names="e")

enter image description here

Допустим, вы хотите, чтобы вы новые метки на оси Y будут:

newl = paste0("log_",test$response)
newl
[1] "log_e"    "log_prod" "log_rw"   "log_U"

Затем мы создадим функцию, которая изменит требуемые имена, но сохранит ваш исходный irf:

plot_w_names = function(irf,newy){

irf$response = newy
for(i in 1:length(irf$irf)){colnames(irf$irf[[i]]) = newy}
for(i in 1:length(irf$Lower)){colnames(irf$Lower[[i]]) = newy}
for(i in 1:length(irf$Upper)){colnames(irf$Upper[[i]]) = newy}
plot(irf)

}

Затем запустите это:

plot_w_names(var_irf,newl)

enter image description here

Если вы хотите обновить все, попробуйте следующее:

plot_w_names = function(irf,newy){
irf$response = newy
irf$impulse = newy
names(irf$irf) = newy
names(irf$Lower) = newy
names(irf$Upper) = newy
for(i in 1:length(irf$irf)){colnames(irf$irf[[i]]) = newy}
for(i in 1:length(irf$Lower)){colnames(irf$Lower[[i]]) = newy}
for(i in 1:length(irf$Upper)){colnames(irf$Upper[[i]]) = newy}
plot(irf)

}
...