如何将自定义变量名称添加到 IRF 图?

How does one add custom variable names to an IRF plot?

我有以下代码:

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 是我想要完成的。我已经转移了争论并尝试 variable.names 无济于事。我只想将图中显示的变量名称更改为 names 中的列表。

编辑:

上面的代码给我的情节之一是

我想将所有变量名更改为更易读的名称。我该怎么做?

如果要指定要绘制的变量名称,请使用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")

假设您希望 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)

如果你想更新所有内容,试试这个:

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)

}