tests/testthat/test-EventStudyFHS.R

test_that("FE = TRUE,
           TFE = TRUE,
           cluster = TRUE works", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- TRUE
    TFE     <- TRUE
    cluster <- TRUE

    if (FE & TFE & cluster) {

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )
    }

        expect_true(all.equal(reg$felevels$`get(idvar)`, as.character(unique(df_EventStudyFHS_example$id))))
        expect_equal(reg$nclusters, length(unique(df_EventStudyFHS_example$id)))
        expect_true(reg$se_type == "stata")

})

test_that("FE = FALSE,
           TFE = TRUE,
           cluster = TRUE works", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- FALSE
    TFE     <- TRUE
    cluster <- TRUE

    if ((!FE) & TFE & cluster) {

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )
    }

    expect_equal(is.null(reg$felevels$`get(idvar)`), TRUE)
    expect_equal(reg$nclusters, length(unique(df_EventStudyFHS_example$id)))
    expect_true(reg$se_type == "stata")

})

test_that("FE = TRUE,
           TFE = FALSE,
           cluster = TRUE works", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- TRUE
    TFE     <- FALSE
    cluster <- TRUE

    if (FE & (!TFE) & cluster) {

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )
    }

    expect_true(all.equal(reg$felevels$V1, as.character(unique(df_EventStudyFHS_example$id))))
    expect_true(is.null(reg$felevels$`get(timevar)`), TRUE)
    expect_equal(reg$nclusters, length(unique(df_EventStudyFHS_example$id)))
    expect_true(reg$se_type == "stata")

})

test_that("FE = FALSE,
           TFE = FALSE,
           cluster = TRUE works", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- FALSE
    TFE     <- FALSE
    cluster <- TRUE

    if  ((!FE) & (!TFE) & cluster) {

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )
    }

    expect_true(is.null(reg$felevels$`get(idvar)`), TRUE)
    expect_true(is.null(reg$felevels$`get(timevar)`), TRUE)
    expect_equal(reg$nclusters, length(unique(df_EventStudyFHS_example$id)))
    expect_true(reg$se_type == "stata")

})

test_that("FE = TRUE,
           TFE = TRUE,
           cluster = FALSE does not work", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- TRUE
    TFE     <- TRUE
    cluster <- FALSE

    expect_error(
        if (FE & TFE & (!cluster)) {

            reg <- EventStudyFHS(
                prepared_model_formula = event_study_formula,
                prepared_data = df_EventStudyFHS_example,
                idvar = idvar,
                timevar = timevar,
                FE = FE,
                TFE = TFE,
                cluster = cluster
            )
        },
        "cluster=TRUE required when FE=TRUE."
    )
})

test_that("FE = FALSE,
           TFE = TRUE,
           cluster = FALSE works", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- FALSE
    TFE     <- TRUE
    cluster <- FALSE

    if ((!FE) & TFE & (!cluster)) {

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )
    }

    expect_true(is.null(reg$felevels$`get(idvar)`), TRUE)
    expect_true(is.null(reg$nclusters), TRUE)
    expect_true(reg$se_type %in% c("stata", "HC1"))

})

test_that("FE = TRUE,
           TFE = FALSE,
           cluster = FALSE does not work", {

    estimator       <-  "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- TRUE
    TFE     <- FALSE
    cluster <- FALSE

    expect_error(
        if (FE & (!TFE) & (!cluster))  {

            reg <- EventStudyFHS(
                prepared_model_formula = event_study_formula,
                prepared_data = df_EventStudyFHS_example,
                idvar = idvar,
                timevar = timevar,
                FE = FE,
                TFE = TFE,
                cluster = cluster
            )
        },
        "cluster=TRUE required when FE=TRUE."
    )
})

test_that("FE = FALSE,
           TFE = FALSE,
           cluster = FALSE works", {

    estimator       <- "FHS"
    outcomevar      <- "y_base"
    str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
    controls        <- "x_r"
    proxy           <- "eta_m"
    proxyIV         <- "z_fd_lead3"
    event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

    idvar   <- "id"
    timevar <- "t"

    FE      <- FALSE
    TFE     <- FALSE
    cluster <- FALSE

    if ((!FE) & (!TFE) & (!cluster))  {

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )
    }

    expect_true(is.null(reg$felevels$`get(idvar)`), TRUE)
    expect_true(is.null(reg$felevels$`get(timevar)`), TRUE)
    expect_true(is.null(reg$nclusters), TRUE)
    expect_true(reg$se_type %in% c("stata", "HC1"))

})


