【问题标题】:Print tables with 3 regression output models from rdrobust从 rdrobust 打印具有 3 个回归输出模型的表格
【发布时间】:2021-06-03 14:12:59
【问题描述】:

我已经用 rdrobust 运行了 3 次回归,并且想打印一些值(不是所有的值都在一个表中,这样每个模型都有一个列并且可以并排比较结果。

我尝试使用 stargazer 但没有成功,modelsummary 也是如此。

这是我的回归代码的样子:

model <- rdrobust::rdrobust(x, 
                            y,
                            c = cutoffvalue,
                            kernel = "tri", #default
                            bwselect = "mserd"

我只想在表格中显示回归估计、值、带宽和内核。

这是我尝试过的,但它并没有给我想要的值,而且它只适用于一个模型。我想把三个都放在同一张桌子上。

tidy.rdrobust <- function(model, ...){
ret <- data.frame(term = row.names(model$coef), 
estimate = model$coef[, 1], 
std.error = model$se[, 1], 
p.value = model$pv[, 1])
    row.names(ret) <- NULL
ret
}

glance.rdrobust <- function(model, ...){
ret <- data.frame(nobs.left = model$N[1],
kernel = model$kernel,
bwselect = model$bwselect)
ret
}
x <- runif(1000, -1, 1)
y <- 5 + 3 * x + 2 * (x >= 0) + rnorm(1000)
fit <- rdrobust(y, x)
modelsummary(fit)

谢谢!

【问题讨论】:

  • 你能澄清一下这个问题吗?您希望表格中有哪些具体信息?具体来说,您想要什么“价值观”?当您说“带宽”时,是不是类似于mserd?您想包括 p 值还是完全忽略不确定性估计?要在modelsummary 中并排汇总多个模型,您可以将所有模型放在一个列表中。请参阅软件包文档。

标签: r output regression modelsummary


【解决方案1】:

我在评论中要求澄清,但这是我猜测你想要的表格的最佳尝试:

  1. 多个模型并排
  2. 模型估计
  3. 括号中的 p 值低于估计值
  4. hte 表底部的内核类型
  5. 表格底部的带宽选择

为此,我只修改了您的glance.rdrobust 方法,并使用了modelsummary 函数的statistic 参数。

rdrobust 对象加载库和define custom tidy and glance methods to extract information (see documentation)

library(rdrobust)
library(modelsummary)

tidy.rdrobust <- function(model, ...) {
  ret <- data.frame(
    term = row.names(model$coef),
    estimate = model$coef[, 1],
    std.error = model$se[, 1],
    p.value = model$pv[, 1]
  )
  row.names(ret) <- NULL
  ret
}

glance.rdrobust <- function(model, ...) {
  ret <- data.frame(
    Kernel = model$kernel,
    Bandwidth = model$bwselect
  )
  ret
}

模拟数据,估计 3 个模型,并将它们存储在一个列表中:

x1 <- runif(1000, -1, 1)
x2 <- runif(1000, -1, 1)
x3 <- runif(1000, -1, 1)
y1 <- 5 + 3 * x1 + 2 * (x1 >= 0) + rnorm(1000)
y2 <- 5 + 3 * x2 + 2 * (x2 >= 0) + rnorm(1000)
y3 <- 5 + 3 * x3 + 2 * (x3 >= 0) + rnorm(1000)

fit1 <- rdrobust(y1, x1)
fit2 <- rdrobust(y2, x2)
fit3 <- rdrobust(y3, x3)
models <- list(fit1, fit2, fit3)

创建表:

modelsummary(models, statistic = "p.value")
Model 1 Model 2 Model 3
Conventional 2.155 2.085 2.050
(0.000) (0.000) (0.000)
Bias-Corrected 2.110 2.110 1.984
(0.000) (0.000) (0.000)
Robust 2.110 2.110 1.984
(0.000) (0.000) (0.000)
Bandwidth mserd mserd mserd
Kernel Triangular Triangular Triangular

【讨论】:

  • “在列表中包含模型”的相关代码行是models &lt;- list(fit1, fit2, fit3)
  • 要选择是否显示标准误差或 p.values 或估计值,您可以在 modelsummary 函数中使用 estimatestatistic 参数。这两个论点都有很好的记录,网站上有很多其他示例。
  • 要省略行,请查看modelsummary 中的coef_omitgof_omit 参数。同样,这是有据可查的,网站上有很多示例。
  • 很高兴它有效!如果它满足您的需求,请随意接受答案(没有压力)。
  • 这是glance.rdrobust。您的初始函数实际上确实显示了观察次数,但我删除了它,因为您在最初的问题中没有提到想要那个。
猜你喜欢
  • 2019-08-30
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 2016-05-05
  • 2019-10-08
  • 2019-09-16
  • 2016-08-28
  • 1970-01-01
相关资源
最近更新 更多