Learn R Programming

LCPA (version 1.0.0)

get.npar.LPA: Calculate Number of Free Parameters in Latent Profile Analysis

Description

Computes the total number of free parameters in an LPA model based on the number of observed variables (\(I\)), number of latent profiles (\(L\)), and covariance structure constraints.

Usage

get.npar.LPA(I, L, constraint = "VV")

Value

Integer representing the total number of free parameters in the model: $$\text{npar} = \underbrace{L \times I}_{\text{means}} + \underbrace{(L-1)}_{\text{class proportions}} + \underbrace{\text{covariance parameters}}_{\text{depends on constraint}}$$

Arguments

I

Integer specifying the number of continuous observed variables.

L

Integer specifying the number of latent profiles.

constraint

Character string specifying covariance structure constraints. Supported options:

Univariate case (\(I = 1\)):
"UE"

Equal variance across all profiles (1 shared variance parameter).

"UV"

Varying variances across profiles (\(L\) profile-specific variance parameters).

Multivariate case (\(I > 1\)):
"E0"

Equal variances across profiles, zero covariances. Requires \(I\) variance parameters.

"V0"

Varying variances across profiles, zero covariances. Requires \(L \times I\) variance parameters.

"EE"

Equal variances and equal covariances across profiles (homogeneous covariance matrix). Requires \(\frac{I(I+1)}{2}\) parameters.

"VE"

Varying variances per profile, but equal covariances across profiles. Requires \(L \times I + \frac{I(I-1)}{2}\) parameters.

"EV"

Equal variances across profiles, but varying covariances per profile. Requires \(I + L \times \frac{I(I-1)}{2}\) parameters.

"VV"

Varying variances and varying covariances across profiles (heterogeneous covariance matrices). Requires \(L \times \frac{I(I+1)}{2}\) parameters.

list

Custom constraints. Each element is a 2-element integer vector specifying variables whose covariance parameters are constrained equal across all classes. The constraint applies to:

  • Variances: When both indices are identical (e.g., c(3,3) forces variance of variable 3 to be equal across classes)

  • Covariances: When indices differ (e.g., c(1,2) forces covariance between variables 1 and 2 to be equal across classes)

Constraints are symmetric (e.g., c(1,2) automatically constrains c(2,1)). All unconstrained parameters vary freely across classes while maintaining positive definiteness.

Default: "VV".

Details

Parameter count breakdown:

  1. Fixed components (always present):

    • Profile-specific means: \(L \times I\) parameters

    • Independent class proportions: \(L-1\) parameters (since \(\sum_{l=1}^L \pi_l = 1\))

  2. Covariance parameters (varies by constraint):

    \(I = 1\):
    • "UE": 1 shared variance parameter

    • "UV": \(L\) profile-specific variance parameters

    \(I > 1\):
    • "E0": \(I\) shared variance parameters (no covariances)

    • "V0": \(L \times I\) profile-specific variance parameters (no covariances)

    • "EE": \(\frac{I(I+1)}{2}\) parameters for one shared full covariance matrix

    • "VE": \(L \times I\) diagonal variances (free per profile) + \(\frac{I(I-1)}{2}\) off-diagonal covariances (shared across profiles)

    • "EV": \(I\) diagonal variances (shared across profiles) + \(L \times \frac{I(I-1)}{2}\) off-diagonal covariances (free per profile)

    • "VV": \(L \times \frac{I(I+1)}{2}\) parameters for \(L\) distinct full covariance matrices

Examples

Run this code
# Univariate examples (I=1)
get.npar.LPA(I = 1, L = 2, constraint = "UE")
get.npar.LPA(I = 1, L = 3, constraint = "UV")

# Multivariate examples (I=3)
get.npar.LPA(I = 3, L = 2, constraint = "E0")
get.npar.LPA(I = 3, L = 2, constraint = "V0")
get.npar.LPA(I = 3, L = 2, constraint = "EE")
get.npar.LPA(I = 3, L = 2, constraint = "VV")
get.npar.LPA(I = 3, L = 2, constraint = "VE")
get.npar.LPA(I = 3, L = 2, constraint = "EV")

# User defined example
get.npar.LPA(I = 3, L = 2, constraint = list(c(1, 2), c(3, 3)))

Run the code above in your browser using DataLab