iw_est | R Documentation |
This is a nonparametric method that estimates the ADRF by using a local linear
regression of Y
on treat
with weighted kernel function. For
details, see Flores et. al. (2012).
iw_est(Y, treat, treat_formula, data, grid_val, bandw, treat_mod, link_function, ...)
Y |
is the the name of the outcome variable contained in |
treat |
is the name of the treatment variable contained in
|
treat_formula |
an object of class "formula" (or one that can be
coerced to that class) that regresses |
data |
is a dataframe containing |
grid_val |
contains the treatment values to be evaluated. |
bandw |
is the bandwidth. Default is 1. |
treat_mod |
a description of the error distribution to be used in the
model for treatment. Options include: |
link_function |
is either "log", "inverse", or "identity" for the
"Gamma" |
... |
additional arguments to be passed to the treatment regression function. |
The ADRF is estimated by
(D_{0}(t) S_{2}(t) - D_{1}(t) S_{1}(t)) / (S_{0}(t) S_{2}(t) - S_{1}^{2}(t))
where
D_{j}(t) = ∑_{i = 1}^{N} \tilde{K}_{h, X} (T_i - t) (T_i - t)^j Y_i
and S_{j}(t) = ∑_{i = 1}^{N} \tilde{K}_{h, X} (T_i - t) (T_i - t)^j \tilde{K}_{h, X}(t) = K_{h}(t) / \hat{R}_i(t) which is a local linear regression. More details are given in Flores (2012).
iw_est
returns an object of class "causaldrf",
a list that contains the following components:
param |
parameter estimates for a iw fit. |
t_mod |
the result of the treatment model fit. |
call |
the matched call. |
Schafer, J.L., Galagate, D.L. (2015). Causal inference with a continuous treatment and outcome: alternative estimators for parametric dose-response models. Manuscript in preparation.
Flores, Carlos A., et al. "Estimating the effects of length of exposure to instruction in a training program: the case of job corps." Review of Economics and Statistics 94.1 (2012): 153-171.
nw_est
, iw_est
, hi_est
, gam_est
,
add_spl_est
,
bart_est
, etc. for other estimates.
## Example from Schafer (2015). example_data <- sim_data iw_list <- iw_est(Y = Y, treat = T, treat_formula = T ~ B.1 + B.2 + B.3 + B.4 + B.5 + B.6 + B.7 + B.8, data = example_data, grid_val = seq(8, 16, by = 1), bandw = bw.SJ(example_data$T), treat_mod = "Normal") sample_index <- sample(1:1000, 100) plot(example_data$T[sample_index], example_data$Y[sample_index], xlab = "T", ylab = "Y", main = "iw estimate") lines(seq(8, 16, by = 1), iw_list$param, lty = 2, lwd = 2, col = "blue") legend('bottomright', "iw estimate", lty=2, lwd = 2, col = "blue", bty='Y', cex=1) rm(example_data, iw_list, sample_index) ## Example from Imai & van Dyk (2004). data("nmes_data") head(nmes_data) # look at only people with medical expenditures greater than 0 nmes_nonzero <- nmes_data[which(nmes_data$TOTALEXP > 0), ] iw_list <- iw_est(Y = TOTALEXP, treat = packyears, treat_formula = packyears ~ LASTAGE + I(LASTAGE^2) + AGESMOKE + I(AGESMOKE^2) + MALE + RACE3 + beltuse + educate + marital + SREGION + POVSTALB, data = nmes_nonzero, grid_val = seq(5, 100, by = 5), bandw = bw.SJ(nmes_nonzero$packyears), treat_mod = "LogNormal") set.seed(307) sample_index <- sample(1:nrow(nmes_nonzero), 1000) plot(nmes_nonzero$packyears[sample_index], nmes_nonzero$TOTALEXP[sample_index], xlab = "packyears", ylab = "TOTALEXP", main = "iw estimate", ylim = c(0, 10000), xlim = c(0, 100)) lines(seq(5, 100, by = 5), iw_list$param, lty = 2, lwd = 2, col = "blue") legend('topright', "iw estimate", lty=2, lwd = 2, col = "blue", bty='Y', cex = 1) abline(0, 0)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.