test_that("Test covariates", {
## Sharp design, no M or h
df <- headst[complete.cases(headst), ]
covlist <- "urban*black+sch1417"
fh1 <- as.formula(paste0("mortHS ~ povrate|", covlist))
fh2 <- as.formula(paste0("mortHS~povrate*I(povrate>=0)+", covlist))
expect_message(r0 <- RDHonest(fh1, data=df))
## Doing it manually
expect_message(r1 <- RDHonest(mortHS ~ povrate, data=df))
h <- r1$coefficients$bandwidth
m2 <- lm(fh2, data=df, weights = pmax(1 - abs(povrate/h), 0))
idx <- c(1:3, 7)
df$Y <- df$mortHS -
model.matrix(m2$model, data=df)[, -idx] %*% m2$coefficients[-idx]
expect_message(r2 <- RDHonest(Y~povrate, data=df))
h2 <- r2$coefficients$bandwidth
m3 <- lm(fh2, data=df, weights = pmax(1 - abs(povrate/h2), 0))
expect_lt(abs(r0$coefficients$bandwidth-h2), 1e-5)
dd <- sort(r0$lm$coefficients)-sort(m3$coefficients)
expect_lt(max(abs(dd)), 1e-9)
## with h /M
r0 <- RDHonest(fh1, data=df, M=2)
r2 <- RDHonest(Y~povrate, data=df, M=2)
h2 <- r2$coefficients$bandwidth
m3 <- lm(fh2, data=df, weights = pmax(1 - abs(povrate/h2), 0))
expect_lt(abs(r0$coefficients$bandwidth-h2), 1e-5)
dd <- sort(r0$lm$coefficients)-sort(m3$coefficients)
expect_lt(max(abs(dd)), 1e-9)
## fuzzy
df <- rcp[1:1000, ]
expect_message(r0 <- RDHonest(log(c)|retired ~ elig_year|food, data=df,
weights=survey_year))
## Doing it manually
expect_message(r1 <- RDHonest(log(c)|retired ~ elig_year, data=df,
weights=survey_year))
h <- r1$coefficients$bandwidth
m2 <- lm(cbind(log(c), retired) ~ elig_year*I(elig_year>0)+food,
data=df, weights = pmax(1 - abs(elig_year/h), 0)*survey_year)
Y <- cbind(log(df$c), df$retired) - df$food %o% m2$coefficients[4, ]
expect_message(r2 <- RDHonest(Y[, 1]|Y[, 2] ~ elig_year, data=df,
weights=survey_year))
h2 <- r2$coefficients$bandwidth
expect_lt(abs(r0$coefficients$bandwidth-h2), 1e-5)
m3 <- lm(cbind(log(c), retired) ~ elig_year*I(elig_year>0)+food,
data=df, weights = pmax(1 - abs(elig_year/h2), 0)*survey_year)
dd <- sort(r0$lm$coefficients)-sort(m3$coefficients)
expect_lt(max(abs(dd)), 1e-8)
## pass function as kern
expect_message(r00 <- RDHonest(log(c)|retired ~ elig_year|food, data=df,
weights=survey_year,
h=r0$coefficients$bandwidth,
kern=function(u) pmax(1-abs(u), 0)))
expect_equal(r00$coefficients, r00$coefficients)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.