Description Usage Arguments Details Value Note Author(s) See Also Examples
View source: R/paf_confidence.R
Function that estimates confidence intervals for the Population
Attributable Fraction paf
from a cross-sectional sample of
the exposure X
with a known Relative Risk function rr
with meta-analytical
parameter theta
, where the Population Attributable Fraction is given
by:
PAF = mean(rr(X; theta) - 1)/mean(rr(X; theta)).
1 2 3 4 5 6 7 8 | paf.confidence(X, thetahat, rr, thetavar = NA, thetalow = NA,
thetaup = NA, method = "empirical", confidence_method = "bootstrap",
confidence = 95, confidence_theta = 99, nsim = 1000,
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", check_exposure = TRUE,
check_cft = TRUE, check_rr = TRUE, check_xvar = TRUE,
check_integrals = TRUE, check_thetas = TRUE, force.min = FALSE)
|
X |
Random sample ( |
thetahat |
Asymptotically consistent of Fisher consistent estimator ( |
rr |
**Optional** |
thetavar |
Estimator of variance |
thetalow |
( |
thetaup |
( |
method |
Either |
confidence_method |
Either |
confidence |
Confidence level % (default |
confidence_theta |
Confidence level % of |
nsim |
Number of simulations for estimation of variance. |
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
|
check_exposure |
|
check_cft |
|
check_rr |
|
check_xvar |
|
check_integrals |
|
check_thetas |
|
force.min |
Boolean indicating whether to force the |
The confidence_method
estimates confidence intervals with
different methods. A bootstrap approximation is conducted by
"bootstrap"
. The Delta Method is applied to paf
or log(paf)
when choosing "linear"
and "loglinear"
respectively. The "inverse"
method estimates confidence intervals
for the Relative Risk function rr
and applies the transformation
1 - 1/rr
. Finally, "one2one"
works with functions for which
the expected value over X
of the relative risk is injective in
theta
.
Additional information on confidence method estimations can be found
in the package's vignette: browseVignettes("pifpaf")
.
pafvec Vector with lower ("Lower_CI"
), and upper
("Upper_CI"
) confidence bounds for the paf
as well as
point estimate "Point_Estimate"
and estimated variance or variance
of log(paf)
(if confidence_method
is "loglinear"
).
paf.confidence
is a wrapper for
pif.confidence
with counterfactual of theoretical
minimum risk exposure (rr = 1
) .
For more information on kernels see density
.
Do not use the $
operator when using "approximate"
method
.
Rodrigo Zepeda-Tello rzepeda17@gmail.com
Dalia Camacho-Garc<c3><ad>a-Forment<c3><ad> daliaf172@gmail.com
pif.confidence
for confidence interval estimation of
pif
, and paf
for only point estimates.
Sensitivity analysis plots can be done with paf.plot
, and
paf.sensitivity
.
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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | #Example 1: Exponential Relative Risk
#--------------------------------------------
set.seed(18427)
X <- data.frame(Exposure = rnorm(100,3,1))
thetahat <- 0.32
thetavar <- 0.02
rr <- function(X, theta){exp(theta*X)}
#Using bootstrap method
paf.confidence(X, thetahat, rr, thetavar)
## Not run:
#Same example with loglinear method
paf.confidence(X, thetahat, rr, thetavar, confidence_method = "loglinear")
#Same example with linear method (usually the widest and least precise)
paf.confidence(X, thetahat, rr, thetavar, confidence_method = "linear")
#Same example with inverse method
paf.confidence(X, thetahat, rr, thetavar, confidence_method = "inverse")
#Same example with one2one method
#assume 99% ci of theta is [0.27, 0.35]
paf.confidence(X, thetahat, rr, thetalow = 0.27, thetaup = 0.35,
confidence_method = "one2one", confidence_theta = 99)
#Example 2: Linear Relative Risk with weighted sample
#--------------------------------------------
set.seed(18427)
X <- data.frame(Exposure = rbeta(100,3,1))
weights <- runif(100)
normalized_weights <- weights/sum(weights)
thetahat <- 0.17
thetavar <- 0.01
rr <- function(X, theta){theta*X^2 + 1}
paf.confidence(X, thetahat, rr, thetavar, weights = normalized_weights)
#Change the confidence level and paf method
paf.confidence(X, thetahat, rr, thetavar, weights = normalized_weights,
method = "kernel", confidence = 90)
#Example 3: Multivariate Linear Relative Risk
#--------------------------------------------
set.seed(18427)
X1 <- rnorm(100,4,1)
X2 <- rnorm(100,2,0.4)
thetahat <- c(0.12, 0.03)
thetavar <- diag(c(0.01, 0.02))
#But the approximate method crashes due to operator
Xmean <- data.frame(Exposure = mean(X1),
Covariate = mean(X2))
Xvar <- var(cbind(X1, X2))
#When creating relative risks avoid using the $ operator
#as it doesn't work under approximate method of PAF
rr_not <- function(X, theta){
exp(theta[1]*X$Exposure + theta[2]*X$Covariate)
}
rr_better <- function(X, theta){
exp(theta[1]*X[,"Exposure"] + theta[2]*X[,"Covariate"])
}
paf.confidence(Xmean, thetahat, rr_better, thetavar,
method = "approximate", Xvar = Xvar)
## End(Not run)
## Not run:
#Warning: $ operator in rr definitions don't work in approximate
paf.confidence(Xmean, thetahat, rr_not, thetavar,
method = "approximate", Xvar = Xvar)
## End(Not run)
## Not run:
#Example 4: Categorical Relative Risk & Exposure
#--------------------------------------------
set.seed(18427)
mysample <- sample(c("Normal","Overweight","Obese"), 100,
replace = TRUE, prob = c(0.4, 0.1, 0.5))
X <- data.frame(Exposure = mysample)
thetahat <- c(1, 1.2, 1.5)
thetavar <- diag(c(0.1, 0.2, 0.3))
#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)
}
paf.confidence(X, thetahat, rr, thetavar, check_rr = FALSE)
#Example 5: Continuous Exposure and Categorical Relative Risk
#------------------------------------------------------------------
set.seed(18427)
#Assume we have BMI from a sample
BMI <- data.frame(Exposure = rlnorm(100, 3.1, sdlog = 0.1))
#Theoretical minimum risk exposure is at 20kg/m^2 in borderline "Normal" category
BMI_adjusted <- BMI - 20
thetahat <- c(Malnourished = 2.2, Normal = 1, Overweight = 1.8,
Obese = 2.5)
thetavar <- diag(c(0.1, 0.2, 0.2, 0.1))
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"] < 0)] <- theta[1] #Malnourished
r_risk[intersect(which(X[,"Exposure"] >= 0),
which(X[,"Exposure"] < 5))] <- theta[2] #Normal
r_risk[intersect(which(X[,"Exposure"] >= 5),
which(X[,"Exposure"] < 10))] <- theta[3] #Overweight
r_risk[which(X[,"Exposure"] >= 10)] <- theta[4] #Obese
return(r_risk)
}
paf.confidence(BMI_adjusted, thetahat, rr, thetavar, check_exposure = FALSE)
#Example 6: Bivariate exposure and rr ("classical PAF")
#------------------------------------------------------------------
set.seed(18427)
mysample <- sample(c("Exposed","Unexposed"), 1000,
replace = TRUE, prob = c(0.1, 0.9))
X <- data.frame(Exposure = mysample)
theta <- c("Exposed" = 2.5, "Unexposed" = 1.2)
thetavar <- matrix(c(0.04, 0.02, 0.02, 0.03), ncol = 2)
rr <- function(X, theta){
#Create relative risk function
r_risk <- rep(1, nrow(X))
#Assign values of relative risk
r_risk[which(X[,"Exposure"] == "Unexposed")] <- theta["Unexposed"]
r_risk[which(X[,"Exposure"] == "Exposed")] <- theta["Exposed"]
return(r_risk)
}
paf.confidence(X, theta, rr, thetavar)
#Example 7: Continuous exposure, several covariates
#------------------------------------------------------------------
X <- data.frame(Exposure = rbeta(100, 2, 3),
Age = runif(100, 20, 100),
Sex = sample(c("M","F"), 100, replace = TRUE),
BMI = rlnorm(100, 3.2, 0.2))
thetahat <- c(-0.1, 0.05, 0.2, -0.4, 0.3, 0.1)
#Create variance of theta
almostvar <- matrix(runif(6^2), ncol = 6)
thetavar <- t(almostvar) %*% almostvar
rr <- function(X, theta){
#Create risk vector
Risk <- rep(1, nrow(X))
#Identify subpopulations
males <- which(X[,"Sex"] == "M")
females <- which(X[,"Sex"] == "F")
#Calculate population specific rr
Risk[males] <- theta[1]*X[males,"Exposure"] +
theta[2]*X[males,"Age"]^2 +
theta[3]*X[males,"BMI"]/2
Risk[females] <- theta[4]*X[females,"Exposure"] +
theta[5]*X[females,"Age"]^2 +
theta[6]*X[females,"BMI"]/2
return(Risk)
}
paf.confidence(X, thetahat, rr, thetavar)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.