以网格格式绘制脉冲响应函数

2024-03-25

我已经从 R 中的 VAR 模型运行了以下脉冲响应函数

debtarg_1 <- irf(var.est.debt_arg,response="pfdebt_arg",impulse="sp",n.ahead=40,ortho=TRUE,boot=TRUE)
plot(debtarg_1) # response of pfdebt to s&p shock

debtarg_2 <- irf(var.est.debt_arg,response="pfdebt_arg",impulse="m1_us",n.ahead=40,ortho=TRUE,boot=TRUE)
plot(debtarg_2) # response of pfdebt to us M1 Shock

debtarg_3 <- irf(var.est.debt_arg,response="pfdebt_arg",impulse="m1_arg",n.ahead=40,ortho=TRUE,boot=TRUE)
plot(debtarg_3) # response of pfdebt to a domestic m1 shock

debtarg_4 <- irf(var.est.debt_arg,response="pfdebt_arg",impulse="eq_arg",n.ahead=40,ortho=TRUE,boot=TRUE)
plot(debtarg_4) # response of pfdebt to equity market price shock

debtarg_5 <- irf(var.est.debt_arg,response="pfdebt_arg",impulse="pfequity_arg",n.ahead=40,ortho=TRUE,boot=TRUE)
plot(debtarg_5) # response of pfdebt to pfequity shocks


我想使用 ggplot 和 gridextra 将所有这些以网格格式绘制在论文中。有人对如何以网格格式重现此内容有任何建议吗?在从 Excel 文件将数据读入 R 后,我之前已经以网格格式绘制了数据,但是我不确定如何使用我运行的 5 个单独的 IRF 来处理此问题。我将附上我之前制作的网格图的代码,希望有人可以帮助我调整此代码以在网格中绘制这 5 个 IRF?

library(tidyverse)
library(tidyselect)
library(xtable)
library(readxl)
library(ggthemes)
library(ggsci)
library(gridExtra)

currentdata <- read_excel(path = "./data/current_gdp.xlsx",
                            col_names = T)

currentdata <- currentdata %>% gather(key = Countries, value = ca, -Date)


