Learn R Programming

SimpleTable (version 0.1-2)

ConfoundingPlot: Confounding Plot of Quinn (2008)

Description

ConfoundingPlot implements the "confounding plot" discussed in Quinn (2008). This plot displays, in the context of binary treatment ($X = 0$: control, $1$: treatment) and binary outcome ($Y = 0$: failure, $1$: success), all types of unmeasured confounding that would keep a true causal effect of interest within some user-defined tolerance of the estimated causal effect.

Usage

ConfoundingPlot(theta00, theta01, theta10, theta11, conditioning = c("None", "Treated", "Control"), PrY1.setX0 = NULL, PrY1.setX1 = NULL, PrY1.setX0.withinTreated = NULL, PrY1.setX1.withinControl = NULL, epsilon = 0.025, color = "black", legend = FALSE)

Arguments

theta00
The observed joint probability that $X$ is control and $Y$ is failure ($Pr(X=0, Y=0)$). In a 2 x 2 table in which $C00$ is the number of observations in the ($X=0$, $Y=0$) cell and in which there are $C$ total observations one can consistently estimate theta00 with $C00/C$.
theta01
The observed joint probability that $X$ is control and $Y$ is success ($Pr(X=0, Y=1)$). In a 2 x 2 table in which $C01$ is the number of observations in the ($X=0$, $Y=1$) cell and in which there are $C$ total observations one can consistently estimate theta01 with $C01/C$.
theta10
The observed joint probability that $X$ is treatment and $Y$ is failure ($Pr(X=1, Y=0)$). In a 2 x 2 table in which $C10$ is the number of observations in the ($X=1$, $Y=0$) cell and in which there are $C$ total observations one can consistently estimate theta10 with $C10/C$.
theta11
The observed joint probability that $X$ is treatment and $Y$ is success ($Pr(X=1, Y=1)$). In a 2 x 2 table in which $C11$ is the number of observations in the ($X=1$, $Y=1$) cell and in which there are $C$ total observations one can consistently estimate theta11 with $C1/C$.
conditioning
A string detailing whether the post-intervention distribution, and hence the estimand of interest, is restricted to a particular subgroup. Possible values are: None, Treated, and Control. If conditioning = None then the post-intervention distribution is for all units. This is consistent with the causal estimand being the average treatment effect (ATE). If conditioning = Treated then the post-intervention is calculated only for just the treated units. This is consistent with the causal estimand being the average treatment effect within the treated (ATT). Finally, if conditioning = Control then the post-intervention distribution is calculated for just the control units. this is consistent with the causal estimand being the average treatment effect within the controls (ATC). Default is None.
PrY1.setX0
Optional value giving the assumed probability that a randomly chosen unit will have $Y=1$ (success) if its $X$ value is set to $0$ (control) by outside intervention. If PrY1.setX0 = NULL (the default) then PrY1.setX0 is set to the observed conditional probability that $Y$ is $1$ given that $X$ is 0. In the terms of Quinn (2008), the reference distribution is the prima facie post-intervention distribution. Setting PrY1.setX0 to some non-NULL value allows one to use reference distributions other than the prima facie post-intervention distribution. This is useful if one wants to start with a particular value for ATE (that is not the prima facie ATE) and see how unmeasured confounding might affect that inference. Only applicable if conditioning = None.
PrY1.setX1
Optional value giving the assumed probability that a randomly chosen unit will have $Y=1$ (success) if its $X$ value is set to $1$ (treatment) by outside intervention. If PrY1.setX1 = NULL (the default) then PrY1.setX1 is set to the observed conditional probability that $Y$ is $1$ given that $X$ is 1. In the terms of Quinn (2008), the reference distribution is the prima facie post-intervention distribution. Setting PrY1.setX1 to some non-NULL value allows one to use reference distributions other than the prima facie post-intervention distribution. This is useful if one wants to start with a particular value for ATE (that is not the prima facie ATE) and see how unmeasured confounding might affect that inference. Only applicable if conditioning = None.
PrY1.setX0.withinTreated
Optional value giving the assumed probability that a randomly chosen unit which received treatment would have $Y=1$ (success) if its $X$ value were set to $0$ (control) by outside intervention. If PrY1.setX0.withinTreated = NULL (the default) then PrY1.setX0.withinTreated is set to the observed conditional probability that $Y$ is $1$ given that $X$ is 0. In the terms of Quinn (2008), the reference distribution is the prima facie post-intervention distribution. Setting PrY1.setX0.withinTreated to some non-NULL value allows one to use reference distributions other than the prima facie post-intervention distribution. This is useful if one wants to start with a particular value for ATT (that is not the prima facie ATT) and see how unmeasured confounding might affect that inference. Only applicable if conditioning = Treated.
PrY1.setX1.withinControl
Optional value giving the assumed probability that a randomly chosen unit which received control would have $Y=1$ (success) if its $X$ value were set to $1$ (treatment) by outside intervention. If PrY1.setX1.withinControl = NULL (the default) then PrY1.setX1.withinControl is set to the observed conditional probability that $Y$ is $1$ given that $X$ is 1. In the terms of Quinn (2008), the reference distribution is the prima facie post-intervention distribution. Setting PrY1.setX1.withinControl to some non-NULL value allows one to use reference distributions other than the prima facie post-intervention distribution. This is useful if one wants to start with a particular value for ATC (that is not the prima facie ATC) and see how unmeasured confounding might affect that inference. Only applicable if conditioning = Control.
epsilon
A scalar or array of tolerance values between 0 and 1. The plot depicts all regions of the space of confounders for which the absolute difference between the true post-intervention distribution and the assumed post-intervention distribution is less than epsilon. See Quinn (2008) for details. If epsilon is an array then color (see below) must also be an array and the various tolerance regions will be overlaid in color.
color
An array of colors for the plotting regions. color must have length equal to the length of epsilon (see above).
legend
Logical value indicating whether a legend should be printed.

