Nothing
## -----------------------------------------------------------------------------
#| label: setup
#| message: false
library(qte)
library(ggplot2)
set.seed(42)
data(lalonde)
xf <- ~ age + I(age^2) + education + black + hispanic + married + nodegree
## -----------------------------------------------------------------------------
#| label: compute-results
#| include: false
# Results are precomputed and cached so CRAN's vignette rebuild doesn't have
# to re-run the bootstrap on every check. Delete precomputed/intro-results.rds
# and re-render to regenerate after a code change (see CLAUDE.md).
cache_file <- "precomputed/intro-results.rds"
use_cache <- file.exists(cache_file)
if (use_cache) {
cached <- readRDS(cache_file)
res_exp <- cached$res_exp
res_psid <- cached$res_psid
res_qtt <- cached$res_qtt
} else {
res_exp <- unc_qte(
yname = "re78",
dname = "treat",
data = lalonde.exp,
target = "qte",
probs = seq(0.1, 0.9, 0.1),
biters = 100
)
res_psid <- unc_qte(
yname = "re78",
dname = "treat",
data = lalonde.psid,
xformla = xf,
est_method = "aipw",
target = "qte",
probs = seq(0.1, 0.9, 0.1),
biters = 100
)
res_qtt <- unc_qte(
yname = "re78",
dname = "treat",
data = lalonde.psid,
xformla = xf,
est_method = "aipw",
target = "qtt",
probs = seq(0.1, 0.9, 0.1),
biters = 100
)
# pscore.reg (fitted glm) carries a full copy of the training data and is
# never read by summary()/autoplot(); dropping it keeps the cache small.
save_psid <- res_psid; save_psid$pscore.reg <- NULL
save_qtt <- res_qtt; save_qtt$pscore.reg <- NULL
saveRDS(list(res_exp = res_exp, res_psid = save_psid, res_qtt = save_qtt), cache_file)
}
## -----------------------------------------------------------------------------
#| label: random-qte
#| eval: false
# res_exp <- unc_qte(
# yname = "re78",
# dname = "treat",
# data = lalonde.exp,
# target = "qte",
# probs = seq(0.1, 0.9, 0.1),
# biters = 100
# )
# summary(res_exp)
## -----------------------------------------------------------------------------
#| label: random-qte-output
#| echo: false
summary(res_exp)
## -----------------------------------------------------------------------------
#| label: random-qte-plot
#| fig-alt: "QTE curve under random assignment"
autoplot(res_exp, ylab = "QTE (earnings, 1978)")
## -----------------------------------------------------------------------------
#| label: obs-qte
#| eval: false
# xf <- ~ age + I(age^2) + education + black + hispanic + married + nodegree
#
# res_psid <- unc_qte(
# yname = "re78",
# dname = "treat",
# data = lalonde.psid,
# xformla = xf,
# est_method = "aipw",
# target = "qte",
# probs = seq(0.1, 0.9, 0.1),
# biters = 100
# )
# summary(res_psid)
## -----------------------------------------------------------------------------
#| label: obs-qte-output
#| echo: false
summary(res_psid)
## -----------------------------------------------------------------------------
#| label: obs-qte-plot
#| fig-alt: "QTE curve under unconfoundedness"
autoplot(res_psid, ylab = "QTE (earnings, 1978)")
## -----------------------------------------------------------------------------
#| label: qtt
#| eval: false
# res_qtt <- unc_qte(
# yname = "re78",
# dname = "treat",
# data = lalonde.psid,
# xformla = xf,
# est_method = "aipw",
# target = "qtt",
# probs = seq(0.1, 0.9, 0.1),
# biters = 100
# )
# summary(res_qtt)
## -----------------------------------------------------------------------------
#| label: qtt-output
#| echo: false
summary(res_qtt)
## -----------------------------------------------------------------------------
#| label: qtt-plot
#| fig-alt: "QTT curve under unconfoundedness"
autoplot(res_qtt, ylab = "QTT (earnings, 1978)")
## -----------------------------------------------------------------------------
#| label: custom-plot
#| eval: false
# autoplot(res_qtt) +
# ggplot2::labs(title = "QTT — Lalonde (observational)",
# subtitle = "AIPW with pre-treatment covariates")
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.