Implements design-aware, margin-constrained estimation of
population indicators for geographic areas crossed with demographic
subgroups. Complex-survey microdata supply outcomes and association
information, while one or more aggregate census tables supply overlapping
population margins. A generalized iterative proportional fitting engine
reconstructs a coherent latent population table, and an augmented
model-assisted estimator produces domain means, proportions, and totals
for sampled and unsampled intersections. Tools
diagnose non-identification, compute linear-programming sensitivity bounds,
propagate sampling and model uncertainty with replicate-weight or
multiplier bootstrap procedures, enforce structural zeros, and benchmark
estimates to official totals. The framework extends calibration ideas from
Deville and Sarndal (1992)
interSAE implements joint margin-constrained intersectional small area
estimation from complex-survey microdata and aggregate census margins.
The motivating problem is common in official statistics: a survey observes an outcome and several demographic variables, while published census tables give precise but overlapping margins rather than a full confidential microdata file. Direct survey estimates become unstable or unavailable after crossing a small geographic area with age, sex, residence, or another subgroup.
install.packages("interSAE_0.1.0.tar.gz", repos = NULL, type = "source")
The core package uses only R recommended packages. Install lpSolve to compute
identification bounds.
library(interSAE)
x <- inter_example()
design <- inter_design(
x$survey,
weights = "weight",
area = "area",
strata = "strata",
psu = "psu"
)
margins <- census_margins(x$margins)
fit <- fit_inter_sae(
unemployed ~ sex + age + residence + area,
design = design,
margins = margins,
family = "binomial",
domain = c("area", "sex")
)
inter_estimates(fit)
margin_diagnostics(fit)
check_identifiability(fit)
Optional sensitivity analysis:
if (requireNamespace("lpSolve", quietly = TRUE)) {
inter_sensitivity(
fit,
gamma = c(1, 1.25, 1.5, 2, Inf),
domain = list(area = "A1", sex = "Female")
)
}
The fitted point estimate depends on the outcome model and on a coherent population reconstruction seeded by the weighted survey association structure. When aggregate margins do not identify the full joint table, the package says so explicitly. Identification bounds vary the latent joint table while holding published census margins fixed. Bootstrap intervals and identification bounds answer different questions and should be reported separately.
This release is a research implementation for categorical census dimensions and Gaussian or binary survey outcomes. It does not claim that aggregate margins alone identify a confidential joint population distribution. Applied work should document the outcome formula, structural zeros, sensitivity values, survey design, and benchmarking decisions.