Nothing
## ----include = FALSE----------------------------------------------------------
library("targeted")
## ----sim-continuous-----------------------------------------------------------
sim_data <- function(n = 2000) {
w1 <- rnorm(n)
w2 <- rnorm(n)
a <- rbinom(n, 1, plogis(-1 + w1))
y <- cos(w1) + w2 * a + 0.2 * w2^2 + a + rnorm(n)
data.frame(y = y, a = a, w1 = w1, w2 = w2)
}
set.seed(2025)
d <- sim_data(2000)
## ----ate-parametric-----------------------------------------------------------
est <- cate(
response.model = y ~ a * (w1 + w2),
treatment.model = a ~ w1 + w2,
cate.model = ~1,
data = d
)
est
## ----ate-crossfit-------------------------------------------------------------
est_cf <- cate(
response.model = y ~ a * (w1 + w2),
treatment.model = a ~ w1 + w2,
cate.model = ~1,
data = d,
nfolds = 5
)
est_cf
## ----ate-gam------------------------------------------------------------------
est_gam <- cate(
response.model = learner_gam(y ~ s(w1) + s(w2)),
treatment.model = learner_glm(a ~ w1 + w2, family = binomial),
cate.model = ~1,
data = d,
nfolds = 5,
stratify = TRUE
)
est_gam
## ----ate-sl-------------------------------------------------------------------
outcome_model <- learner_sl(
list(
glm = learner_glm(y ~ w1 * w2),
gam = learner_gam(y ~ s(w1) + s(w2))
),
nfolds = 5
)
est_sl <- cate(
response.model = outcome_model,
treatment.model = learner_glm(a ~ w1 + w2, family = binomial),
cate.model = ~1,
data = d,
nfolds = 5,
stratify = TRUE
)
est_sl
## ----sim-binary---------------------------------------------------------------
sim_binary <- function(n = 2000) {
w1 <- rnorm(n)
w2 <- rnorm(n)
a <- rbinom(n, 1, plogis(-0.5 + 0.5 * w1))
p1 <- plogis(-1 + 0.5 * w1 - 0.3 * w2 + 0.8 * a)
y <- rbinom(n, 1, p1)
data.frame(y = y, a = a, w1 = w1, w2 = w2)
}
set.seed(2025)
db <- sim_binary(3000)
## ----ate-binary---------------------------------------------------------------
est_bin <- cate(
response.model = learner_glm(y ~ a * (w1 + w2), family = binomial),
treatment.model = learner_glm(a ~ w1 + w2, family = binomial),
cate.model = ~1,
data = db,
nfolds = 5
)
est_bin
## ----ate-or-------------------------------------------------------------------
or <- with(lava::estimate(est_bin$estimate),
lava::logit(`E[y(1)]`) - lava::logit(`E[y(0)]`))
merge(or, exp(or), labels = c("log(OR)", "OR"))
## ----sessioninfo--------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.