Latent Class Analysis

Analyze → Classify → Latent Class. For a set of categorical indicators — survey items, symptoms, yes/no behaviours, diagnostic ratings — the question "are there unobserved subgroups here, and how many?" is a mixture-modeling question: a latent class analysis assumes the population is a blend of a few hidden classes, each with its own probability of every indicator response, and estimates the blend by maximum likelihood. Unlike the distance-based cluster procedures (which need continuous-ish variables and give no fit statistics), LCA is a proper statistical model for categorical data: it reports fit indices for choosing the number of classes, class profiles in probability terms, and each case's membership probabilities rather than a hard assignment.

The data layout

One row per case, one column per indicator — numeric or string, each with 2–15 distinct values (a column with more looks like a scale variable and is refused; recode or bin it first). Cases incomplete on any indicator are dropped, and the output's note counts what remained.

The dialog

Tick the Indicators, set the number of Classes (default 2), and optionally Compare counts up to M — the enumeration workflow in one run: every count from 1 to M is fitted with the same settings and a comparison table opens the output. Save modal class membership / Save posterior probabilities write the results back as new variables.

Estimation uses EM with 20 random starts (keeping the best likelihood) behind a fixed seed, so the same run always reproduces the same tables; the starts and seed arguments of the latent_class command explore further.

Choosing the number of classes

Fit is compared across counts, never judged absolutely:

  • Latent Class Enumeration — one row per class count: log-likelihood, parameters, AIC / BIC / aBIC (lower is better; BIC is the conventional default, aBIC weights small samples more gently) and entropy. The information criteria usually stop disagreeing one or two counts apart — prefer the smaller model when in doubt, and always ask whether the extra class means something: a class you cannot name is a class you cannot use.
  • Entropy (0–1) is not a fit index — it measures how crisply cases classify (near 1 = classes well separated). A well-fitting model can still have low entropy; then the classes exist but individuals cannot be confidently assigned.
  • A model can also be not identified (more parameters than the data can support); the analysis refuses it with a message rather than printing arbitrary numbers, and the enumeration table skips such counts and says so.

Reading the output

  • Latent Class Model Summary — N (complete cases), classes, parameters, residual df, the log-likelihood, AIC/BIC/aBIC, entropy, and the G² / chi-square tests of the fitted response-pattern table. The note names the starts, the seed and the convergence of the winning start.
  • Latent Class Sizes — the estimated share of each class (classes are always numbered in descending size order), its expected N, and the modal N (cases assigned to it by highest posterior). A class no case is modally assigned to is flagged — fewer classes likely fit better.
  • Class-Conditional Item Probabilities — the heart of the output: for each indicator category, the probability of that response within each class. Read the columns as profiles and name the classes from them (e.g. "high-symptomatic", "abstainers"). Probabilities of exactly 0 or 1 are legitimate boundary estimates, not errors.
  • Average Posterior Probabilities by Assigned Class — classification quality: for the cases assigned to each class, their average posterior probability of belonging to every class. Diagonal values ≥ 0.8 are the usual "adequately separated" benchmark; low diagonals mean assignments are uncertain even if the model fits.

Using the saved columns

  • Modal class (lca_class, 1 = largest class) — a categorical variable ready for Crosstabs, group comparisons or plots. Remember it hardens a probabilistic classification: with low entropy, treating it as known overstates certainty.
  • Posteriors (lca_p1lca_pC) — the full membership probabilities, for weighting or sensitivity checks.

Scope (v1). Unconditional LCA only: no covariates predicting class membership, no ordinal/constrained item models, no retention of partially missing responses, and no bootstrap likelihood-ratio test — the enumeration table's information criteria are the class-count decision aids. A frequency weight (Weight Cases) is honored as case replication; a declared survey design is not covered and the output says so.