A manual to show the R package TippingPoint
.
The TippingPoint
package aims to handle missing outcome data by listing out all the possible combinations of missing values in two treatment arms, calculating the corresponding estimated treatment effects and p-values, finding the margin (the so-called Tipping Point) that would change the result of the study, and drawing a colored heat-map to visualize them. In addition, the package provides a visualized method to compare various imputation methods by adding the rectangles or convex hulls on the basic plot. Some examples are displayed below to explain the idea.
# the package can be downloaded from cran and github:
# install.packages("TipingPoint")
# devtools::install_github("XikunHan/TippingPoint")
library(TippingPoint)
# Load the dataset
data(tippingdata)
# Show the first 6 rows of the data
head(tippingdata)
#> continuous binary educ female treat
#> 1 119.7820 1 12 0 1
#> 2 117.7729 0 16 0 1
#> 3 124.7833 0 12 1 1
#> 4 123.3546 0 12 1 1
#> 5 124.6611 0 12 1 1
#> 6 NA 1 15 0 1
## for binary outcome
# Using `estimate`
TippingPoint(outcome=tippingdata$binary,
treat= tippingdata$treat,group.infor=TRUE,
plot.type = "estimate",ind.values = TRUE,
impValuesT = NA, impValuesC = NA,
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(0.38,0.4), HistMeanC = c(0.2,0.55))
#>
#> Group Information:
#>
#> Groups Treatment Control
#> Size 150 120
#> Number of nonrespondents 13 27
#> % of nonrespondents 0.08666667 0.225
#> Observed proportion 0.5328467 0.5376344
# Using `p.value` with formula class
TippingPoint(binary~treat, data=tippingdata,
plot.type = "p.value",ind.values = TRUE,
impValuesT = NA, impValuesC = NA,
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(0.38,0.4), HistMeanC = c(0.2,0.55))
# Using `both`
TippingPoint(outcome=tippingdata$binary,treat= tippingdata$treat,
plot.type = "both",ind.values = TRUE,
impValuesT = NA, impValuesC = NA,
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(0.38,0.4), HistMeanC = c(0.2,0.55))
# for continuous outcome
TippingPoint(continuous~treat, data=tippingdata,
group.infor=TRUE, plot.type = "estimate",ind.values = TRUE,
impValuesT = NA, impValuesC = NA,
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(120), HistMeanC = c(131,137))
#>
#> Group Information:
#>
#> Groups Treatment Control
#> Size 150 120
#> Number of nonrespondents 26 39
#> % of nonrespondents 0.1733333 0.325
#> Observed average response 127.6397 122.6907
#> Observed min response 105.6767 73.54343
#> Observed max response 152.8064 152.8064
TippingPoint(outcome=tippingdata$continuous,treat= tippingdata$treat,
plot.type = "p.value",ind.values = TRUE,
impValuesT = NA, impValuesC = NA,
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(120), HistMeanC = c(131,137))
TippingPoint(outcome=tippingdata$continuous,treat= tippingdata$treat,
plot.type = "both",ind.values = TRUE,
impValuesT = NA, impValuesC = NA,
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(120), HistMeanC = c(131,137))
# Load the imputed dataset
data(imputedata)
# Show the first 6 rows of the data
head(imputedata)
#> MAR_T1 MAR_C1 MAR_T2 MAR_C2 MCAR_T1 MCAR_C1 MCAR_T2 MCAR_C2
#> 1 118.1192 122.8743 7 14 128.4723 129.7369 6 13
#> 2 129.7815 124.6130 5 19 130.1233 126.1398 6 11
#> 3 124.3407 122.6200 5 17 124.9609 128.7701 5 14
#> 4 126.6131 126.6311 4 15 126.9734 126.3991 4 10
#> 5 127.8940 126.4212 8 16 125.9800 130.9947 5 10
#> 6 122.1164 121.5700 4 13 127.0293 128.4050 5 13
## for binary outcome
TippingPoint(outcome=tippingdata$binary,
treat= tippingdata$treat, group.infor=TRUE,
plot.type = "estimate",ind.values = TRUE,
impValuesT = imputedata[,c("MAR_T2","MCAR_T2")],
impValuesC = imputedata[,c("MAR_C2","MCAR_C2")],
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(0.38,0.4), HistMeanC = c(0.2,0.55))
#>
#> Group Information:
#>
#> Groups Treatment Control
#> Size 150 120
#> Number of nonrespondents 13 27
#> % of nonrespondents 0.08666667 0.225
#> Observed proportion 0.5328467 0.5376344
# User-defined colors
TippingPoint(outcome=tippingdata$binary,treat= tippingdata$treat,
plot.type = "p.value",ind.values = TRUE,
impValuesT = imputedata[,c("MAR_T2","MCAR_T2")],
impValuesC = imputedata[,c("MAR_C2","MCAR_C2")],
impValuesColor = RColorBrewer::brewer.pal(8,"Accent")[5:6],
summary.type = "credible.region", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(0.38,0.4), HistMeanC = c(0.2,0.55))
# Using `point.size` and `point.shape` to control the points.
TippingPoint(outcome=tippingdata$binary,treat= tippingdata$treat,
plot.type = "both",ind.values = TRUE,
impValuesT = imputedata[,c("MAR_T2","MCAR_T2")],
impValuesC = imputedata[,c("MAR_C2","MCAR_C2")],
impValuesColor =c("red","blue"),
point.size=0.8,point.shape = 15,
summary.type = "convex.hull", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(0.38,0.4), HistMeanC = c(0.2,0.55))
## for continuous outcome
TippingPoint(outcome=tippingdata$continuous,
treat= tippingdata$treat, group.infor=TRUE,
plot.type = "p.value",ind.values = TRUE,
impValuesT = imputedata[,c("MAR_T1","MCAR_T1")],
impValuesC = imputedata[,c("MAR_C1","MCAR_C1")],
summary.type = "density", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(120), HistMeanC = c(131,137))
#>
#> Group Information:
#>
#> Groups Treatment Control
#> Size 150 120
#> Number of nonrespondents 26 39
#> % of nonrespondents 0.1733333 0.325
#> Observed average response 127.6397 122.6907
#> Observed min response 105.6767 73.54343
#> Observed max response 152.8064 152.8064
# Using `point.size` and `point.shape` to control the points.
TippingPoint(outcome=tippingdata$continuous,treat= tippingdata$treat,
plot.type = "p.value",ind.values = TRUE,
impValuesT = imputedata[,c("MAR_T1","MCAR_T1")],
impValuesC = imputedata[,c("MAR_C1","MCAR_C1")],
point.size = 0.8, point.shape = 15,
summary.type = "credible.region", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(120), HistMeanC = c(131,137))
TippingPoint(outcome=tippingdata$continuous,treat= tippingdata$treat,
plot.type = "both",ind.values = TRUE,
impValuesT = imputedata[,c("MAR_T1","MCAR_T1")],
impValuesC = imputedata[,c("MAR_C1","MCAR_C1")],
summary.type = "convex.hull", alpha = 0.95, S=1.5, n.grid = 100,
HistMeanT = c(120), HistMeanC = c(131,137))
The TippingPoint
package is created based on Liublinska and Rubin’s work. For more details: