A manual to show the R package TippingPoint.

Introduction

The TippingPoint package aims to handle missing outcome data by listing out all the possible combinations of the values of missing data in two treatment arms, calculating 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. Several examples are used to explain the idea.

# If you haven't install the package, you can download it from cran

# install.packages("TipingPoint")

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

Basic plot

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

Using imputed data

# 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