DiSCos
Distributional Synthetic Controls Estimation
Description
The method of synthetic controls is a widely-adopted tool for evaluating causal effects of policy changes in settings with observational data. In many settings where it is applicable, researchers want to identify causal effects of policy changes on a treated unit at an aggregate level while having access to data at a finer granularity. This package implements a simple extension of the synthetic controls estimator, developed in Gunsilius (2023) <doi:10.3982/ECTA18260>, that takes advantage of this additional structure and provides nonparametric estimates of the heterogeneity within the aggregate unit. The idea is to replicate the quantile function associated with the treated unit by a weighted average of quantile functions of the control units. The package contains tools for aggregating and plotting the resulting distributional estimates, as well as for carrying out inference on them.
Downloads
527
Last 30 days
7537th
1.7K
Last 90 days
4.4K
Last year
Trend: -0.8% (30d vs prior 30d)
CRAN Check Status
Show all 13 flavors
| Flavor | Status |
|---|---|
| r-devel-linux-x86_64-debian-clang | OK |
| r-devel-linux-x86_64-debian-gcc | OK |
| r-devel-linux-x86_64-fedora-clang | OK |
| r-devel-linux-x86_64-fedora-gcc | OK |
| r-devel-windows-x86_64 | OK |
| r-oldrel-macos-arm64 | OK |
| r-oldrel-macos-x86_64 | OK |
| r-oldrel-windows-x86_64 | OK |
| r-patched-linux-x86_64 | OK |
| r-release-linux-x86_64 | OK |
| r-release-macos-arm64 | OK |
| r-release-macos-x86_64 | OK |
| r-release-windows-x86_64 | OK |
Check History
OK 13 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Jun 23, 2026
ERROR 12 OK · 0 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Jun 22, 2026
tests
Running ‘testthat.R’ [102s/120s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additiona ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 35 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
OK 13 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Jun 1, 2026
ERROR 11 OK · 0 NOTE · 0 WARNING · 2 ERROR · 0 FAILURE May 29, 2026
tests
Running ‘testthat.R’ [102s/123s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additiona ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 35 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
tests
Running 'testthat.R' [141s] Running the tests in 'tests/testthat.R' failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additional tes ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 35 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
OK 13 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE May 6, 2026
ERROR 12 OK · 0 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE May 4, 2026
tests
Running 'testthat.R' [145s] Running the tests in 'tests/testthat.R' failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additional tes ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 35 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
OK 14 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Apr 9, 2026
ERROR 13 OK · 0 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Apr 2, 2026
tests
Running ‘testthat.R’ [165s/204s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additiona ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 35 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
OK 14 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Mar 24, 2026
ERROR 13 OK · 0 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Mar 21, 2026
tests
Running 'testthat.R' [200s] Running the tests in 'tests/testthat.R' failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additional tes ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 34 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
OK 14 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Mar 20, 2026
ERROR 13 OK · 0 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Mar 19, 2026
tests
Running ‘testthat.R’ [103s/135s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additiona ...[truncated]... DiSCos (local) FUN(newX[, i], ...) 6. ├─stats::quantile(x, probs = (1 - cl)/2) 7. └─stats:::quantile.default(x, probs = (1 - cl)/2) [ FAIL 1 | WARN 35 | SKIP 0 | PASS 113 ] Error: ! Test failures. Execution halted
OK 14 OK · 0 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Mar 14, 2026
ERROR 12 OK · 0 NOTE · 0 WARNING · 2 ERROR · 0 FAILURE Mar 10, 2026
dependencies in R code
Missing or unexported object: ‘CVXR::solve’
dependencies in R code
Missing or unexported object: 'CVXR::solve'