context("Checking Code in Paper Works")
# “Characterizing Research Designs in Code" -------------------------------
test_that("section on 'Characterizing Research Designs in Code' works", {
my_population <- function(N) {
data.frame(u = rnorm(N))
}
population <-
declare_model(handler = my_population, N = 500)
my_sampling <- function(data) {
data$S <- rbinom(
n = nrow(data),
size = 1,
prob = 0.1
)
data <- data[data$S == 1, ]
data$S <- NULL
data
}
sampling <- declare_sampling(handler = my_sampling)
my_assignment <- function(data) {
data$Z <- rbinom(
n = nrow(data),
size = 1,
prob = 0.5
)
data
}
assignment <-
declare_assignment(handler = my_assignment)
my_potential_outcomes <-
function(data) {
data$Y_Z_0 <- with(data, u)
data$Y_Z_1 <- with(data, 0.25 + u)
data
}
potential_outcomes <- declare_potential_outcomes(
handler = my_potential_outcomes
)
my_inquiry <- function(data) {
with(
data,
data.frame(inquiry = "inquiry", estimand = mean(Y_Z_1 - Y_Z_0), stringsAsFactors = FALSE)
)
}
inquiry <- declare_inquiry(handler = my_inquiry)
my_estimator <- function(data) {
reg <- lm(Y ~ Z, data = data)
phi <- t(data.frame(summary(reg)$coefficients["Z", ]))
colnames(phi) <- c("estimate", "std.error", "t", "p.value")
phi
}
estimator <- declare_estimator(handler = label_estimator(my_estimator), inquiry = inquiry)
diagnosand <- declare_diagnosands(bias = mean(estimate - estimand), keep_defaults = FALSE)
measurement <- declare_measurement(Y = reveal_outcomes(Y ~ Z))
design <-
population +
sampling +
assignment +
potential_outcomes +
inquiry +
measurement +
estimator
df <- draw_data(design)
expect_equal(colnames(df), c("u", "Z", "Y_Z_0", "Y_Z_1", "Y"))
run_design(design)
diagnose_design(
design = design,
diagnosands = diagnosand,
sims = 2, bootstrap_sims = FALSE
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.