Details

For full details see Quinn (2008).

References

Quinn, Kevin M. 2008. ``What Can Be Learned from a Simple Table: Bayesian Inference and Sensitivity Analysis for Causal Effects from 2 x 2 and 2 x 2 x K Tables in the Presence of Unmeasured Confounding.'' Working Paper.

See Also

analyze2x2, analyze2x2xK, ElicitPsi,

Examples

Run this code
## Example from Quinn (2008)
## (original data from Oliver and Wolfinger. 1999. 
##   ``Jury Aversion and Voter Registration.'' 
##     American Political Science Review. 93: 147-152.)
##
##        Y=0       Y=1
## X=0    19        143
## X=1    114       473
##

C <- 19 + 143 + 114 + 473
theta00 <- 19/C
theta01 <- 143/C
theta10 <- 114/C
theta11 <- 473/C

## may have to adjust size of graphics device to make labels readable
ConfoundingPlot(theta00=theta00, theta01=theta01, 
	        theta10=theta10, theta11=theta11, legend=TRUE)


## same data but with various epsilons and a legend
## may have to adjust size of graphics device to make labels readable
ConfoundingPlot(theta00=theta00, theta01=theta01, 
	        theta10=theta10, theta11=theta11, 
		epsilon=c(.01, .025, .05, .1), 
		color=c("black", "darkblue", "blue", "cyan"), 
		legend=TRUE)

         

## same data but reference distribution is now just within the treated
## may have to adjust size of graphics device to make labels readable
ConfoundingPlot(theta00=theta00, theta01=theta01, 
	        theta10=theta10, theta11=theta11, 
		conditioning="Treated", legend=TRUE)



## set PrY1.setX0 and PrY1.setX1 in order to get a reference
## post-intervention distribution that is consistent with 
## ATE = -0.2 (note there are many ways to do this)
## may have to adjust size of graphics device to make labels readable
ConfoundingPlot(theta00=theta00, theta01=theta01, 
	        theta10=theta10, theta11=theta11, 
		PrY1.setX0=.9, PrY1.setX1=.7,
		legend=TRUE)


## another way to get ATE = -0.2
## may have to adjust size of graphics device to make labels readable
ConfoundingPlot(theta00=theta00, theta01=theta01, 
	        theta10=theta10, theta11=theta11, 
		PrY1.setX0=.85, PrY1.setX1=.65,
		legend=TRUE)


## a way to get ATE = -0.2 that is impossible given the observed data
##  (note the complete lack of any shaded regions in the left panel of plot)
## may have to adjust size of graphics device to make labels readable
ConfoundingPlot(theta00=theta00, theta01=theta01, 
	        theta10=theta10, theta11=theta11, 
		PrY1.setX0=.5, PrY1.setX1=.3,
		legend=TRUE)


Run the code above in your browser using DataLab