| Title: | Sensitivity Analysis of Omitted Variable Bias | 
| Version: | 2.0.0 | 
| Description: | Conduct sensitivity analysis of omitted variable bias in linear econometric models using the methodology presented in Basu (2025) <doi:10.2139/ssrn.4704246>. | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| Imports: | dplyr, lmtest, stats, tidyr | 
| Suggests: | sensemakr | 
| URL: | https://github.com/dbasu-umass/ovbsa/, https://github.com/dbasu-umass/ovbsa | 
| BugReports: | https://github.com/dbasu-umass/ovbsa/issues | 
| NeedsCompilation: | no | 
| Packaged: | 2025-05-03 21:52:07 UTC; dbasu | 
| Author: | Deepankar Basu [aut, cre, cph] | 
| Maintainer: | Deepankar Basu <dbasu@umass.edu> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-05-06 08:40:06 UTC | 
basic sensitivity analysis of omitted variable bias
Description
basic sensitivity analysis of omitted variable bias
Usage
bsal(kd, ky, alpha, data, outcome, treatment, bnch_reg, other_reg)
Arguments
kd | 
 sensitivity parameter kD (scalar)  | 
ky | 
 sensitivity parameter kY (scalar)  | 
alpha | 
 significance level for hypothesis test (e.g. 0.05)  | 
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other regressors  | 
Value
a matrix with following rows for case 1, 2 and 3 (in columns):
r2yd.x | 
 partial R2 of Y on D conditioning on X  | 
r2dz.x | 
 partial R2 of D on Z conditioning on X  | 
r2yz.dx | 
 partial R2 of Y on Z conditioning on D and X  | 
estimate | 
 unadjusted parameter estimate  | 
adjusted_estimate | 
 bias-adjusted parameter estimate  | 
adjusted_se | 
 bias-adjusted standard error  | 
adjusted_lower_CI | 
 bias-adjusted confidence interval lower boundary  | 
adjusted_upper_CI | 
 bias-adjusted confidence interval upper boundary  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
res1 <- bsal(kd=1,ky=1,alpha=0.05,data=darfur,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth)
compute max(kD) and max(kY) for partial R2-based analysis without conditioning on treatment
Description
compute max(kD) and max(kY) for partial R2-based analysis without conditioning on treatment
Usage
kdkyrngpr2ncd(data, outcome, treatment, bnch_reg, other_reg = NULL)
Arguments
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other covariates  | 
Value
a data frame with 2 columns and 1 row:
kd_high | 
 max(kD), a scalar  | 
ky_high | 
 max(kY), a scalar  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
r1 <- kdkyrngpr2ncd(data=darfur,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth)
compute max(kD) and max(kY) for total R2-based analysis
Description
compute max(kD) and max(kY) for total R2-based analysis
Usage
kdkyrngtr2(data, outcome, treatment, bnch_reg, other_reg = NULL)
Arguments
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other covariates  | 
Value
a data frame with 2 columns and 1 row:
kd_high | 
 max(kD), a scalar  | 
ky_high | 
 max(kY), a scalar  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
r1 <- kdkyrngtr2(data=darfur,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth)
quasi-triangular probability distribution function
Description
quasi-triangular probability distribution function
Usage
linvx(x, xvec, k)
Arguments
x | 
 point (scalar) at which pdf is evaluated  | 
xvec | 
 vector of all possible x values  | 
k | 
 mode and median of the distribution  | 
Value
the value (scalar) of the pdf at x
Examples
xfull <- runif(n=100,min=0,max=10)
xpoint <- 5
xmod <- 2
res_pdf <- linvx(x=xpoint,xvec=xfull,k=xmod)
bias and std error for (kd,ky) using partial R2-based analysis without conditioning on treatment
Description
bias and std error for (kd,ky) using partial R2-based analysis without conditioning on treatment
Usage
pr2ncdbias(kd, ky, alpha, data, outcome, treatment, bnch_reg, other_reg = NULL)
Arguments
kd | 
 sensitivity parameter kD (scalar)  | 
ky | 
 sensitivity parameter kY (scalar)  | 
alpha | 
 significance level for hypothesis test (e.g. 0.05)  | 
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other covariate(s)  | 
Value
a list with the following elements:
adjestp | 
 Adj std error when unadj estimate>0  | 
adjestn | 
 Adj std error when unadj estimate<0  | 
cilbp | 
 Adj lower boundary of conf int when unadj estimate>0  | 
ciubp | 
 Adj upper boundary of conf int when unadj estimate>0  | 
cilbn | 
 Adj lower boundary of conf int when unadj estimate<0  | 
ciubn | 
 Adj upper boundary of conf int when unadj estimate<0  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