g1 <- ggplot(data = currentdata) + 
geom_line(aes(x = Date, y = ca, group = 1, colour = Countries), size = 1.3) + 
theme(plot.title = element_text(hjust = 0.5), axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_x_discrete(breaks = seq(1980, 2018, by = 5)) +  
labs(caption = "Source - World Bank (2019)", x = "", y = "Current Account (as a % of GDP)") + 
    facet_wrap(~Countries, scales = "free") + guides(color = FALSE)


print(g1)

更新 - 我在下面包含了我的数据集(debt_arg)的示例。

   sp    m1_us     m1_arg   eq_arg  pfdebt_arg pfequity_arg
 [1,]  43.090997 414955.4   1538.701   270.48   326000000            0
 [2,]  26.979045 410044.9   2398.424   265.24    21000000            0
 [3,]  16.967093 403034.4   2392.100   652.73    11000000            0
 [4,]  29.505141 412023.8   4133.943   800.62  7869000000            0
 [5,]   4.173189 422013.3   3777.726   747.79   862806000    321395635
 [6,]  -4.848764 418102.8   4867.334   660.42   538167500    -27163752
 [7,] -24.060716 435092.2   4108.552   419.80   476328500    578208609
 [8,] 755.186270 717496.6 -29574.420 33461.77 -1071543954   -130885582
 [9,] 363.624318 716186.1 -23324.997 30292.55  -728949104   -187033565
[10,] 664.462366 728275.5 -32336.032 33466.03   519284161    195110656

由此,我使用以下代码行运行了 VAR 模型。

var.est.debt_arg <- VAR(debt_arg,p=1,type="both",season=NULL)
summary(var.est.debt_arg)

我想将顶部的 5 个 IRF 全部绘制在同一行中

由此

谢谢你!


使用脉冲模型生成的图使用基本 R。以下是一个可能的解决方案。我无法与您的示例相匹配,因此我使用了包中的一些内容:

library(vars)
library(cowplot)
library(gridExtra)

使用加拿大示例数据并运行 VAR:

data(Canada)
var.est.debt_arg <- VAR(Canada, p = 2, type = "both",season=NULL)

定义响应和脉冲变量

RESPONSE = "prod"
IMPULSE = c("e","U","rw")

将所有适合您的情况收集到一个列表中:

fits = lapply(IMPULSE,function(i){
irf(var.est.debt_arg,response=RESPONSE,impulse=i,
n.ahead=40,ortho=TRUE,boot=TRUE)
})
names(fits) = IMPULSE

迭代拟合,生成绘图并使用 as_grob 捕获它

P = lapply(fits,function(i)as_grob(~plot(i,cex.main=0.7,mar=c(0.5,0.5,0.5,0.5))))
grid.arrange(grobs=P,ncol=3)

如果你想使用 ggplot,那么:

plotdf = lapply(names(fits),function(i){
data.frame(
  index = 1:nrow(fits[[i]]$irf[[1]]),
  value=fits[[i]]$irf[[1]][,1],
  Lower=fits[[i]]$Lower[[1]][,1],
  Upper=fits[[i]]$Upper[[1]][,1],
  Impulse = i)
})
plotdf=do.call(rbind,plotdf)

ggplot(plotdf,aes(x=index,y=value)) + 
geom_line() +facet_wrap(~Impulse) + 
geom_ribbon(aes(ymin=Lower,ymax=Upper),fill=NA,col="salmon",linetype="dashed") + 
geom_hline(yintercept=0,col="salmon") + theme_bw()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以网格格式绘制脉冲响应函数 的相关文章

  • R 中具有 p 值的相关矩阵

    假设我想要传导相关矩阵 library dplyr data iris iris gt select if is numeric gt cor y iris Petal Width method spearman gt round 2 现在
  • 来自大型数据帧的共现

    我有一个数据框 其中包含有关每个用户访问过哪些城市的信息 df visited lt data frame user c john john claire claire doe doe city c Antananarivo Barcelo
  • R 无法回忆起内存中的对象

    我正在构建一个包含多个步骤的函数 其中每个步骤都会创建一个对象 某个步骤失败 temp3 并且无法找到前面的步骤对象 错误 未找到对象 temp2 我不知道为什么 我有类似的函数 遵循完全相同的结构 每个步骤都遵循先前创建的对象 在函数内
  • R 获取子字符串和正则表达式?

    我有一组文件名字符串 我想提取 符号之后但文件扩展名之前的所有字符 例如 文件名之一是 HelloWorld you txt 我想返回字符串you 这是我的代码 hashPos grep name fixed TRUE dotPos len
  • 使用 R 将日期格式的字符串列表/向量转换为 posix 日期类

    我有一个日期格式的字符串列表 我想将其转换为可以使用 R 操作的 posix 日期列表 我该怎么做 这就是我所拥有的 但我最终得到了一个列表 a lt c 2009 01 01 00 00 00 2009 01 01 00 00 00 z
  • R中具有特定条件的多列变异

    我有这个数据 M1 M2 M3 UCL 1 2 3 1 5 我想在这种情况下创建新列 如果M1大于UCL MM1将为 UP 否则为 NULL 如果M2大于UCL MM2将为 UP 否则为 NULL 如果M3大于UCL MM3将为 UP 否则
  • 如何使用 Facet R 添加线条[重复]

    这个问题在这里已经有答案了 所以我有一个多面图 我希望能够向其中添加随每个面而变化的线 这是代码 p lt ggplot mtcars aes x wt geom histogram bins 20 aes fill factor cyl
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • R中data.frame(列表)的列平均值

    Data https i stack imgur com ZYsmv jpg 请 我需要计算此 data frame 中维吉尼亚币 Sepal Length 列的平均值 Sepal Length Sepal Width Petal Leng
  • ggplot:类似于scale_color_steps()的有序因子的色标

    With scale color steps 我们可以通过设置low和high争论 一个例子 df lt data frame x rnorm 99 y rnorm 99 col rnorm 99 ggplot df aes x y col
  • 解压 R 数据框中的列表

    我有一个dataframe其中一个字段包含不同长度的列表 我想将该字段中列表的每个元素提取到其自己的字段中 以便我可以将结果收集到一个很长的字段中dataframe每个列表元素都有一个 id 这是一个例子dataframe dat lt s
  • 在 R 中计算大矩阵的零空间

    我找不到任何函数或包来计算 a 的零空间或 QR 分解 bigmatrix from library bigmemory 在 R 中 例如 library bigmemory a lt big matrix 1000000 1000 typ
  • dplyr::group_by_ 带有多个变量名的字符串输入

    我正在编写一个函数 要求用户在函数调用中定义一个或多个分组变量 然后使用 dplyr 对数据进行分组 如果只有一个分组变量 它会按预期工作 但我还没有弄清楚如何使用多个分组变量来做到这一点 Example x lt c cyl y lt c
  • e_facet 在 echarts4r 问题中使用分组数据

    我真的很喜欢这个包提供的可能性 并且想在一个闪亮的应用程序中使用它 然而我正在努力重新创建从 ggplot 到 echarts4r 的情节 library tidyverse library echarts4r data tibble ti
  • GLMER 警告:方差-协方差矩阵 [...] 不是正定的或包含 NA 值

    我有时发现我的 GLMM 来自glmer 包裹lme4 当调用其摘要时显示以下警告消息 Warning messages 1 In vcov merMod object use hessian use hessian variance co
  • k折交叉验证 - 如何自动获得预测?

    这可能是一个愚蠢的问题 但我只是找不到一个包来做到这一点 我知道我可以编写一些代码来获得我想要的东西 但如果有一个函数可以自动完成它那就太好了 所以基本上我想对 glm 模型进行 k 倍交叉验证 我想自动获取每个验证集的预测和实际值 因此
  • 按新年拆分日期行

    我有来自一家医院的包含许多变量的数据 以及每行的起始日期和截止日期 这告诉我们每行何时 有效 每行的有效期最长为一年 test data frame ID c 10 10 10 12 12 Disease c P P P D P Pass
  • 是否可以创建根据输入对象名称自行命名的列表?

    能够创建 R 列表对象而无需指定每个元素的名称对我来说非常有帮助 例如 a1 lt 1 a2 lt 20 a3 lt 1 20 b lt list a1 a2 a3 inherit name TRUE gt b a1 1 1 a2 1 20
  • 使用栅格包下载 SRTM 数据?

    我正在尝试使用 获取 SRTM 数据 raster R 中的包 但一旦我选择SRTM在 getData 命令中 我会收到以下错误 library raster srtm lt getData SRTM lon 16 lat 48 tryin
  • 有什么方法可以禁用 PDF/Postscript 输出中的“减号破解”吗?

    在 R 中 将绘图保存到 PDF 或 Postscript 文件时 轴标签中的连字符会变成减号 显然 这是设计使然 根据 postscript 设备的文档 正常编码规则 有一个例外 字符 45 始终设置为负号 其在 Adob e ISOLa

随机推荐

  • 巨大的 WPF 视觉效果渲染不精确 - 有解决方案吗?

    在 WPF 中渲染巨大的视觉效果时 视觉效果会扭曲 并且随着坐标的增加扭曲得更加严重 我认为它与渲染管道中使用的浮点数据类型有关 但我不完全确定 无论哪种方式 我都在寻找解决问题的实际解决方案 为了演示我正在讨论的内容 我创建了一个示例应用
  • 强制浏览器每次都重新加载小程序

    我已经使用了我的小程序部署Java js http download oracle com javase 6 docs technotes guides jweb deployment advice html appletTagAttrib
  • 无法使用自定义表模型通过 table.getColumn 方法获取列索引

    我使用 AbstractTableModel 创建了一个自定义 TableModel 我能够填充我的 JTable 但我的 JTable 有一个按钮列 名为 Button1 因此 我使用 CellRenderer 方法向列添加按钮 使用 C
  • 启用/禁用带有复选框的文本区域

    我的任务是使用 JavaScript 在单击复选框时启用 打开 并在单击 关闭 时禁用它 但是 代码仍然无法工作 无论我是否单击该复选框 都不会执行任何操作 div h2 Order Information h2 div class ent
  • 如何检查 Clojure 代码是否正在 REPL 内进行计算?

    我想根据我的代码是从 REPL 运行还是运行已编译的 jar 来以不同的方式格式化我的日志 有什么简单的方法可以做到这一点吗 我在想也许 Leiningen 在运行 REPL 时会在某个地方留下痕迹 defn current stack t
  • 提取字符串 PHP 中两个字符之间的子字符串

    是否有 PHP 函数可以提取字符串中 2 个不同字符之间的短语 就像是substr Example String modid 256 First Second id substr string First Second Thus id将会2
  • PrimeNG 使用延迟加载表设置第一个页面

    我正在使用组件p table使用 Paginator 和 延迟加载 我根据需要制作了一个搜索组件 我试图解决过滤时的问题 并且页面索引位于另一页上 例子 页面索引 2过滤文本 texto 然后 我更新表上的记录和页数 但如果结果具有更多或相
  • Firebase InstanceId 无法解析标识符 swift4

    我最近更新了我的 SWIFT 应用程序 pod 文件 并且由于 firebase 版本现已更新到 5 2 现在在获取设备实例 ID 时出现以下错误 let tokenId InstanceID instanceID token error
  • 如何将一个数组的值放入另一个数组中?

    String input txtInput getText char charArray input toCharArray char flipArray null System out println charArray length f
  • 内连接三个表

    我有三个表 我希望通过它们之间的公共列进行内部连接 假设我的桌子是 TableA TableB TableC 我想加入A B 但随后也B C这一切都源于这个共同的领域 我将其称为共同的 我已经像这样连接了两个表 dbo tableA AS
  • Pandas 与正则表达式“.”不一致点元字符?

    考虑 df Cost Store 1 22 5 Store 1 Store 2 要将这些点转换为 nan 我可以使用 df replace np nan regex True Cost Store 1 22 5 Store 1 NaN St
  • 如何让Eclipse使用JDK8来编译项目?

    我正在尝试新的 jdk8 这里提供什么http jdk8 java net lambda http jdk8 java net lambda 我可以从命令行编译并运行我的项目 我还可以将这个新的 JDK 添加到Installed JREs在
  • 获取 ngComponentOutlet 的引用

    我正在使用 ngComponentOutlet 动态创建一个组件 听上去像 import Component NgModule from angular core import BrowserModule from angular plat
  • 实际上如何使用 C 库?

    我确信这个问题已经被问过很多次了 但我无法弄清楚 耐心听我说 因此 当您下载库时 您会得到一堆 c 和 h 文件 以及许多其他内容 现在假设您想使用这个库编写一个程序 我将所有 h 文件复制到我的项目目录中 它只是无法编译 太好了 然后我将
  • 如何在 Python 中将 '%' 替换为 '\x'

    我的目标是将base64编码的 EB 字符串转换为 xEB 然而 一尝试 我发现这很难 并且通过 string replace 和 re sub 都无法实现 我的代码失败如下 target EB AF B8 EB 9F AC EC 8A A
  • 如何使用同一个 R 包的多个版本?

    为了能够比较包的两个版本 我需要能够选择加载哪个版本的包 R 的包系统默认设置为覆盖现有包 以便您始终拥有最新版本 我该如何覆盖这种行为 到目前为止我的想法是 我可以获取包源 编辑描述以给出不同的名称 并实际上构建两个不同的包 不过 我宁愿
  • 谁能告诉我 python 中的 pika 和 kombu 消息传递库有什么区别?

    我想在我的应用程序中使用消息传递库与rabbitmq交互 谁能解释一下 pika 和 kombu 库之间的区别吗 Kombu 和 pika 是两个不同的 Python 库 它们从根本上服务于相同的目的 向消息代理发布消息和使用消息代理发送消
  • 检查谷歌地图应用程序是否安装在react-native iOS中

    我尝试使用 npm 模块react native check app install但我无法实现 结果总是错误的 还尝试过react native installed apps获取手机中安装的应用程序列表 但这始终返回空列表 您确定声明了
  • Laravel 所有输入字段均为必填

    我有大约 50 个输入字段 它们都是必需的 有没有简单的方法来检查它们是否都已设置 所以我不必手动将每个字段放入我的模型中 验证规则为 必需 我知道这已经晚了 但我编写了一个简单的函数来为自己解决这个问题 foreach request g
  • 以网格格式绘制脉冲响应函数

    我已经从 R 中的 VAR 模型运行了以下脉冲响应函数 debtarg 1 lt irf var est debt arg response pfdebt arg impulse sp n ahead 40 ortho TRUE boot