首页 > 解决方案 > 如何在 Sensemakr 中手动提供基准协变量的估计值?

问题描述

我正在使用 r 包'sensemakr'。该软件包对 OLS 估计值进行敏感性分析。

但是,我正在运行一个lm需要聚集标准错误的模型(使用函数coeftest)。由于该sensemakr函数不接受coeftest对象,因此我通过在函数中手动输入estimatese和来指定灵敏度分析,具体如函数中数字选项下的中所写。dofsensemakrsensemakr

在包中,sensemakr函数中的数字选项由以下参数给出:

## S3 method for class 'numeric'
sensemakr(
estimate,
se,
dof,
treatment = "D",
q = 1,
alpha = 0.05,
r2dz.x = NULL,
r2yz.dx = r2dz.x,
bound_label = "manual_bound",
r2dxj.x = NULL,
r2yxj.dx = r2dxj.x,
benchmark_covariates = "manual_benchmark",
kd = 1,
ky = kd,
reduce = TRUE)

有关参数的详细信息,请参见包的第 32 页

estimate但是,我不确定在哪里/如何sesensemakr.

我使用作者在他们的教程中使用的 Darfur 示例编写了 R 代码来复制我的问题。

如果有人熟悉此软件包并能够提供帮助,我将不胜感激。

######################## Code Summary ##################
#Tutorial can be accessed here: 
#https://cran.r-project.org/web/packages/sensemakr/vignettes/sensemakr.html
########################## Prelude #####################

rm(list=ls(all=TRUE))
options(stringsAsFactors = FALSE)
options(scipen = 3)
set.seed(1993)

######################### Functions ###################

######################### Library #####################
library(sensemakr)
library(lme4) # mixed random effects models
library(lmtest) # coeftest function
library(lmerTest) # p-values for mixed random effects models
library(multiwayvcov) # clustered standard errors
library(broom)
######################## Upload Data ##################
data("darfur")

#LM Model
darfur.model <- lm(peacefactor ~ directlyharmed  + village +  female +
                     age + farmer_dar + herder_dar + pastvoted + hhsize_darfur, 
                   data = darfur)

summary(darfur.model)

#coeftest 
darfur.model_cluster <- coeftest(darfur.model, vcov = cluster.vcov(darfur.model, cluster=darfur$village)) # Model 1 Linear Estimator; OLS State Fixed-Effects with Clustered Standard Errors--Total Covid Deaths Per 100K


#sensitivity analysis

#How can I specify benchmark_covariates' estimates and se using numeric class of the sensemakr function?
darfur.sensitivity <- sensemakr(estimate = subset(tidy(darfur.model_cluster), term %in% c("directlyharmed"))$estimate, 
                                se =subset(tidy(darfur.model_cluster), term %in% c("directlyharmed"))$std.error, 
                                dof = df.residual(darfur.model_cluster),
                                treatment = "directlyharmed",
                                benchmark_covariates = "female",
                                kd = 1:3,
                                ky = 1:3, 
                                q = 1,
                                alpha = 0.05, 
                                reduce = TRUE)

summary(darfur.sensitivity)


标签: rlm

解决方案


推荐阅读