res4<-pr2ncdbias(kd=1,ky=1,alpha=0.05,data=darfur,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth)
probability of conclusion being overturned using partial R2-based analysis without conditioning on treatment
Description
probability of conclusion being overturned using partial R2-based analysis without conditioning on treatment
Usage
salpr2ncd(
  alpha,
  data,
  outcome,
  treatment,
  bnch_reg,
  other_reg,
  N,
  maxkd = NULL,
  maxky = NULL,
  k_kd = 1,
  k_ky = 1
)
Arguments
alpha | 
 significance level (scalar) for hypothesis test (e.g. 0.05)  | 
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other covariate(s)  | 
N | 
 number of points on grid = N^2  | 
maxkd | 
 max of sensitivity parameter kD  | 
maxky | 
 max of sensitivity parameter kY  | 
k_kd | 
 mode (and median) of sensitivity parameter kD  | 
k_ky | 
 mode (and median) of sensitivity parameter kY  | 
Value
list with the following elements:
dataplot | 
 data set used for contour plot  | 
kdmax | 
 max of sensitivity parameter kD  | 
kymax | 
 max of sensitivity parameter kY  | 
frac_prob | 
 prob of conclusion being overturned (unwt)  | 
frac_prob_wt | 
 prob of conclusion being overturned (wt)  | 
frac_prob_rest | 
 prob of conclusion being overturned (unwt, rest)  | 
frac_prob_rest_wt | 
 prob of conclusion being overturned (wt, rest)  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
darfur1 <- dplyr::slice_sample(darfur, prop=0.25)
res4 <- salpr2ncd(alpha=0.05,data=darfur1,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth,N=500)
probability of conclusion being overturned using total R2-based analysis
Description
probability of conclusion being overturned using total R2-based analysis
Usage
saltr2(
  alpha,
  data,
  outcome,
  treatment,
  bnch_reg,
  other_reg,
  N,
  maxkd = NULL,
  maxky = NULL,
  k_kd = 1,
  k_ky = 1
)
Arguments
alpha | 
 significance level for hypothesis test (e.g. 0.05)  | 
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other covariate(s)  | 
N | 
 number of points on grid = N^2  | 
maxkd | 
 max of sensitivity parameter kD  | 
maxky | 
 max of sensitivity parameter kY  | 
k_kd | 
 mode (and median) of sensitivity parameter kD  | 
k_ky | 
 mode (and median) of sensitivity parameter kY  | 
Value
list with the following elements:
dataplot | 
 data set used for contour plot  | 
kdmax | 
 max of sensitivity parameter kD  | 
kymax | 
 max of sensitivity parameter kY  | 
frac_prob | 
 prob of conclusion being overturned (unwt)  | 
frac_prob_wt | 
 prob of conclusion being overturned (wt)  | 
frac_prob_rest | 
 prob of conclusion being overturned (unwt, rest)  | 
frac_prob_rest_wt | 
 prob of conclusion being overturned (wt, rest)  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
darfur1 <- dplyr::slice_sample(darfur, prop=0.25)
res3 <- saltr2(alpha=0.05,data=darfur1,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth,N=500)
bias and std error for (kd,ky) using total R2-based analysis
Description
bias and std error for (kd,ky) using total R2-based analysis
Usage
tr2bias(kd, ky, alpha, data, outcome, treatment, bnch_reg, other_reg = NULL)
Arguments
kd | 
 sensitivity parameter kD (scalar)  | 
ky | 
 sensitivity parameter kY (scalar)  | 
alpha | 
 significance level for hypothesis test (e.g. 0.05)  | 
data | 
 data frame for analysis  | 
outcome | 
 name of outcome variable  | 
treatment | 
 name of treatment variable  | 
bnch_reg | 
 name(s) of benchmark covariate(s)  | 
other_reg | 
 name(s) of other covariate(s)  | 
Value
a list with the following elements:
adjestp | 
 Adj std error when unadj estimate>0  | 
adjestn | 
 Adj std error when unadj estimate<0  | 
cilbp | 
 Adj lower boundary of conf int when unadj estimate>0  | 
ciubp | 
 Adj upper boundary of conf int when unadj estimate>0  | 
cilbn | 
 Adj lower boundary of conf int when unadj estimate<0  | 
ciubn | 
 Adj upper boundary of conf int when unadj estimate<0  | 
Examples
require("sensemakr")
Y <- "peacefactor"
D <- "directlyharmed"
X <- "female"
X_oth <- c("village","age","farmer_dar","herder_dar","pastvoted","hhsize_darfur")
res2 <- tr2bias(kd=1,ky=1,alpha=0.05,data=darfur,outcome=Y,treatment=D,bnch_reg=X,other_reg=X_oth)