sitepickR
Two-Level Sample Selection with Optimal Site Replacement
Description
Carries out a two-level sample selection where the possibility of an initially selected site not wanting to participate is anticipated, and the site is optimally replaced. The procedure aims to reduce bias (and/or loss of external validity) with respect to the target population. In selecting units and sub-units, 'sitepickR' uses the cube method developed by 'Deville & Tillé', (2004) <http://www.math.helsinki.fi/msm/banocoss/Deville_Tille_2004.pdf> and described in Tillé (2011) <https://www150.statcan.gc.ca/n1/en/pub/12-001-x/2011002/article/11609-eng.pdf?st=5-sx8Q8n>. The cube method is a probability sampling method that is designed to satisfy criteria for balance between the sample and the population. Recent research has shown that this method performs well in simulations for studies of educational programs (see Fay & Olsen (2021, under review). To implement the cube method, 'sitepickR' uses the sampling R package <https://cran.r-project.org/package=sampling>. To implement statistical matching, 'sitepickR' uses the 'MatchIt' R package <https://cran.r-project.org/package=MatchIt>.
Downloads
265
Last 30 days
16249th
769
Last 90 days
3K
Last year
Trend: +3.9% (30d vs prior 30d)
CRAN Check Status
Show all 14 flavors
| Flavor | Status |
|---|---|
| r-devel-linux-x86_64-debian-clang | NOTE |
| r-devel-linux-x86_64-debian-gcc | NOTE |
| r-devel-linux-x86_64-fedora-clang | NOTE |
| r-devel-linux-x86_64-fedora-gcc | NOTE |
| r-devel-macos-arm64 | NOTE |
| r-devel-windows-x86_64 | NOTE |
| r-oldrel-macos-arm64 | NOTE |
| r-oldrel-macos-x86_64 | NOTE |
| r-oldrel-windows-x86_64 | NOTE |
| r-patched-linux-x86_64 | NOTE |
| r-release-linux-x86_64 | NOTE |
| r-release-macos-arm64 | NOTE |
| r-release-macos-x86_64 | NOTE |
| r-release-windows-x86_64 | NOTE |
Check details (16 non-OK)
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
dependencies in R code
Namespace in Imports field not imported from: ‘data.table’ All declared Imports should be used.
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
dependencies in R code
Namespace in Imports field not imported from: ‘data.table’ All declared Imports should be used.
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
| ^
checkRd: (-1) selectMatch.Rd:61: Lost braces; missing escapes or markup?
61 | \item{replacementUnitsFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "replacementUnits.csv"}
| ^
checkRd: (-1) selectMatch.Rd:63: Lost braces; missing escapes or markup?
63 | \item{subUnitTableFilename}{character; csv filename for saving {unit:replacement} directory when writeOut == TRUE; default = "subUnitTable.csv"}
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
checkRd: (-1) selectMatch.Rd:66: Lost braces; missing escapes or markup?
66 | list with: 1) table of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Check History
NOTE 0 OK · 14 NOTE · 0 WARNING · 0 ERROR · 0 FAILURE Mar 10, 2026
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
dependencies in R code
Namespace in Imports field not imported from: ‘data.table’ All declared Imports should be used.
dependencies in R code
Namespace in Imports field not imported from: ‘data.table’ All declared Imports should be used.
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^
Rd files
checkRd: (-1) rawCCD.Rd:20: Lost braces; missing escapes or markup?
20 | \item{distr.type}{school district type (constructed for illustration purposes; (values={"A", "B", "C", "D"})).}
|
...[truncated]...
le of the form: {selected unit i: (unit i replacements)}, 2) table of the form: {potential unit i:(unit i sub-units)}, 3) balance diagnostics.
| ^