Skip to main content

A Python package for stepwise estimation of latent class models with measurement and structural components. The package can also be used to fit mixture models with various observed random variables.

Project description

StepMix

PyPI version Build Documentation Status Code style: black

A Python package for latent class analysis and clustering of continuous and categorical data, with support for missing values. Various stepwise estimation methods are available for models with measurement and structural components. Largely based on Bakk & Kuha, 2018.

Install

You can install StepMix with pip, preferably in a virtual environment :

pip install stepmix

Tutorials

Detailed tutorials are available in notebooks :

  1. Latent Class Analysis with StepMix : an in-depth look at how latent class models can be defined with StepMix. The tutorial uses the Iris Dataset as an example and covers :
    1. Continuous LCA models;
    2. Binary LCA models;
    3. Categorical LCA models;
    4. Mixed LCA models (continuous and categorical data);
    5. Missing Values.
  2. Stepwise Estimation with StepMix : a tutorial demonstrating how to define measurement and structural models. The tutorial discusses:
    1. LCA models with response variables;
    2. LCA models with covariates;
    3. 1-step, 2-step and 3-step estimation;
    4. Corrections and other options for 3-step estimation.
  3. Model Selection : a short tutorial discussing:
    1. Selecting the number of latent classes (n_components);
    2. Comparing models with AIC and BIC.
  4. Parameters, Bootstrapping and CI : a tutorial discussing how to:
    1. Access StepMix parameters;
    2. Bootstrap StepMix estimators;
    3. Quickly plot confidence intervals.

Quickstart

A simple example for 3-step estimation on simulated data :

from stepmix.datasets import data_bakk_response
from stepmix.stepmix import StepMix

# Soft 3-step 
X, Y, _ = data_bakk_response(n_samples=1000, sep_level=.9, random_state=42)
model = StepMix(n_components=3, n_steps=3, measurement='bernoulli', structural='gaussian_unit', assignment='soft',
            random_state=42)
model.fit(X, Y)
print(model.score(X, Y))  # Average log-likelihood

# Equivalently, each step can be performed individually. See the code of the fit method for details.
model = StepMix(n_components=3, measurement='bernoulli', structural='gaussian_unit', random_state=42)
model.em(X)  # Step 1
probs = model.predict_proba(X)  # Step 2
model.m_step_structural(probs, Y)  # Step 3
print(model.score(X, Y))

1-step and 2-step estimation are simply a matter of changing of the n_steps argument. Additionally, some bias correction methods are available for 3-step estimation.

References

  • Bolck, A., Croon, M., and Hagenaars, J. Estimating latent structure models with categorical variables: One-step versus three-step estimators. Political analysis, 12(1): 3–27, 2004.

  • Vermunt, J. K. Latent class modeling with covariates: Two improved three-step approaches. Political analysis, 18 (4):450–469, 2010.

  • Bakk, Z., Tekle, F. B., and Vermunt, J. K. Estimating the association between latent class membership and external variables using bias-adjusted three-step approaches. Sociological Methodology, 43(1):272–311, 2013.

  • Bakk, Z. and Kuha, J. Two-step estimation of models between latent classes and external variables. Psychometrika, 83(4):871–892, 2018

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stepmix-0.4.1.tar.gz (43.6 kB view details)

Uploaded Source

Built Distribution

stepmix-0.4.1-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file stepmix-0.4.1.tar.gz.

File metadata

  • Download URL: stepmix-0.4.1.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for stepmix-0.4.1.tar.gz
Algorithm Hash digest
SHA256 f55c07c6d3edcb9600391702857d257358a8caee064751f79f0df165a5ff0ae5
MD5 72889aad94921d2edc92f52401eddf30
BLAKE2b-256 75f3da51567e4754c2d5bac5057a946770313cec47bcf45f879c8faf9ee0efd8

See more details on using hashes here.

File details

Details for the file stepmix-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: stepmix-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 36.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for stepmix-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 16f207d017ff6c3c50dc42567f42ecefdfe118d4a5494d28a399f20998a0f83d
MD5 556155899945794b3bb6a019f4cb49ac
BLAKE2b-256 a30773b39ceb4e17f81b9c823b7073a035a031cfb87e6b4259b287b8c5b9cab9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page