Description Usage Arguments Value Author(s) See Also Examples
Provides a graphical sensitivity analysis for pif by
varying the parameters of a bivariate counterfactual function cft.
By default it evaluates the counterfactual:
cft(X) = aX + b.
| 1 2 3 4 5 6 7 8 9 10 | pif.heatmap(X, thetahat, rr, cft = function(X, a, b) {     a * X + b },
  method = "empirical", weights = rep(1/nrow(as.matrix(X)),
  nrow(as.matrix(X))), Xvar = var(X), deriv.method.args = list(),
  deriv.method = "Richardson", adjust = 1, n = 512, ktype = "gaussian",
  bw = "SJ", legendtitle = "PIF", mina = 0, maxa = 1, minb = -1,
  maxb = 0, nmesh = 10,
  title = paste0("Potential Impact Fraction (PIF) with counterfactual",
  "\nf(X)= aX+b"), xlab = "a", ylab = "b",
  colors = rev(heat.colors(nmesh)), check_exposure = TRUE,
  check_rr = TRUE, check_integrals = TRUE)
 | 
| X | Random sample ( | 
| thetahat | Asymptotically consistent or Fisher consistent estimator ( | 
| rr | 
 **Optional** | 
| cft | 
 | 
| method | Either  | 
| weights | Normalized survey  | 
| Xvar | Variance of exposure levels (for  | 
| deriv.method.args | 
 | 
| deriv.method | 
 | 
| adjust | Adjust bandwith parameter (for  | 
| n | Number of equally spaced points at which the density (for 
 | 
| ktype | 
 | 
| bw | Smoothing bandwith parameter (for 
 | 
| legendtitle | 
 | 
| mina | Minimum for parameter  | 
| maxa | Maximum for parameter  | 
| minb | Minimum for parameter  | 
| maxb | Maximum for parameter  | 
| nmesh | Number of tiles in plot (default  | 
| title | 
 | 
| xlab | 
 | 
| ylab | 
 | 
| colors | 
 | 
| check_exposure | 
 | 
| check_rr | 
 | 
| check_integrals | 
 | 
plotpif      ggplot object plotting a heatmap
with sensitivity analysis of the counterfactual.
Rodrigo Zepeda-Tello rzepeda17@gmail.com
Dalia Camacho-Garc<c3><ad>a-Forment<c3><ad> daliaf172@gmail.com
See pif for Potential Impact Fraction estimation,
pif.sensitivity for sensitivity analysis of the convergence
process,  pif.plot for a plot of Potential Impact
Fraction as a function of the relative risk's parameter theta.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | ## Not run: 
#Example 1
#------------------------------------------------------------------
X  <- data.frame(rnorm(25,3))            #Sample
rr <- function(X,theta){exp(X*theta)}    #Relative risk
theta <- 0.01                            #Estimate of theta
pif.heatmap(X, theta = theta, rr = rr)
#Save file using ggplot2
#require(ggplot2)
#ggsave("My Potential Impact Fraction Heatmap Analysis.pdf")
#Change pif estimation method to kernel
pif.heatmap(X, theta = theta, rr = rr, method = "kernel")
#Example 2
#------------------------------------------------------------------
X     <- data.frame(Exposure = rbeta(100, 1, 0.2))
theta <- c(0.12, 1)
rr    <- function(X,theta){X*theta[1] + theta[2]}
cft   <- function(X, a, b){sin(a*X)*b}
pif.heatmap(X, theta = theta, rr = rr, cft = cft, 
     nmesh = 15, colors = rainbow(30), method = "empirical",
     title = "PIF with counterfactual cft(X) = sin(a*X)*b")
#Change estimation method to approximate
Xmean <- data.frame(mean(X[,"Exposure"]))
Xvar  <- var(X)
pif.heatmap(Xmean, Xvar = Xvar, theta = theta, rr = rr, cft = cft, 
     nmesh = 15, colors = rainbow(30), method = "approximate",
     title = "PIF with counterfactual cft(X) = sin(a*X)*b")
#Example 3: Plot univariate counterfactuals
#------------------------------------------------------------------
X       <- data.frame(rgamma(100, 1, 0.2))
theta   <- c(0.12, 1)
rr      <- function(X,theta){X*theta[1] + theta[2]}
cft     <- function(X, a, b){sqrt(a*X)}   #Leave two variables in it
pifplot <- pif.heatmap(X, theta = theta, rr = rr, 
 cft = cft, mina = 0, maxa = 1, minb = 0, maxb = 0, 
 legendtitle = "Potential Impact Fraction",
 title ="Univariate counterfactual", ylab = "", colors = topo.colors(10))
pifplot
#You can also add additional ggplot objects
#require(ggplot2)
#pifplot + annotate("text", x = 0.25, y = 0.4, label = "10yr scenario") + 
#geom_vline(aes(xintercept = 0.5), linetype = "dashed") +
#geom_segment(aes(x = 0.25, y = 0.38, xend = 0.5, yend = 0.3), 
#arrow = arrow(length = unit(0.25, "cm")))
#Example 4: Plot counterfactual with categorical risks
#------------------------------------------------------------------
set.seed(18427)
X        <- data.frame(Exposure = 
              sample(c("Normal","Overweight","Obese"), 100, 
                      replace = TRUE, prob = c(0.4, 0.1, 0.5)))
thetahat <- c(1, 1.7, 2)
#Categorical relative risk function
rr <- function(X, theta){
   #Create return vector with default risk of 1
   r_risk <- rep(1, nrow(X))
   
   #Assign categorical relative risk
   r_risk[which(X[,"Exposure"] == "Normal")]      <- thetahat[1]
   r_risk[which(X[,"Exposure"] == "Overweight")]  <- thetahat[2]
   r_risk[which(X[,"Exposure"] == "Obese")]       <- thetahat[3]
   
   return(r_risk)
}
#Counterfactual of reducing a certain percent of obesity and overweight cases
#to normality
cft <- function(X, per.over, per.obese){
   #Find the overweight and obese individuals
   which_obese <- which(X[,"Exposure"] == "Obese")
   which_over  <- which(X[,"Exposure"] == "Overweight")
   
   #Reduce per.over % of overweight and per.obese % of obese
   X[sample(which_obese, length(which_obese)*per.obese),
       "Exposure"] <- "Normal"
   X[sample(which_over,  length(which_over)*per.over),
       "Exposure"] <- "Normal"
   
   return(X)
}
pif.heatmap(X, thetahat = thetahat, rr = rr, cft = cft, mina = 0, minb = 0, maxa = 1, 
            maxb = 1, title = "PIF of excess-weight reduction",
            xlab = "% Overweight cases", ylab = "% Obese cases",
            check_exposure = FALSE, check_rr = FALSE)
## End(Not run)
 | 
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.