From 4579fcc5bb1e193d9f24c6d50a279f74dba5ad57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Koles=C3=A1r?= Date: Mon, 19 Aug 2024 10:54:23 -0400 Subject: [PATCH] Fix linting issues --- .github/workflows/R-CMD-check.yaml | 100 +++++++------------------- .github/workflows/lint.yaml | 45 ++++-------- .github/workflows/rhub.yaml | 102 +++++++++++++++++++++++++++ .github/workflows/test-coverage.yaml | 69 ++++++++++-------- .lintr | 8 ++- DESCRIPTION | 2 +- R/iv.R | 21 +++--- R/ols.R | 30 ++++---- README.md | 2 +- data-raw/data-prep.R | 6 +- doc/manual.pdf | Bin 152419 -> 162667 bytes tests/spelling.R | 6 +- tests/testthat/test_se.R | 62 ++++++++-------- vignettes/ShiftShareSE.Rmd | 16 +++-- 14 files changed, 265 insertions(+), 204 deletions(-) create mode 100644 .github/workflows/rhub.yaml diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 4fd1166..5fb2af4 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -1,14 +1,10 @@ -# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. -# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: - - main - - master + branches: [main, master] pull_request: - branches: - - main - - master + branches: [main, master] name: R-CMD-check @@ -22,81 +18,39 @@ jobs: fail-fast: false matrix: config: + - {os: macos-latest, r: 'release'} - {os: windows-latest, r: 'release'} - - {os: macOS-latest, r: 'release'} - - {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"} - - {os: ubuntu-20.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"} - + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes steps: - - uses: actions/checkout@v2 - - - uses: r-lib/actions/setup-r@v1 - with: - r-version: ${{ matrix.config.r }} - - - uses: r-lib/actions/setup-pandoc@v1 + - uses: actions/checkout@v4 - - uses: r-lib/actions/setup-tinytex@master + - uses: r-lib/actions/setup-pandoc@v2 - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") - shell: Rscript {0} - - - name: Restore R package cache - if: runner.os != 'Windows' - uses: actions/cache@v2 + - uses: r-lib/actions/setup-r@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- - - - name: Install Linux system dependencies + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + # BEGIN ADD + - uses: r-lib/actions/setup-tinytex@v2 + - run: tlmgr --version + - name: Install Linux dependencies if: runner.os == 'Linux' - run: | - while read -r cmd - do - eval sudo $cmd - done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "20.04"))') - sudo apt-get update && sudo apt-get install -y ghostscript libcurl4-openssl-dev + run: sudo apt-get update -y && sudo apt-get install -y ghostscript - name: Install Mac OS system dependencies if: matrix.config.os == 'macOS-latest' - run: | - brew install ghostscript - - name: Install dependencies - run: | - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("rcmdcheck") - # Install knitr because Ubuntu-release is not finding it for some reason - remotes::install_cran("formatR", "knitr") - shell: Rscript {0} - - name: Session info - run: | - options(width = 100) - pkgs <- .packages(TRUE) - sessioninfo::session_info(pkgs, include_base = TRUE) - rmarkdown::find_pandoc() - tinytex::tlmgr("--version") - tinytex::tl_pkgs() - shell: Rscript {0} - - name: Check - env: - _R_CHECK_CRAN_INCOMING_REMOTE_: false - run: | - options(crayon.enabled = TRUE) - rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check") - shell: Rscript {0} + run: brew install ghostscript + # END ADD + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check - - name: Upload check results - if: failure() - uses: actions/upload-artifact@main + - uses: r-lib/actions/check-r-package@v2 with: - name: ${{ runner.os }}-r${{ matrix.config.r }}-results - path: check + upload-snapshots: true diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index cf0385f..f60d047 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -1,49 +1,32 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: - - main - - master + branches: [main, master] pull_request: - branches: - - main - - master + branches: [main, master] name: lint jobs: lint: - runs-on: macOS-latest + runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: r-lib/actions/setup-r@v1 - - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") - shell: Rscript {0} - - - name: Restore R package cache - uses: actions/cache@v2 + - uses: r-lib/actions/setup-r@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- + use-public-rspm: true - - name: Install dependencies - run: | - install.packages(c("remotes")) - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("lintr") - shell: Rscript {0} - - - name: Install package - run: R CMD INSTALL . + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::lintr, local::. + needs: lint - name: Lint run: lintr::lint_package() shell: Rscript {0} + env: + LINTR_ERROR_ON_LINT: true diff --git a/.github/workflows/rhub.yaml b/.github/workflows/rhub.yaml new file mode 100644 index 0000000..75be91f --- /dev/null +++ b/.github/workflows/rhub.yaml @@ -0,0 +1,102 @@ +# R-hub's generic GitHub Actions workflow file. It's canonical location is at +# https://github.com/r-hub/actions/blob/v1/workflows/rhub.yaml +# You can update this file to a newer version using the rhub2 package: +# +# rhub::rhub_setup() +# +# It is unlikely that you need to modify this file manually. + +name: R-hub +run-name: "${{ github.event.inputs.id }}: ${{ github.event.inputs.name || format('Manually run by {0}', github.triggering_actor) }}" + +on: + workflow_dispatch: + inputs: + config: + description: 'A comma separated list of R-hub platforms to use.' + type: string + default: 'linux,windows,macos' + name: + description: 'Run name. You can leave this empty now.' + type: string + id: + description: 'Unique ID. You can leave this empty now.' + type: string + +jobs: + + setup: + runs-on: ubuntu-latest + outputs: + containers: ${{ steps.rhub-setup.outputs.containers }} + platforms: ${{ steps.rhub-setup.outputs.platforms }} + + steps: + # NO NEED TO CHECKOUT HERE + - uses: r-hub/actions/setup@v1 + with: + config: ${{ github.event.inputs.config }} + id: rhub-setup + + linux-containers: + needs: setup + if: ${{ needs.setup.outputs.containers != '[]' }} + runs-on: ubuntu-latest + name: ${{ matrix.config.label }} + strategy: + fail-fast: false + matrix: + config: ${{ fromJson(needs.setup.outputs.containers) }} + container: + image: ${{ matrix.config.container }} + + steps: + - uses: r-hub/actions/checkout@v1 + - uses: r-hub/actions/platform-info@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + - uses: r-hub/actions/setup-deps@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + - uses: r-hub/actions/run-check@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + + + + other-platforms: + needs: setup + if: ${{ needs.setup.outputs.platforms != '[]' }} + runs-on: ${{ matrix.config.os }} + name: ${{ matrix.config.label }} + strategy: + fail-fast: false + matrix: + config: ${{ fromJson(needs.setup.outputs.platforms) }} + + steps: + ## MK: added. Pandoc for rmd + - uses: teatimeguest/setup-texlive-action@v3 + with: + packages: scheme-basic + - uses: r-lib/actions/setup-pandoc@v2 + - uses: r-hub/actions/checkout@v1 + - uses: r-hub/actions/setup-r@v1 + with: + job-config: ${{ matrix.config.job-config }} + token: ${{ secrets.RHUB_TOKEN }} + - uses: r-hub/actions/platform-info@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + - uses: r-hub/actions/setup-deps@v1 + with: + job-config: ${{ matrix.config.job-config }} + token: ${{ secrets.RHUB_TOKEN }} + - uses: r-hub/actions/run-check@v1 + with: + job-config: ${{ matrix.config.job-config }} + token: ${{ secrets.RHUB_TOKEN }} diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index ba1f94f..fefc52e 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -1,48 +1,61 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: - - main - - master + branches: [main, master] pull_request: - branches: - - main - - master + branches: [main, master] name: test-coverage +permissions: read-all + jobs: test-coverage: - runs-on: macOS-latest + runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - - uses: r-lib/actions/setup-r@v1 + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true - - uses: r-lib/actions/setup-pandoc@v1 + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::covr, any::xml2 + needs: coverage - - name: Query dependencies + - name: Test coverage run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") + cov <- covr::package_coverage( + quiet = FALSE, + clean = FALSE, + install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") + ) + covr::to_cobertura(cov) shell: Rscript {0} - - name: Restore R package cache - uses: actions/cache@v2 + - uses: codecov/codecov-action@v4 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- - - - name: Install dependencies + fail_ci_if_error: ${{ github.event_name != 'pull_request' && true || false }} + file: ./cobertura.xml + plugin: noop + disable_search: true + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Show testthat output + if: always() run: | - install.packages(c("remotes")) - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("covr") - shell: Rscript {0} + ## -------------------------------------------------------------------- + find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash - - name: Test coverage - run: covr::codecov() - shell: Rscript {0} + - name: Upload test results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: coverage-test-failures + path: ${{ runner.temp }}/package diff --git a/.lintr b/.lintr index 664e64c..7c45b54 100644 --- a/.lintr +++ b/.lintr @@ -1 +1,7 @@ -linters: with_defaults(line_length_linter(80), commented_code_linter=NULL, infix_spaces_linter=NULL, object_name_linter = NULL, spaces_left_parentheses_linter=NULL) +linters: linters_with_defaults( + line_length_linter(80), + infix_spaces_linter=NULL, + commented_code_linter=NULL, + object_name_linter(c("CamelCase", "camelCase", "dotted.case", "snake_case")), + indentation_linter(indent=4L) + ) diff --git a/DESCRIPTION b/DESCRIPTION index 179e6ff..cd7d11c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -31,7 +31,7 @@ Suggests: spelling, formatR Imports: Formula -RoxygenNote: 7.1.2 +RoxygenNote: 7.3.2 URL: https://github.com/kolesarm/ShiftShareSE Language: en-US BugReports: https://github.com/kolesarm/ShiftShareSE/issues diff --git a/R/iv.R b/R/iv.R index 8839549..7635d77 100644 --- a/R/iv.R +++ b/R/iv.R @@ -48,8 +48,9 @@ ivreg_ss <- function(formula, X, data, W, subset, weights, method, beta0=0, mt <- stats::terms(formula, data = data) mtZ <- stats::terms(formula, data = data, rhs = 1) - Z <- if (stats::is.empty.model(mtZ)) NULL - else stats::model.matrix(mtZ, mf, contrasts=NULL) + Z <- NULL + if (!stats::is.empty.model(mtZ)) + Z <- stats::model.matrix(mtZ, mf, contrasts=NULL) mty2 <- stats::delete.response(stats::terms(formula, data = data, rhs = 2)) attr(mty2, "intercept") <- 0 @@ -117,10 +118,10 @@ ivreg_ss.fit <- function(y1, y2, X, W, Z, w=NULL, method=c("akm", "akm0"), RX <- sum(wgt * ddY2*ddX) - if("all" %in% method) + if ("all" %in% method) method <- c("homosk", "ehw", "region_cluster", "akm", "akm0") - if("homosk" %in% method) { + if ("homosk" %in% method) { rss <- sum(wgt * resid^2) ## no N/(N-p) small-sample correction in IV den <- sum(wgt * ddX^2) @@ -128,25 +129,25 @@ ivreg_ss.fit <- function(y1, y2, X, W, Z, w=NULL, method=c("akm", "akm0"), } u <- wgt * resid * ddX - if("ehw" %in% method) + if ("ehw" %in% method) se.r <- sqrt(drop(crossprod(u)) / RX^2) - if("region_cluster" %in% method) + if ("region_cluster" %in% method) if (is.null(region_cvar)) warning(paste0("Reporting NA for \"region_cluster\" Std. Error", " because \"region_cvar\" not supplied.")) else se.s <- sqrt(drop(crossprod(tapply(u, factor(region_cvar), sum))) / - RX^2) + RX^2) - if ("akm" %in% method | "akm0" %in% method) { + if ("akm" %in% method || "akm0" %in% method) { cR <- hX*drop(crossprod(wgt * resid, W)) cR0 <- hX*drop(crossprod(wgt * (ddY1-ddY2*beta0), W)) cW <- hX*drop(crossprod(wgt * ddY2, W)) if (!is.null(sector_cvar)) { if (length(sector_cvar) != length(cR)) stop("The length of \"sector_cvar\" is different ", - "from the number of sectors.") + "from the number of sectors.") cR <- tapply(cR, factor(sector_cvar), sum) cR0 <- tapply(cR0, factor(sector_cvar), sum) cW <- tapply(cW, factor(sector_cvar), sum) @@ -184,7 +185,7 @@ ivreg_ss.fit <- function(y1, y2, X, W, Z, w=NULL, method=c("akm", "akm0"), } se <- c(se.h, se.r, se.s, se.akm, se.akm0) - p <- 2*(1-stats::pnorm(abs(betahat-beta0)/c(se[-5], se0.akm0))) + p <- 2 * (1-stats::pnorm(abs(betahat-beta0)/c(se[-5], se0.akm0))) ci.l <- c(betahat-cv*se[-5], cil.akm0) ci.r <- c(betahat+cv*se[-5], cir.akm0) diff --git a/R/ols.R b/R/ols.R index 8a2b8cc..aedbe9b 100644 --- a/R/ols.R +++ b/R/ols.R @@ -26,7 +26,7 @@ #' method=c("ehw", "akm", "akm0")) #' @export reg_ss <- function(formula, X, data, W, subset, weights, method, beta0=0, - alpha=0.05, region_cvar=NULL, sector_cvar=NULL) { + alpha=0.05, region_cvar=NULL, sector_cvar=NULL) { ## construct model frame cl <- mf <- match.call(expand.dots = FALSE) @@ -44,10 +44,11 @@ reg_ss <- function(formula, X, data, W, subset, weights, method, beta0=0, stop("'weights' must be a numeric vector") mt <- attr(mf, "terms") - Z <- if (stats::is.empty.model(mt)) NULL - else stats::model.matrix(mt, mf, contrasts=NULL) + Z <- NULL + if (!stats::is.empty.model(mt)) + Z <- stats::model.matrix(mt, mf, contrasts=NULL) ret <- reg_ss.fit(y, mf$"(X)", W, Z, w, method, beta0, alpha, rc, - sector_cvar) + sector_cvar) ret$call <- cl ret$terms <- mt @@ -72,7 +73,7 @@ reg_ss <- function(formula, X, data, W, subset, weights, method, beta0=0, #' \code{w}, i.e., \code{sum(w * residuals^2)} is minimized. #' @export reg_ss.fit <- function(y, X, W, Z, w=NULL, method=c("akm", "akm0"), beta0=0, - alpha=0.05, region_cvar=NULL, sector_cvar=NULL) { + alpha=0.05, region_cvar=NULL, sector_cvar=NULL) { mm <- cbind(X, Z) r <- drop_collinear(W, sector_cvar) @@ -100,35 +101,34 @@ reg_ss.fit <- function(y, X, W, Z, w=NULL, method=c("akm", "akm0"), beta0=0, se.h <- se.r <- se.s <- se.akm <- se.akm0 <- NA - if("all" %in% method) + if ("all" %in% method) method <- c("homosk", "ehw", "region_cluster", "akm", "akm0") RX <- sum(wgt * ddX^2) - if("homosk" %in% method) { + if ("homosk" %in% method) { resvar <- sum(wgt * r$residuals^2) / r$df.residual se.h <- sqrt(resvar / RX) } u <- wgt * r$residuals * ddX - if("ehw" %in% method) + if ("ehw" %in% method) se.r <- sqrt((n / (n - p)) * drop(crossprod(u))) / RX - if (("region_cluster" %in% method) & is.null(region_cvar)) { + if (("region_cluster" %in% method) && is.null(region_cvar)) { warning(paste0("Reporting NA for \"region_cluster\" Std. Error", " because \"region_cvar\" not supplied.")) } else if ("region_cluster" %in% method) { nc <- length(unique(region_cvar)) # # of clusters - se.s <- - sqrt((nc/(nc-1)) * (n-1)/(n-p) * - drop(crossprod(tapply(u, factor(region_cvar), sum)))) / RX + se.s <- sqrt((nc / (nc-1)) * (n-1) / (n-p) * + drop(crossprod(tapply(u, factor(region_cvar), sum)))) / RX } - if ("akm" %in% method | "akm0" %in% method) { + if ("akm" %in% method || "akm0" %in% method) { cR <- hX*drop(crossprod(wgt * r$residuals, W)) cR0 <- hX*drop(crossprod(wgt * (ddY-ddX*beta0), W)) cW <- hX*drop(crossprod(wgt * ddX, W)) - if (!is.null(sector_cvar) & length(sector_cvar) != length(cR)) + if (!is.null(sector_cvar) && length(sector_cvar) != length(cR)) stop("The length of \"sector_cvar\" is different ", "from the number of sectors.") @@ -170,7 +170,7 @@ reg_ss.fit <- function(y, X, W, Z, w=NULL, method=c("akm", "akm0"), beta0=0, } se <- c(se.h, se.r, se.s, se.akm, se.akm0) - p <- 2*(1-stats::pnorm(abs(betahat-beta0)/c(se[-5], se0.akm0))) + p <- 2 * (1-stats::pnorm(abs(betahat-beta0)/c(se[-5], se0.akm0))) ci.l <- c(betahat-cv*se[-5], cil.akm0) ci.r <- c(betahat+cv*se[-5], cir.akm0) diff --git a/README.md b/README.md index 4f4c13d..ab85bdb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![R-CMD-check](https://github.com/kolesarm/ShiftShareSE/workflows/R-CMD-check/badge.svg)](https://github.com/kolesarm/ShiftShareSE/actions) [![Coverage status](https://codecov.io/gh/kolesarm/ShiftShareSE/branch/master/graph/badge.svg)](https://codecov.io/github/kolesarm/ShiftShareSE?branch=master) [![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/ShiftShareSE)](https://cran.r-project.org/package=ShiftShareSE) [![Download statistics](https://cranlogs.r-pkg.org/badges/ShiftShareSE)](https://cran.r-project.org/package=ShiftShareSE) +[![R-CMD-check](https://github.com/kolesarm/ShiftShareSE/workflows/R-CMD-check/badge.svg)](https://github.com/kolesarm/ShiftShareSE/actions) [![Coverage status](https://codecov.io/gh/kolesarm/ShiftShareSE/branch/master/graph/badge.svg)](https://codecov.io/github/kolesarm/ShiftShareSE?branch=master) [![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/ShiftShareSE)](https://cran.r-project.org/package=ShiftShareSE) [![Download statistics](https://cranlogs.r-pkg.org/badges/grand-total/ShiftShareSE)](https://cran.r-project.org/package=ShiftShareSE) # ShiftShareSE diff --git a/data-raw/data-prep.R b/data-raw/data-prep.R index c95f86c..bc72811 100644 --- a/data-raw/data-prep.R +++ b/data-raw/data-prep.R @@ -9,8 +9,8 @@ ctrls <- readxl::read_excel("DataReplication_v2.xlsx", sheet=3) ## weight matrix and SIC codes sic <- readxl::read_excel("DataReplication_v2.xlsx", sheet=5)$sec_vec -ADH_W <- unname(as.matrix(readxl::read_excel("DataReplication_v2.xlsx", - sheet=4, col_names=TRUE))[, -1]) +ADHW <- unname(as.matrix(readxl::read_excel("DataReplication_v2.xlsx", + sheet=4, col_names=TRUE))[, -1]) ## Add some other outcomes d1 <- readxl::read_excel("DataADH_check.xlsx", sheet=1) @@ -32,7 +32,7 @@ ADH1 <- ADH[, c("d_sh_empl", "d_sh_empl_mfg", "d_sh_empl_nmfg", names(ADH1)[4:7] <- c("shock", "IV", "weights", "statefip") ## Combine all into one object -ADH <- list(reg=ADH1, sic=sic, W=ADH_W) +ADH <- list(reg=ADH1, sic=sic, W=ADHW) devtools::use_data(ADH, overwrite=TRUE, internal=FALSE) diff --git a/doc/manual.pdf b/doc/manual.pdf index 7bfb714756d334c70ec44c006e2e96493480f81b..ee259a40f2207af7fb3a3e0638a61c2ee72aa797 100644 GIT binary patch delta 36556 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%0AkoT1#d;7AAphuuRU9=*oB~EKNKfNK~bEs_xv2 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 E3S0%;$^ZZW delta 26764 zcmV)AK*Yc6_6g&r36LcMI5C&8Ljov&?O5Ax<2Dd|&sXTJG7!?}nk*tYAb~A^CYL`A z{+Rv-szQqp6mm{$RX#(Uhn7QK6p&D>8m(lSX(jAbuM|^SUvIr?TnbU>QLk3x5Kt7r z9yW+$q7_YR%c;u5_SJCXDp>ZZ58pIb-sf{6MLsh@q`6+lVnDc^NKuw)k(c`LTdEd% z*M#cSv6_1mC99dLr08|pn05$%M**YSflq)VwuP+i^tsJ^L_)H5n;?t;RE%-2L362N z@IsU`nXc3;_PC2E^VarmWl;n2n8w0@F)Q+WjA^`yof7hKK)D@dWf#s&M5S`duN44h zzLGl;UI=qTEgC2Rvk)-~gwY(*-e@B-jlN{Yb}`@ZL6k~=T0}-~q?fXPNn81pwsM^| zL%S%CyN;)MEwU83in7KZ{IVze2ezg9P-l_;JT(xlUGlU``z2<%%EXiH)~V5lk6TE< z3D&!%P>Uiq3Sv>~d#pnhS+NpZxQ*g_=Ca~+7iJ#@jN1j^1tLUlBmc3GQH$k0=9pp< z!b0CgA8^q2hwIxLhrQMsYWa?t z%Y0VEX`b{($x$2Q-So-{`h%&ZyP-rszF$Nt>b2n^H)wkg(7wNatr~G{hUrU_DoLOZ z9FQ;t;%X78=Xs;hYMZ=iIy=NeUc-+KQa|LWk~`@xmyvvki@IFCMQti}fu`TcTL$bMW{h-k>xxLnmW4#ui1>L--G)iE|M{`sDW{P#lja@T{n zV6HF*;mtz*kH3+BcSwkQY=(%t@lEH>?iMk;VtjKJ@DL_#qzk21<=JqUz&l@kL9=2x ze5m_WB$vZ>xPif@Yv(2GwdyVI=Sfu$Onsz;y5ub>Mef{9`pK{5J6N1o$yhv3^Ini} zj>1C$8Kz}fiE=Mo8vR=n5cBOc$%Rtlyh^iJ$UcC4ioBqIo!^?e(}N}qn8ZcQ^_oG` zF>(%rwhKd-Y07#e4K^hSL!rytHc+h6+4_+yX3YaF;5tFxV*TyVfgH@OCb0`LBm$FZQgi?Fa|w&C)u_;Xxa=ZW+MBugtU6xKjQ!9 z*pT?Q{la3lpVA1cFEv-C8JXm-Vyo#Egk-W>3FIN?}-1KXCvI1jW#R9<1j7M zk2*(m{col2-)ooClYapf2TPxmg9M#_*NK;~B$T1|xc3C-OzF^zgkYgcyvN-8&6n#x z9)I}uJ_tt(Rl=DFHL&TIyngdNE?RNR8Q8|7)f=~bBO@Rx+Vrl<%_qAJ{#fiaxSNK* ze7Ev67c7e18A42sc>B2eb0zxqVvsuwIn!a{WvA6|e{e5{$sd57N@DM+UwZO?G^iG7 z1>@3tSp7WkoB#IUs9+3^;4IX_3$F1b+fOW@oFMF}R9`X``}XT&!= zBS;b!gHcEw(`HR^?g|iS48q8N4JO_ddmE83p4jaVmmPr-X}{j%Z{X*E5K;C`4-Jf7 z_poT*qY?{;3d|5HFc?q)77mquHAf5e`1I?#W7^TGq9w|uHI_$L+nKVwv|W>~h2I$> zbw@*Mvby@6bD5heGpI7CxdH5wARv{Bsx!^UwG8~UY{^K)>0FwVfeCAW!NOXvI~I1y zIn6$#2g4}PrlEtNLDWPlq7&Y?u<|C_*XU2(cZR<8+%KJXkIK}|32^%#O#B*QOZ>8E zyWSiDBG|%LQ5|TC3?KU`eLDLmVE^=F>?TY4xE6tLvavUW&Ibk#AZb&4Vrxh`f&WN` zOMJ9i({|HCVs}W7!vrmVB?897V3gp#Y0SX_Hr7~a7DL9d>#R)2v?c!HmDaj9qg7aVsw-o+V!+(}ND@7{4rU&@me3vt$$CeI->0>JkLCj)y-D51bA7&)=~bef2cJE8BSNO2YD`7m zp7w_&u_MU>9{<08#O}XQj2ag{&y(3HtuA|ETt-S*vomaGU1d2khyk)R{t*IE&JjnYmy z^WlfG%MFnlvh1`mAdUK-^3mrowNC)B&IP-YXEaB0(4g<$5ElW7{R(WSK z9C+qiX!mkcciC}!e%hAltwNtjCW0X%zuIM#h*=PStBKD%nc{Hl+9k(P5#ulShF{1) zVDWay#f}LndL3;J<+e+kZtDG1y=i>+>t{^~0$gM%ro_Shr(M$G;lyfkb_pf4sPb)JpSIa<5$!mETj7BA+gY0bj7wZqzC{u3 z5o2SZh+A+alV7&kl6WB$&148S@YrmSYu=S)&a`qB%XEhdC0 zWKl3Agdg`<%l1%snsir`MfdEa%zLlW@oC7xfzjJrvLn%kkB^EwWoz>zL_esDapG;GyZ&5j`2z>7_H(p*s>SiZ~JJ z*#}97;-#@^X;N?U;!xQ6hj(`b2i#tNS)kPXc_+uGp=au z&`+k_yu+EcH$%ti>bCh@C7XrgV0QdKvybj5ExY;H_4aY~H}1sXmyF^ci@q}Ykj%*vID>l~SkrY+ z(0`~wv~ScnWs;|Z6H8+@kB*Lt0ybuiHb;0{R+{x~=Z+jBLlylk5H-42-dQ3j@bn11=4@e+UN1l97GV#DB@`e0+Nz?dCL8 zt~OJS*Gr7GrOpj_F$jf)7`D}V({={?5`ehgXj2gm?V@Wf4zcs00nZoIKQ+qe{_ucw zkJo5rzsglZ6VCwF?YhcI_(a=SuWWNQk0Uf@5Qo0xB5+;70}?*x5s%?d98Nt&3V$ii zrHm!QYK~6#i?(|7035x~7Px>8A*19-!A$|q49;UQ!|g_>7|>Iw7bp1jENwjrvgm#uG-k_@joi< z6G%Q=NGMp?GOUT`oXdjD7JmdOJPu%ciRnYtPKe+SYnz2z*be$Oa|Nk2GK~k*AlPw* zG`dP%)Ps^^BHdtlI+oV1N{D2d!fZH^m-ei`kZ}f7p{EYIEKc`arfHsv{gspo=JAfsn4C zJJ$H2SF33*cNcNviw%ei#^H>%wN}V1YaCeu$lQ8ctHY_Z`f0K}A(@$6_&7P+Z!dan zCYP>swJJ?Nxkgr%dn_xC;nGC4X`|dtRgIFjFeyj#KU~ z7urpDt=mjen@oP0_A&({B5(04U6|@V>id04l*`B5x7{FdX4O$2@1bt`s(-N_i(=k&d36re*?w!F41eMoTek+@9<=MdDp(IthGY@P zV~1~h_i@aJuWEktRn6U3^~4)9V6D;4aUZ9`cHgXwwmY+NXE|B#il|n(qj0*`jwKN1 zo+_czI+gFa^^Re~n;6O44j{5=o5Dq$wbu<>yfGV_%$L9v{{!uQcUTH#Ze(+Ga%Ev{ z3T19&Z<9+CLw~JVS&!Vf5q|ft7|c`m!cFs(LS%V`1LR2}StN^9#jg(1tNSZ@_2(CVynXTNozz#F=!7R%xBDwbDG@Tc zN*N=G&{wy+t6x@f{p;cFHvaqS zoluh{HX@;RjSWwsQ{YOwyw7K|7aXPu(HZyqzNyz6rs=AA=*y{?BBl4kHyRN zhEu+(%C2|REq;r7E$Qk@**5jDsNLX4s;DPu?*3D3UH`Tz+HHAP71+FcLaEG-#LbCP z?YYZ4Vt-g6mJ1}Gon_-oDn$pb)OL@sJ6^RDA z;eX1QdD|AgjsrhraZTr!+uhR*Q-o=b+kAM&#Ri6Dx;o~4TmBdS zn>~IzxRU0A+W!L>K?nK}DPMIBcJ_z7kLh0;xCuLa_@#W={Tk7=5EcR**-RdG^=7j5 zl(Wop7BjtsfQk4uyU4B?kusoZjaDV7CV!O8RW-^#hCeA$LXV()x{aI)nHZ~Jt6O`= zz-*d!SG0%`T-sBaZ|{f4tveh!4hB)p-?l01ZMiG3^;q@?oMKgB`z*YStHJW{*CJI} zKMXx+5f9CY;{MQy6WCzw8}4}CMUD+qQl9x!{p(wf4NKkPtaDgx9G zZL=-9?itX_aN=W8-XHqznSx2#L@=f`6O0+%4aos5c>WfKm8PqvK-kAQt$*Cqb$0rha+IX7W*cr1ZVvc zgA8Z?KwDUEYY2n4HI30zxG>A9ecWW~J2yhxunKo?>P_^%z`s;qIp1mA1Uv5051GSj zlBJ8lq&WiMI%}3bJdjo!ZGYEeqwDi~*KcFU8D(4ShHc?`P3UA?FiV{s_<^d(!)l)g zW|6DW10v0GW14*tDAIqAdvfdYM zQEv+zIj&)%*{#Di`VM6nHy48^E+m1W8Q=g3ctjI7yNQR~_(G(?aaby1PHHagO_@s_=Td6MuoUdlM#fuP@1#TB&AC;?CEH=Gb(?>3Y4&w-c)Z9I2iV9$O!c(<3B13{i2sjQ&wJYa2_r&FdO28i*oqrRhj)qNWKxcg7NSXLPvK@Ha zgv}T}Z^4QZm0_lrrplXeRXyhtRn-|S97hKOSN^Us+I5cN5>t#O_J$yc3-3PqoPO0a zhGXL;L2f+Qc;DO?UGH^nD~)yKj4R(8lh}i=>pVXB3uIak8)rZRTvHcgT=ws5?%(t3 z;gEm(A%Ff-Lg%P!$oMk96vD$4V}&f>^;|)y#01DzcERlTqK;Kf}*8| zn$vS-a39C3|2}e}lxP+YX--F@T8ihi4dWnaqX7;gaWvZ zaiU2|Cuu!|B*NE}VN+p|WnKjL_jn?iQ%)qzpg{)gbxaBj5(P0UuJ{=F~{lmUnbIo(97R4S8Gdot?NDx1`RBoCRi&l9kwtsE@zcvW`{gh zr;tA_LI#iVkxQSDbhP~tnJs-uN-`CWY_i;l?ozOIIbDfHmzudHYvC@v504l+xope| zZk3uC^G)2Cv$2kBEftn^#*D89zSDoBmVc^U(gk1hh=V~{rU|uq!W3Y`vbER5SZ>0L(Q$9I`arPKadGwGYF<}?$1R(v{+u&pb+?q@fFVWVNqHGUwIc(JOeP9 zl!UHtZhkJhq3XMs(o{-lHWvCP&uKoGG~0v6E{{3Bz#v;Y{F!F8!uV^uku9nVn}5MZ zDmoNEIq2^J^+qTSCFBO z?`c0ol7`GiGLWN4?J`*!$%Z765T8wmUPtpGIlcsW=`R)nob?pn$5cqCP=7vIW6H9E zv`WQTUPNFlnR2}MVhutYF~r3}iYU$EZq9|yu{a1&WqjG525uLel#RPxXb@3bVvAV+ zA1NddH%y3ZrO>1Vm>~$8U<(fvrUODAmaXmw`$ir^dGLc{o*DA9<$1w7jdu}nP4R5? z&R94W7=+)DpAU9Z0qKK!rhor;q79F80`5SXsJU7vMG2`w`9mhlCuilJoLwAYiDRKD z(wtdU*=*C-Ees((S}VV3vP{#Yn%6BNXnnSdF*i;Labqw}{vB`#@c#ODBZreEU-CrT3`yc}`ONu%R1dA3)+w{VdP#+$Dqq#4RsW3?r>SL{1PLHHvgQ?89F8YJL=D*V1U*p7V-f|t(|NI4$p#n` z=8L+2KwzPa19u%>*2PLyb*s%a@YM{_Z7C7RRc#zBWSu(<5XP)|)EF1`GOjyi18WWQw?$m=;k(Y)C!pK8H8S^HP zxh#s1+!_HfL@NPU%C=O6#!FSBIv(w)OALE|rw+-TQN64&P?N?f=%pk|ow|3bm3wmD z)4_l*poFFY^6B-BmO}-_1CnNOXH5lma|%w|dc<_BMJo$LgFE)L&Kf|ArG=P(H)hlq z8$=5y1|>9=xLHWO74c(4SPG^_+n7M?m+OTXvNnW}WIL(i&@gQ&S|{8oF~!yB_9q&D zfct4s+Y2Eu`Zx$25d65%6~Tq zWVm*qrdiOhoijOu24$&l+D`AOqW-LUP({x~(^g+ihlGJY9rMVqmZ~ksk-srG>c1lH z<7KG;;F%qgC>bl)}u$`NkpNVv_#D&bk`-C5G57ea9+c2+LD^U?dg zsj}-=|EU41t6+p87arR7uZI3bE+<*H&Dsu~y^-UIu`m3c$k_<>nqw=BCnOC+bQLB@ z-c+mB7`)Ed$Uf$)h&|lT{A0{RkD(KWx`>0GK09;46G77W`x6d8d@@Y zJ5C0jmi}~=2x$g?OU;8-;zEnL{PkhEzc6+?&&&=R{LKDJ=_O#p4u|rx3HoR^fm_^$U4H~-Nll~`| zI=_Vh@=I=L_)VpnVFp}n2U4;f;tx{}qv?MN0lHQSWo~4XjLiP>;!n3PUcC{;tVoKKrL)`3j1rP?k;+x6_XdAj)h_OGwr z$kdz2(>$R(gJtxTdcov>{7YXgsGM&<4ny*R5H_m!UJ$bx?38;8EbR(Qmcby$b#D3v zCG+iJU$x^9yncLr^@dAd@O-wUd6MS1&R2T8w|~kkO^TdZ+5dJJSKYo^EIBFWU(`X$ zzAo>YDp@Q=Ud(UoFL1VMHFiBdcN@5Zuuau&#~nfxiX_v7Wzuec^A@KBf(Vd<+6gal z-G>@h(<@iyYKLQer^I@|;Z@i7)o|an>$=_I?_-D85@+<)Qf&r^q%>imwnp~r)ru%4SEHh}P{|lPGJ{`<=yLvM&hg}KYwPa}soqEP2s=M>x zF>q%gE`gUNDRX-&ZKwqYy-nGer(L)DG`v&~U~1c~arXu2cC6MoM`5R~<~IPxzTH$h zMrh$111KvJmL8esVbF?TlFY|lg*W!}aJw(ZzWz_-j0H)5GMU>Gygy?f?uZF4ce^V` zysP!eq;)%e*HkJH;R9e20hX|&VB9YHYZO?Kxm_n~8_W?qyq0*GV7qKnEazZMnK7!u zJM+_wO2sshSupjz_CUA})+^P$!d>CQGd3SO92^y75hw&n3hs7z|6BcX_&tIL=Q_j0 z0MV;=-qyZll^RHVpKZuwKp`rCn3W)3jnMy)ZbUE*F6XS$} zi7C?s+wb~y)uVAUfj$P;(f&MbJ>W0oy{_=dI6S;EqV>WUoXKAemWR6@ zXVvZfVFWGWp;;o?(V>UK%A}lfh#VVU$yk2L#!rraO$i=bCrWp0HH?A2Kta_2YIVR- zbqqD=eqD9VVc!leCfg5ozaZWF(0cy&NbnUBl4Txd^oOS-<0o*zm_|okAF6u01KO(}J`hRH=W`Xg za{gp81dCBzRvlJd?<%~ag{eDbpnArxvJwD)g&#Fc>hZqsRuwS&#WH8v{CgvF+eLFh zP7*e4|Mnk0{umLF!Yz{%VZ-=DMdCP?@iPQQ398aTQ7oIP8@kAJD+Qv354p>qFTL|6*D%ryCZ3 zP#H}TtsX2g1kCM-E$!>J-q(Lr>t}FK3+mm8w*>V5v!x@KeBUrL-K(ytpe>bjCUOJ1nKp zAt5YxCV+OWz3EMW=`4{v3D=vhX)soQxX=Kh7Vd}ZOV|>PYDNU^e6{QL-SFw^60Sld z`4p#b1~3yNL!H#g+9Xh1NY%sD8Z5qE8B*H!Dydx3wpo8kIq;Rt$W`qgE(!%)JkOmU zyslTcb*}(les{Ptckg%gX!F}xw(GKAKUprb1nkFA@}2|fy7w#7e&l}1r+#G zVHDdQgFLQfbEjqar`hMECOIp***b)@{Iq`tq&MpiT<~uB!-4}BY^nhsDT4ZwDzd6) zfagg-E{edx6w=}uB52AwRn6_8X>hFG-vcjE#wk)Uf7^`}jw4lrseN_d^%$jL*cpc@ zof8JkIq*@fF__Gi>!};2SfP%8;xJ^QlfDm&1db^ir&l=8cKyC=R2;gB6F-g^xJ5{P4gTlYML`z*iQ)tT>h?GxGvL0p(shUhXg_Vt{O}7 zXl8WBMkhgOrgnlEsfN+&TycS}ZH#f18)Xt3$aRB_Pu79d)BVyI&;i`k@Py0xora9G zZ0;dlKKT%TuE1u2PUska!1$3>b0{gpXsL&EHOIK``?_2WU*&;A=zfA=mM(Bz(Kf&k z%$h-tk2vSbQ*B>vt60Sf1WGv5rAr6J#prmMLQw$^#Zk+}Ca*7L|8%5pK*5CwnNH!# z`a+!V7x=Gy9UoUDW0;htDd?% z4!@i?sT@MN!|7drw0k0R;hU6N&zY3k=ES55fYVHz+B@)oEj@TcC-4-@P;WV{9QF1F z^*&n`8Prop#KA`Th~KA4HkrTUXU7>OOLFOs3`8NOy9~@-_$!gIC= zAXhm=t9S?|Id@&=0Jg(UcCwMXSpE>r3B^)mw#bjX0KekvT$w5f1f#zjw8b)<(7G8Ua%V2q$O~1Mfyy zIh8B{C3|F9T>SV=Gnoic97leWn(iMtRqiv1jD$=gGXiHpfu7N+LWW<^m^1wDbYTUb zg!;djvQG_Y@_UL1lTfEl-+8`^ln%KjGf=6B!tibqsfk1)fTDSmuA^0vn7&Y0^p6&T zIBRErd>d0C@k6<{hA*;&;!4IuJ|bZ>^(Ed|SRH6n3^80tCbFRMG-n8Oj0Ztf5$;ev zce{|JH2bDrcRf@aR6|t!pHN7FH+YkDzfcthSSN5@W^)@T)BsQ(nw!6WM58?9!KvDG zRod}+Av;aJ2ysoaeEvpRIJOzM-H@HRc0?s#f|`ah#OE_WJtv#eV_6Y&>L>fxHuw8ZZ|DG?%eM0w{l- zSly4@G!TEkzaru(D|L(^ED*1BQsi_KPM z9EZc|pevz?Vwp_5%-_yuJ;26X#8tPWLECR+7TCA{z8TWf4o1>;d-FNRf zmpk3njsnbj_=Ja4Em8LUu-YYKy~p*vt_>~tW9?o&8ZwuZOU*^XWSV)^-*bPF28^nh zP{Q+|O>*VMgVd@%;vO(#k}@ttv;}XKSw`$u39un)34@b1$9^}`r0Gapk}bsLxZR5* zc5D4tw>N*?pdLIDQ)sAEup$>xeY$z~fk!)7{3(K^vWV_2>nTb>pFBnXw9%WJUmt}7 zU&h}`6CpSQ0g;j^sFeEn^Ra)oh=(j+ZIi4lCX4;p?ZNR$9y@o^z3sPcI$aGkCYDXg z;{y%HvFRP(ePfO^s^~Kwo4whN$I9(`>V$rH#&n=&4u1Lq(^(U(lE)vG6%a{DPB;Eu zkM+=;4eI|y0xsiA6c957Qw8n*u0NeGMq`Mi>N*#Ivdjg?M2QB2^VWYYT>O4(YGk3$ zWN{cfBpJ}s8_1V#z2pAa)JGap^scw`?i3s0UM-hqaLZK|94pkOAou0v!hM?PqZux> zxeOZ9tH@)|?~=QO(~;$*J3|XrN%($S4W{`>JnwnNMOg~?3bxrMWf{NGXpT>)v>q&U zz@A;>kYbpRgZsmY04skmKzi*I^XVG6R9(5~tjS?J2bYyg?(wYa27RY@M7VnhWV?_) z#IExFDoA9>ilXpr%yF!6T&NPt1OSi(Ko$;-$LgSiLHIZ**LtmklCmBxY)w(xLa{Oj zAmZuLRxd)P`aMY9RpyFa(Zbsx`*^t*jDYV{nZu8eD(6)28B^ZN_>04Sje} zpQ=3{t2H0vS@1}(6J-4#^(RcS#fD#g`}ybat)O1@LwEz#m4K}=!h;b|tepRH*a!ea zn>ORKLGZluook=#0dfV9KlL5`-Jev3RYv%r(ztFb-?FS^WiXt(hp(KhuR_gD&Qev( z#X92_gHT4NNr-49;%AB22-irX+L%ZHu%0NB zBs;Tq>e>f)P)EELt!sTYcx3>t1gd63*u8b?tZrngj~IVTdc109o-hkIH7V2-4gqtB zRWyMx=pqw^ahI`@d))Z^kbAQ#DawOBCKt_J4*{cAcL#HP0*h6e`Xhe{xGHB#&SCC? zgmT!H7n~jY`s0YjK$UTII5?+mpe&np{AJ#u;7q@}T~w@={2>7QrBZ8$T*jt5Tsgzv z9^1^y49$PvfjgEQnw}|%-iFd_X;wzZ-BO-l>o&SFXB%G{wb~VCn1D?JhUIdZxGtA6cf*PEW5N@2cyD8B0bszsTtMB~m8ys|(xA07b48M-rt9 z3_O3dbu`@%eF)J6oSTU0QKP%bx#(6`wH9@Gsc#8=nN-Ucq{w6QaBk|VMPRmCcvY`M z$6ijtORP+;Zf7-x&NrJ{_1w4WK-*us+RzIMX3a>;C{gdQJ1$iGic%Ps2YR3rPviEu zqm++&Jk-XU9jg>vEPQ<#fzv)P#f!s0kPe5}TBr9;g~g*Ez}5MUPz8xRF*)7Yl!v zFsl2etDBvsnXAw;^KBW>Y%I>F!SOH}h^y(~*){s~mn@Uw`o)0poe29Tdwgx!lFQ<` zqV(w6g44CZ#EWYq**eqbF%rnDBT+3%3O=vaeS0}|ZZ%vpOHhv|&sFMzaW%mpW;mYQ zK;Zc%0znU}4+^>4NFHCztOo&00ug_d7i+tLM>^A(hpD1pwHf|q%U?OpskYIboVxmT z1JAJ05ig^E6Z^srC5Qe21jCcVyH@^}qr~cQ{3OC8P#Lo_TSE-JE&o?n@Tk>P^zz?7 zP)exGb}iT#k`T+{TgM(q?q`m18M0^(>FuJty;Mf#p5G-Z#vcsEOrp+1zYP)otbiv2 z3qAo~-QN5QBpb5-lYzVwlkqnflfwKdf0bETlha5Ne&<&>`bj-87Io@iV`2k>W(Ed` zS-M#shFwB!m)inaWh9x7=GRYV9g<2do94mcQdO!dD~~S^k;Tn|EPj9V?CR0u7b0Ke zah|YbakW`cLSinGMM`O$@O*K#Ui=+p=l{EU_4tKMMua>|V!<=m#*j4XoXY6te^c8c z?IYq2@c)lra5;K;$&<{yy<{m&a=XW^DsQ%3xWRP+!`9q8Pe95vb()+H|by49{ z9(_Yj)T+~sTiw`yzr7*qw4J*ehI1Q?9`!Tl%t_PkwLm%H-&obH#5p}mUm zitS;CTe{BD&VIX44Q+xbQ zbz8lDxRd_(oKo8Rqm)s*SF3V!XB|o=(e1WGTg9ca-l#^^D`g+;QLQC29t)GeHdrQS zNpxjA6qW*y2NG4OovJ(c;f zFLxb~b=QBuxP5X;vc!m#acWOK+v=Teznq;Cst|w=y-=UFU`39HGA`paiiDELZgdVK zwFd1YSRjdN8r`%fb?x?FQXUh)f6JHJ-kxNN<={|#47ey)_UHx$zWn2G?M5HAWv9G! zih5l%>j(4Yj<9?=O`SCg0qWDLI<%c?PO_MZI2nJ8@pA5XGj@9^w^TUK8Q{=_7vol_ zZ);A~N!H!bp-77_yPpv0)AdI#xL*Ew&Sj)4)xsmSLVcr~0wx|Vyb%ZFBnuo&A<2J& zg(WA{#~#8UPF0niD|dTsPzDfFL~k`(0nQu$LDEL;bz|Tjr+ect;ejULA$jPdMq@zC z(e;0Dz%WoFqT!T-CNmx)om(_ea<831egI z7~}DGw@0=Bm`))FGX#l&`8ds8%ID$`6C-~r4x>>NBE-?q5e?{!r2`G+zs($%$1I@% z!^bUHl2~Tch?I2!>?6WkcUS_>m!yK zk2O9pcdG5Y$}v;Wb>(cU*q}vhAk?)Up1l9y(|+mf=Kx;na*3mtaQxWV?y#Y#_7Hz9 zAAE`D3QQLA9|Hl5PmG#FaukB4nL;HX@yPXIcKRw0`~h<=E|^ah@P*s5I;WA_GYIiB zzPTD{wkdAray6dCRP>fhm%S)Xg5wYJCjk$67UoYrc6}?FhfDe?C^#2kqLT}Uxj1rQ zbN^mYrmWsJLAH>TFswgpwLrMRmO!z+Cyyj^pA!LZkX{D#$($5u3I%Cj8;o=0 zUxNgp&+|Nq>V0w)A-uz?uLn14>==?#=i+*{KB2J~kQ|b)z(BBIN&%r|XitBwx%I>B ziH_`vCoHfhp7b#sR*u_K1~A^s>2gMr8348z+Y|2B+Y=sh&z^D+rz5o2Y3)OSi8sDs zf;UWDt6)2$9DI9Y^}blzI3n7SRkWSlo->L4<)W|tx zYNiVW`J2A}3^KEG2FBojRTb@QD*(V`)Rj5AynLtHL)Eo&N|R|!dYykkpy~=J`3(&C zbP|t;pk3|?Y(#ms)^;#1YB`2%a}XA6gqs?6rl~>zlzaW{L9X3g(+In0_nJnVL%s4` zfTI*{V5(aPtFF-nGe)!UZ?`wY!qPx(xwCBqn6si}?xKtZ7oe^PN4j48%o-JJRM^L= zY~6wjSa?)tNqm=Ld_sR%RnNwAC@g9$@uy{WV0XkA4P~Pg?PS&n0Y>yv|4Wx1t(|I* zH35bQ5E7US2Hu^?$f;y8D0!49i&Ga_(p1Jm-kA|+uOkvfLcpg2$I zP#wdHHD(-~-eH`9j#pgChZ83Ay)O|ac`QZmk$=pT4VlSgph|xcxx)}LQxAz)Kz=qN zdNNxP36@QzKiLRy)>Hg8r$Pcyp3dwsW?4dEmCUg`$-rnb=6K`9+6!&K5SI(dSmty- z%(?7&E)N1!5&fmciQ9=FWm0dK8qBB-Dj_N!AO-mVDI}0LjEGF55UT=PBydw=a}N|a z0Vxm7qMHMD`(}Sp9^&9oY4#=B^u7?C244hRlPrr~poQBO1NR5AHyp?r`(8ULMV zyRBC%_&}P-NxOJxO9a0qFWB;oQ1Lp+z7TACxfN>gz9&IJ;h1P(XfDt~NH zsRo?qs9CE-c(C~bPg+_IJGg%&a+6>>%EC7G-~b41RLqJD+Du> zt`N*PaOmG+Vf=vwzwL?m!zso(dEak?D<*(TbY!e7^>rVfieH$l*+NZB=md>U_gZG* zDaF@k(J6ma92}D+X_!r#-r@tkJWdkH_Hf;*x!j5~$e@FA5Zje%lp!Aq*SBQmlOg{1 zZOyjWxzQ~)#EUzdD-~{=p#JH%m@5cLOoqw>M87*!KW<7OtWfD1OJ;L-2-;TDb|+3u zSll1CF1oq17>o14&5W_TyVv)n;p_v9O-?EXpca3SN0g1OcYRr`H*-7%Y1u=C5YL+q zm^7UfBJUK$R*WO)b;mwm2j9LYM)a&`y7CM9hhWhaw#mz#2Ky`0-7+wHG=$-kl1KT_wx7YOE2@=Tu(p9-C zRr`N$ckrJ@RqTr896Ep3+9BSXmrv~A1D0m-MQoqm??3BpZO1QbNQJvY*MI(UpU5tD zdq6ud^}9itP*JI(S#90!GzY-#8IXXzS@40uSZyA?19;Tyro8bJlkX0$BM%F2%GI{0 z%tPkwP)6>XgqyxtA0Wv2tz8Ofs3wlR5G*Hy;$~=-d1P8$gz1mp65k=7wn@Y6bt0 z;CA_4xP3)cq<`o*oN+e;n%Y45fHsHx^KWaK0p;6IHcLT|H(nysfJ1#DU1TN$-`#TD zjFIH;QXAY|jm&zBSSE9#Us3Q%3Av!6ag{pK~jf}mXD!x4@s%-rd()&0cT&GPx1BYA4 z#ijI@{+0wKRg|>DE)~T$@^`xqW2GS5kEaXY%zIJYTOT>@g*WHItE>=7YMgSe)CLTc z@}IU}a`B5C|MO3x?QnlX4P?J`NO<_==pg){H*cftz1h%+b=xMktEYcjB=M|CPg~3w z5Q{G_l1`jYiRE7&kv>s&Q!nJ51UAI9c|}8=AohN_d7EBWE=!zr*6{$E zlE+O}^NwDuB(NYk&L#>7>9$5{J}1ws6=_N+SD&3s-k&t%KxbO^1St*6p=aIX@Kg$U z=ZPQ)`)N~7%}`M;7qZHG7l)M z*oh{GxWWnGiC1UxIkntU9W$Uzcc!t-e!_l6vhniwzmz@p3?~P%WjO3c4fF}~PO`Za zR;4@eRZydQ(A6$0hCc!V!PSqGJoU%S?sqG>Y4$N=J{Y;Zi%Z8!L{>VC(>&hI$ILRc zC%RMrGO97Xy`+8hSxq+@@LSXxrOmM}97oxO>B~z{xU;@xMx85n-`mvNjO_Vmhl~3P zv8qfZYNO7gRero8BCG{YiAU+f;rEd23Vu?)mjjAW*CicX#d9ck79=z5WGaOXLGt?v zvLtvrheLZmNhT%iX(_~7yYUbmHVWz~U>r3YJX@&1i`UGvi2jrecv`|vtaJ3oY4OC| z_Jn5iIu+X1l(|Vpr?&3P_@6WAxIS4T@7Jq-wD9qa$0Dm()32ds*CG6?2Ts4C^mLOo zABR1=qLgYaXj@S04jr%g3m(Kl7TOTSEVebLE=X06oX^-e)KRM6JAQH_|1A)POq)(F zzx8qT{6Sf4A&=~c48Ff3^@7vBjDxAKSAW){YW7A%Y-q&qP8W>Ai2=Ik%A|#0Fb5Sp z+m{w7t}buh=In4XjCRbjycSY%vGiOxW>^uOk+2+j_`6K zC}qWsw4OaUB)@U)m1#|Qec7J+8k6;i8O%%@HsyxUhAOmS3Eo77BY(Xa^CC|F6MoRd zqjMDOf7=7=x1tRSC${hBaUZ^{DzImvHz50suY@1H=N1Kc$s3NI(-dpiVzu6CJc))O zD0B zM?o+dB~s%~2K%2Zf^a25U5XOrCnigX8!D_{ZC){{Ju3+_&LYN>*fIXK*|qE*=C7S7 zBE7={*HsvK2eP*0sH%o$@ z3DF=$z|wrh^dVB4r5E=4U3xLDTWihbSo0{Z4q zusn^?s{}MYwRL3(<$57eL%%{J=9`cDCF4k45Nsp%@oLXGD=tcPU1)(Z^CK0NQfLP=SNuV%aeXTv}76E$9qwK<-xF6i4;hpO(ik5sp~Z>!;8 z4)!4R)B{etGaM^gd4rbLTJKI)G6>!dPBK*ULkcLQyXSl`KDg193!E0Q(AY0Iw4pZ6 z4XBGKe(9(xPX(@JcAJn%!??Job}voQnSH3@#qC7WU!5%Rcs^EjJI+liJ9o8UI=kr| z{(7#^_x5z`{KpcTYRvJUWRQ;x?tgnq!HHV3(d!b(U6<9Y4sqc>e`lr5Lh%+@G_!Eh z)~)NOk21F{zf=nvskm&Bm=G^=Bj1jC76VYKb)JL;5I8aeoxFUm7;`?(I>f zJ+W1%Wi}g~%Y|>{70#NroM%ZmHia`*^m&RPZQS_G;ii{LlRl-fLT+F}ISedzMRx(hE*tDAm zs|zRnwD|7Q&0guxyRVfdSyz95E&go&oXNwgye}=&*>kGj2>9z`Z|LMln?nPeQ7Fn| zVmj9_tbhrr9Iec8Q9QlA03xhPorEpaoE$m!Q6QqwZ@ET za@ILqhmcw61L5OC!m1V&An)cW1kCxuOIl__8FZjF$|%vNIzS<~^lR(uXl9+xc80 z#|WxZw=oZdOJHR9j5CR<9%8*nH{nDb$J?1iE?{llu^6C~MpEnX(A?KN6sOfG1?fArjQ#j!pAxTDkyJYGVxWQxhbmayYf4R}O5?-LKe*irXSJ|psZ`B;#7-61Q zPTlw&0kq`>G$p&NEGjA^CzF5*Tw zw^q`lvI}+xB~sD0lW6nqpGFn3*?*P7Ktx6Ge*~jX`)}a^;2kJdm7>1>P@dYMtbb;% z8GwL-~VK0lYj(DeX5?(6(tOUY3e6ovQ+Gfah--OH-H*ekAX~^ zHCF|aC)Rco%lx>H>KQVW0|jRAM8fg62yucB?Nio2WGPkh_}Lra9c$x#oP`zw%+({u z;>26n;e+L5zyc||AdCs9IvM1iS5`Do;v7bbNF^Lc|D1~)h)vf#_Gd)dMq|Z~?SxWn zBMF+QAJ_L^?xHKz}YG)!g!jOPkT+v4!Tei(dP@rRevehCT+**PVYKO~7tM)4?ISNjc+p;M* zEt9nVYYS6KqcgW#D|AU4S9EIFFK$t4Oh$Ks2^@+r-^6x^te)EQ2)!7@u`J_-po^&k zYAwjrxM#w6KJ2kF5nr9!+`w{GTU!pA`Hbk{iubdn42Du++QNKjbPouc<<@LIHQ&4m z!LM$6V1uVHv!`n(z763RDgWLu)7$;rAPqYqwB@E)8{z2VE2Y_L*q%#NPuJ0}Mx?fPg> zM4u|Dk^l#a{XniDA^hg#6fmQ#^p+;f$J~G5v=!bs$ALHB#G>x`Ep{SR;J8PMy}=cC zV~w}67=0TFfl`It;L!6{U>Odw^y)&Xf9O}P)aulFGc1RZKX1qtuB%8#4- Uuxv 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 DD4Oce diff --git a/tests/spelling.R b/tests/spelling.R index c61948b..33569a8 100644 --- a/tests/spelling.R +++ b/tests/spelling.R @@ -1,3 +1,3 @@ -if(requireNamespace("spelling", quietly = TRUE)) - spelling::spell_check_test(vignettes = TRUE, error = FALSE, - skip_on_cran = TRUE) +if (requireNamespace("spelling", quietly = TRUE)) + spelling::spell_check_test(vignettes = TRUE, error = FALSE, + skip_on_cran = TRUE) diff --git a/tests/testthat/test_se.R b/tests/testthat/test_se.R index 7324298..b1f68b1 100644 --- a/tests/testthat/test_se.R +++ b/tests/testthat/test_se.R @@ -14,11 +14,11 @@ test_that("Homoscedastic and EHW standard errors on ADH data", { r1 <- lm(as.formula(paste("shock ~ IV+", ctrls)), data=ADH$reg, weights=weights) b1 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), W=ADH$W, X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - method=methods) + data=ADH$reg, weights=weights, region_cvar=statefip, + method=methods) r2 <- lm(as.formula(paste("shock ~ IV+", ctrls)), data=ADH$reg) b2 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), W=ADH$W, X=IV, - data=ADH$reg, method=methods, region_cvar=statefip) + data=ADH$reg, method=methods, region_cvar=statefip) expect_equal(unname(summary(r1)$coefficients[2, 1:2]), unname(c(b1$beta, b1$se[1]))) @@ -33,12 +33,12 @@ test_that("Homoscedastic and EHW standard errors on ADH data", { r3 <- lm(as.formula(paste("d_sh_empl_mfg ~ IV+", ctrls)), data=ADH$reg, weights=weights) b3 <- reg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls)), W=ADH$W, - X=IV, data=ADH$reg, region_cvar=statefip, - weights=weights, method=methods) + X=IV, data=ADH$reg, region_cvar=statefip, + weights=weights, method=methods) r4 <- lm(as.formula(paste("d_sh_empl_mfg ~ IV+", ctrls)), data=ADH$reg) b4 <- reg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls)), W=ADH$W, - X= IV, data=ADH$reg, region_cvar=statefip, - method=methods) + X= IV, data=ADH$reg, region_cvar=statefip, + method=methods) expect_equal(unname(summary(r3)$coefficients[2, 1:2]), unname(c(b3$beta, b3$se[1]))) @@ -52,7 +52,7 @@ test_that("Homoscedastic and EHW standard errors on ADH data", { ## IV r5 <- AER::ivreg(as.formula(paste("d_sh_empl_mfg ~ shock+", ctrls, "| IV+", ctrls)), - data=ADH$reg, weights=weights) + data=ADH$reg, weights=weights) b5 <- ivreg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls, "| shock")), W=ADH$W, X=IV, data=ADH$reg, region_cvar=statefip, weights=weights, method=methods) @@ -84,27 +84,27 @@ test_that("AKM and AKM0 standard errors on ADH data", { ## 3-digit cluster and unclustered cvar <- floor(ADH$sic/10) c1 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), W=ADH$W, X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - sector_cvar=cvar, method="all") + data=ADH$reg, weights=weights, region_cvar=statefip, + sector_cvar=cvar, method="all") c3 <- reg_ss(as.formula(paste("d_sh_empl ~ ", ctrls)), W=ADH$W, - X=IV, data=ADH$reg, region_cvar=statefip, - weights=weights, sector_cvar=cvar, method="all") + X=IV, data=ADH$reg, region_cvar=statefip, + weights=weights, sector_cvar=cvar, method="all") c5 <- ivreg_ss(as.formula(paste("d_sh_empl ~ ", ctrls, "| shock")), W=ADH$W, X=IV, data=ADH$reg, region_cvar=statefip, sector_cvar=cvar, weights=weights, method="all") a1 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), W=ADH$W, X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - method="all") + data=ADH$reg, weights=weights, region_cvar=statefip, + method="all") ## manufacturing b3 <- reg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls)), W=ADH$W, - X=IV, data=ADH$reg, region_cvar=statefip, - sector_cvar=cvar, weights=weights, method="all") + X=IV, data=ADH$reg, region_cvar=statefip, + sector_cvar=cvar, weights=weights, method="all") b5 <- ivreg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls, "| shock")), W=ADH$W, X=IV, data=ADH$reg, region_cvar=statefip, sector_cvar=cvar, weights=weights, method="all") a3 <- reg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls)), W=ADH$W, - X=IV, data=ADH$reg, region_cvar=statefip, - weights=weights, method="all") + X=IV, data=ADH$reg, region_cvar=statefip, + weights=weights, method="all") a5 <- ivreg_ss(as.formula(paste("d_sh_empl_mfg ~ ", ctrls, "| shock")), W=ADH$W, X=IV, data=ADH$reg, region_cvar=statefip, weights=weights, method="all") @@ -156,7 +156,7 @@ test_that("AKM and AKM0 standard errors on ADH data", { n <- 1444 p <- 17 nc <- 48 - ssc <- sqrt((nc/(nc-1)) * (n-1)/(n-p)) + ssc <- sqrt((nc / (nc-1)) * (n-1) / (n-p)) ssc2 <- sqrt(n / (n - p)) piv0 <- c(c5$p[4:5], a5$p[4:5]) - @@ -205,19 +205,19 @@ test_that("AKM0 under weak ID", { expect_equal(unname(c(iv2$ci.l[5], iv2$ci.r[5])), c(-Inf, Inf)) r0 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), - W=ADH$W[as.numeric(ADH$reg$division)>4, ], X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - method="akm0", subset=as.numeric(division)>4, alpha=0.05) + W=ADH$W[as.numeric(ADH$reg$division)>4, ], X=IV, + data=ADH$reg, weights=weights, region_cvar=statefip, + method="akm0", subset=as.numeric(division)>4, alpha=0.05) expect_lt(r0$ci.l[5], r0$ci.r[5]) r1 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), - W=ADH$W[as.numeric(ADH$reg$division)>4, ], X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - method="akm0", subset=as.numeric(division)>4, alpha=0.045) + W=ADH$W[as.numeric(ADH$reg$division)>4, ], X=IV, + data=ADH$reg, weights=weights, region_cvar=statefip, + method="akm0", subset=as.numeric(division)>4, alpha=0.045) r2 <- reg_ss(as.formula(paste("shock ~ ", ctrls)), - W=ADH$W[as.numeric(ADH$reg$division)<6, ], X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - method="akm0", subset=as.numeric(division)<6) + W=ADH$W[as.numeric(ADH$reg$division)<6, ], X=IV, + data=ADH$reg, weights=weights, region_cvar=statefip, + method="akm0", subset=as.numeric(division)<6) expect_equal(unname(c(r1$se[5], r2$se[5])), c(Inf, Inf)) expect_lt(r1$ci.r[5], r1$ci.l[5]) expect_equal(unname(c(r2$ci.l[5], r2$ci.r[5])), c(-Inf, Inf)) @@ -280,11 +280,11 @@ context("Check warnings") test_that("Print warning if region_cvar not supplied", { expect_warning(reg_ss(d_sh_empl ~ 1, W=ADH$W, X=IV, - data=ADH$reg, method="all")) + data=ADH$reg, method="all")) expect_warning(ivreg_ss(d_sh_empl ~ 1 | shock, W=ADH$W, - X=IV, data=ADH$reg, method="all")) + X=IV, data=ADH$reg, method="all")) expect_warning(reg_ss(d_sh_empl ~ 1, W=ADH$W, X=IV, - data=ADH$reg, method="region_cluster")) + data=ADH$reg, method="region_cluster")) expect_warning(ivreg_ss(d_sh_empl ~ 1 | shock, W=ADH$W, X=IV, data=ADH$reg, method="region_cluster")) diff --git a/vignettes/ShiftShareSE.Rmd b/vignettes/ShiftShareSE.Rmd index 024eddc..aece698 100644 --- a/vignettes/ShiftShareSE.Rmd +++ b/vignettes/ShiftShareSE.Rmd @@ -54,7 +54,9 @@ We now replicate column (1) of Table V in @akm18. First we load the package, define the vector of controls, and define a vector of 3-digit SIC codes: ```{r} library("ShiftShareSE") -ctrls <- paste("t2 + l_shind_manuf_cbp + l_sh_popedu_c +", "l_sh_popfborn + l_sh_empl_f + l_sh_routine33 + l_task_outsource", "+ division") +ctrls <- paste("t2 + l_shind_manuf_cbp + l_sh_popedu_c +", + "l_sh_popfborn + l_sh_empl_f + l_sh_routine33", + " + l_task_outsource + division") sic <- floor(ADH$sic/10) ``` @@ -66,8 +68,8 @@ options. The first-stage regression: ```{r} reg_ss(as.formula(paste("shock ~ ", ctrls)), W=ADH$W, X=IV, - data=ADH$reg, weights=weights, region_cvar=statefip, - sector_cvar=sic, method="all") + data=ADH$reg, weights=weights, region_cvar=statefip, + sector_cvar=sic, method="all") ``` Note that for `"AKM0"`, `"Std. Error"` corresponds to the normalized standard @@ -78,11 +80,11 @@ $2z_{1-\alpha/2}$. The reduced-form and IV regressions: ```{r} reg_ss(as.formula(paste("d_sh_empl ~", ctrls)), W=ADH$W, X=IV, - data=ADH$reg, region_cvar=statefip, weights=weights, - sector_cvar=sic, method="all") + data=ADH$reg, region_cvar=statefip, weights=weights, + sector_cvar=sic, method="all") ivreg_ss(as.formula(paste("d_sh_empl ~", ctrls, "| shock")), W=ADH$W, - X=IV, data=ADH$reg, region_cvar=statefip, - weights=weights, sector_cvar=sic, method="all") + X=IV, data=ADH$reg, region_cvar=statefip, + weights=weights, sector_cvar=sic, method="all") ``` # Collinear share matrix