pkonfound: Perform sensitivity analysis for published studies

View source: R/pkonfound.R

pkonfoundR Documentation

Perform sensitivity analysis for published studies

Description

For published studies, this command calculates (1) how much bias there must be in an estimate to invalidate/sustain an inference; (2) the impact of an omitted variable necessary to invalidate/sustain an inference for a regression coefficient.

Usage

pkonfound(
  est_eff,
  std_err,
  n_obs,
  n_covariates = 1,
  alpha = 0.05,
  tails = 2,
  index = "RIR",
  nu = 0,
  n_treat = NULL,
  switch_trm = TRUE,
  model_type = "ols",
  a = NULL,
  b = NULL,
  c = NULL,
  d = NULL,
  two_by_two_table = NULL,
  test = "fisher",
  replace = "control",
  sdx = NA,
  sdy = NA,
  R2 = NA,
  far_bound = 0,
  eff_thr = NA,
  FR2max = 0,
  FR2max_multiplier = 1.3,
  to_return = "print"
)

Arguments

est_eff

the estimated effect (such as an unstandardized beta coefficient or a group mean difference)

std_err

the standard error of the estimate of the unstandardized regression coefficient

n_obs

the number of observations in the sample

n_covariates

the number of covariates in the regression model

alpha

probability of rejecting the null hypothesis (defaults to 0.05)

tails

integer whether hypothesis testing is one-tailed (1) or two-tailed (2; defaults to 2)

index

whether output is RIR or IT (impact threshold); defaults to "RIR"

nu

what hypothesis to be tested; defaults to testing whether est_eff is significantly different from 0

n_treat

the number of cases associated with the treatment condition; applicable only when model_type = "logistic"

switch_trm

whether to switch the treatment and control cases; defaults to FALSE; applicable only when model_type = "logistic"

model_type

the type of model being estimated; defaults to "ols" for a linear regression model; the other option is "logistic"

a

cell is the number of cases in the control group showing unsuccessful results

b

cell is the number of cases in the control group showing successful results

c

cell is the number of cases in the treatment group showing unsuccessful results

d

cell is the number of cases in the treatment group showing successful results

two_by_two_table

table that is a matrix or can be coerced to one (data.frame, tibble, tribble) from which the a, b, c, and d arguments can be extracted

test

whether using Fisher's Exact Test or A chi-square test; defaults to Fisher's Exact Test

replace

whether using entire sample or the control group to calculate the base rate; default is control

sdx

the standard deviation of X

sdy

the standard deviation of Y

R2

the unadjusted, original R2 in the observed function

far_bound

whether the estimated effect is moved to the boundary closer (default 0) or further away (1);

eff_thr

for RIR: unstandardized coefficient threshold to change an inference; for IT: correlation defining the threshold for inference

FR2max

the largest R2, or R2max, in the final model with unobserved confounder

FR2max_multiplier

the multiplier of R2 to get R2max, default is set to 1.3

to_return

whether to return a data.frame (by specifying this argument to equal "raw_output" for use in other analyses) or a plot ("plot"); default is to print ("print") the output to the console; can specify a vector of output to return

Value

pkonfound prints the bias and the number of cases that would have to be replaced with cases for which there is no effect to nullify the inference. If to_return = "raw_output," a list will be given with the following components:

obs_r

correlation between predictor of interest (X) and outcome (Y) in the sample data.

act_r

correlation between predictor of interest (X) and outcome (Y) from the sample regression based on the t-ratio accounting for non-zero null hypothesis.

critical_r

critical correlation value at which the inference would be nullified (e.g., associated with p=.05).

r_final

final correlation value given CV. Should be equal to critical_r.

rxcv

correlation between predictor of interest (X) and CV necessary to nullify the inference for smallest impact.

rycv

correlation between outcome (Y) and CV necessary to nullify the inference for smallest impact.

rxcvGz

correlation between predictor of interest and CV necessary to nullify the inference for smallest impact conditioning on all observed covariates (given z).

rycvGz

correlation between outcome and CV necessary to nullify the inference for smallest impact conditioning on all observed covariates (given z).

itcvGz

ITCV conditioning on the observed covariates.

itcv

Unconditional ITCV.

r2xz

R2 using all observed covariates to explain the predictor of interest (X).

r2yz

R2 using all observed covariates to explain the outcome (Y).

delta_star

delta calculated using Oster's unrestricted estimator.

delta_star_restricted

delta calculated using Oster's restricted estimator.

delta_exact

correlation-based delta.

delta_pctbias

percent of bias when comparing delta_star with delta_exact.

cor_oster

correlation matrix implied by delta_star.

cor_exact

correlation matrix implied by delta_exact.

beta_threshold

threshold value for estimated effect.

beta_threshold_verify

estimated effect given RIR. Should be equal to beta_threshold.

perc_bias_to_change

percent bias to change the inference.

RIR_primary

Robustness of Inference to Replacement (RIR).

RIR_supplemental

RIR for an extra row or column that is needed to nullify the inference.

RIR_perc

RIR as % of total sample (for linear regression) or as % of data points in the cell where replacement takes place (for logistic and 2 by 2 table).

fragility_primary

Fragility. the number of switches (e.g., treatment success to treatment failure) to nullify the inference.

fragility_supplemental

Fragility for an extra row or column that is needed to nullify the inference.

starting_table

Observed 2 by 2 table before replacement and switching. Implied table for logistic regression.

final_table

The 2 by 2 table after replacement and switching.

user_SE

user entered standard error. Only applicable for logistic regression.

needtworows

whether double row switches are needed.

analysis_SE

the standard error used to generate a plausible 2 by 2 table. Only applicable for logistic regression.

Fig_ITCV

figure for ITCV.

Fig_RIR

figure for RIR.

Examples

# using pkonfound for linear models
pkonfound(2, .4, 100, 3)
pkonfound(-2.2, .65, 200, 3)
pkonfound(.5, 3, 200, 3)
pkonfound(-0.2, 0.103, 20888, 3, n_treat = 17888, model_type = "logistic")

pkonfound(2, .4, 100, 3, to_return = "thresh_plot")
pkonfound(2, .4, 100, 3, to_return = "corr_plot")

# using pkonfound for a 2x2 table
pkonfound(a = 35, b = 17, c = 17, d = 38)
pkonfound(a = 35, b = 17, c = 17, d = 38, alpha = 0.01)
pkonfound(a = 35, b = 17, c = 17, d = 38, alpha = 0.01, switch_trm = FALSE)
pkonfound(a = 35, b = 17, c = 17, d = 38, test = "chisq")

# use pkonfound to calculate delta* and delta_exact 
pkonfound(est_eff = .4, std_err = .1, n_obs = 290, sdx = 2, sdy = 6, R2 = .7,
 eff_thr = 0, FR2max = .8, index = "COP", to_return = "raw_output")
# use pkonfound to calculate rxcv and rycv when preserving standard error
pkonfound(est_eff = .5, std_err = .056, n_obs = 6174, eff_thr = .1,
sdx = 0.22, sdy = 1, R2 = .3, index = "PSE", to_return = "raw_output")


konfound documentation built on Oct. 17, 2024, 5:08 p.m.