Concept - Latent Class and Dirichlet Process Models for Multiple Systems Estimation

Summary

LCMCR (Manrique-Vallier 2016) models the list-inclusion table as a mixture of product-Bernoulli latent classes with a truncated Dirichlet-process (stick-breaking) weight prior, and treats the unseen individuals by data augmentation. It gives flexible heterogeneity without picking list interactions, but Aleshin-Guendel (2020) shows its families are non-identifiable when the number of classes exceeds , and Silverman (2020) shows unstable results on the UK and Netherlands data.

Overview

The log-linear family (Silverman 2020 - Poisson Log-Linear Model for Multiple Lists) models dependence between lists with explicit interaction terms, which become unwieldy and sparse for many lists. The latent-class approach instead assumes dependence arises from unobserved heterogeneity: given an individual’s latent class, lists include them independently (; Aleshin-Guendel 2020 - Mth Model and Identifiability Definition).

Main Content

Latent class capture-recapture model

Each individual has class and inclusion indicators independently over lists . The observed cells are those with some ; includes unseen individuals with . Marginal cell probability: ; the missing cell is .

Dirichlet-process version (LCMCR; details to verify)

Replace finite by a stick-breaking prior: , , truncated at classes, with a hyperprior on the concentration and Beta priors on ; the population size has a prior of the form (improper) or a bounded alternative, and inference is by Gibbs sampling with data augmentation of the unobserved individuals (as I recall; confirm exact hyperparameters against the paper and the R package LCMCR). Reported summary: posterior of , including the uncertainty from the augmented zero-pattern count.

Identification bound (from Aleshin-Guendel 2020)

With distinct classes and lists, the family is identified iff . The LCMCR default requires ; the recommended never is. Practical reading: with lists the posterior for is partly set by the prior over class structure and the truncation level.

Computation. In a probabilistic-programming implementation, classes are summed out per cell using logsumexp rather than sampled (Concept - Marginalising Latent Discrete Counts for HMC); the unseen cell contributes the term through combined with a prior on . Label switching is handled by ordering constraints, and the cell-level likelihood avoids per-individual class indicators when counts are aggregated (a table has at most distinct patterns).

Diagnostics. (a) Vary below and above and compare posterior intervals for (stability). (b) Merge two small lists and re-estimate: a good estimator should not move much (this exposed Netherlands instability in Silverman 2020 - Madigan-York and Dirichlet Process Benchmarks). (c) Prior-versus-posterior comparison for .

Examples

PyMC-style sketch (untested): finite latent class MSE on a table

import numpy as np, pymc as pm, pytensor.tensor as pt, itertools
K, J = 4, 2                                   # keep 2J <= K for identification
H = np.array([h for h in itertools.product([0,1], repeat=K) if any(h)])
counts = np.array([...])                      # observed cell counts, one per row of H
n = counts.sum()
with pm.Model() as lcm:
    nu = pm.Dirichlet("nu", np.ones(J))
    lam = pm.Beta("lam", 1, 1, shape=(J, K))
    # log cell probabilities per class: (J, 2^K-1)
    logc = (H[None] * pt.log(lam)[:, None] + (1-H[None]) * pt.log1p(-lam)[:, None]).sum(-1)
    logpi = pm.math.logsumexp(pt.log(nu)[:, None] + logc, axis=0)
    log_pi0 = pm.math.logsumexp(pt.log(nu) + pt.log1p(-lam).sum(1))
    # conditional multinomial likelihood of observed cells, then add N | n via a prior on N
    pm.Potential("cells", pt.sum(counts * (logpi - pt.log1p(-pt.exp(log_pi0)))))
    pm.Deterministic("dark_per_observed", pt.exp(log_pi0) / (1 - pt.exp(log_pi0)))

Posterior draws of give (point) and, with a Negative-Binomial predictive for the unseen count, a full interval. Not tested; check with simulated data where the truth is known.

Relevance to marketing measurement

Latent class models for overlapping audiences (heavy vs light users) mirror the idea: dependence between data sources is explained by unobserved segments rather than pairwise interaction terms. The identification warning transfers directly: with only a few sources you cannot support many latent segments.

Connections

See Also