| 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)