test_that("Coefficients and Standard Errors agree with base STATA", {

    bools <- c("TTT", "TFT", "FTF", "FTT", "FFF", "FFT")

    for (i in length(bools)) {
        bool <- bools[i]
        estimator       <-  "FHS"
        outcomevar      <- "y_base"
        str_policy_vars <- c("z_lead3", "z_fd_lead2", "z_fd", "z_fd_lag1", "z_fd_lag2", "z_lag3")
        controls        <- "x_r"
        proxy           <- "eta_m"
        proxyIV         <- "z_fd_lead3"
        event_study_formula <- PrepareModelFormula(estimator, outcomevar, 
                                               str_policy_vars, FALSE, controls, proxy, proxyIV)

        idvar   <- "id"
        timevar <- "t"

        FE <- as.logical(substring(bool, 1, 1))
        TFE <- as.logical(substring(bool, 2, 2))
        cluster <- as.logical(substring(bool, 3, 3))

        reg <- EventStudyFHS(
            prepared_model_formula = event_study_formula,
            prepared_data = df_EventStudyFHS_example,
            idvar = idvar,
            timevar = timevar,
            FE = FE,
            TFE = TFE,
            cluster = cluster
        )

        df_test_STATA <- read.csv("./input/df_test_base_STATA_FHS.csv")
        epsilon <- 10e-6

        expect_equal(unname(reg$coefficients["z_fd"]),       df_test_STATA[df_test_STATA[1] ==         "z_fd",][[2*i]],      tolerance = epsilon)
        expect_equal(unname(reg$coefficients["z_fd_lead2"]), df_test_STATA[df_test_STATA[1] ==   "z_fd_lead2",][[2*i]],      tolerance = epsilon)
        expect_equal(unname(reg$coefficients["eta_m"]),      df_test_STATA[df_test_STATA[1] ==        "eta_m",][[2*i]],      tolerance = epsilon)
        expect_equal(unname(reg$coefficients["z_fd_lag1"]),  df_test_STATA[df_test_STATA[1] ==    "z_fd_lag1",][[2*i]],      tolerance = epsilon)
        expect_equal(unname(reg$coefficients["z_fd_lag2"]),  df_test_STATA[df_test_STATA[1] ==    "z_fd_lag2",][[2*i]],      tolerance = epsilon)
        expect_equal(unname(reg$coefficients["z_lead3"]),    df_test_STATA[df_test_STATA[1] ==      "z_lead3",][[2*i]]*(-1), tolerance = epsilon)
        expect_equal(unname(reg$coefficients["z_lag3"]),     df_test_STATA[df_test_STATA[1] ==       "z_lag3",][[2*i]],      tolerance = epsilon)
        expect_equal(unname(reg$coefficients["x_r"]),        df_test_STATA[df_test_STATA[1] ==          "x_r",][[2*i]],      tolerance = epsilon)

        expect_equal(unname(reg$std.error["z_fd"]),          df_test_STATA[df_test_STATA[1] ==       "z_fd",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["z_fd_lead2"]),    df_test_STATA[df_test_STATA[1] == "z_fd_lead2",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["eta_m"]),         df_test_STATA[df_test_STATA[1] ==      "eta_m",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["z_fd_lag1"]),     df_test_STATA[df_test_STATA[1] ==  "z_fd_lag1",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["z_fd_lag2"]),     df_test_STATA[df_test_STATA[1] ==  "z_fd_lag2",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["z_lead3"]),       df_test_STATA[df_test_STATA[1] ==    "z_lead3",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["z_lag3"]),        df_test_STATA[df_test_STATA[1] ==     "z_lag3",][[2*i+1]],      tolerance = epsilon)
        expect_equal(unname(reg$std.error["x_r"]),           df_test_STATA[df_test_STATA[1] ==        "x_r",][[2*i+1]],      tolerance = epsilon)
    }
})

Try the eventstudyr package in your browser

Any scripts or data that you put into this service are public.

eventstudyr documentation built on May 29, 2024, 10:38 a.m.