The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

FAPA: Factor Analytic Profile Analysis of Ipsatized Data

R-CMD-check

FAPA implements a metric inferential framework for pattern detection and person-level reconstruction in multivariate profile data. After removing overall profile elevation via row-centering (ipsatization), FAPA applies singular value decomposition (SVD) to recover shared core profiles and individual pattern weights, and provides a unified three-stage bootstrap verification framework.


Motivation

Many existing approaches to profile analysis — including PCA applied to ipsatized data — lack an integrated, workflow-level treatment of dimensionality selection, subspace stability, and profile replicability. FAPA addresses this by combining well-validated tools (Horn’s parallel analysis, Procrustes principal angles, Tucker’s congruence coefficients, BCa bootstrap CIs via the boot package) into a coherent, reproducible pipeline designed specifically around the ipsatized structure of the data.


Three-stage verification framework

Stage Method Criterion
1 Horn’s parallel analysis (variance-matched) Retain components where σ²_k exceeds the (1−α) quantile of a variance-matched null
2 Procrustes / principal angles All K principal angles < 30° across bootstrap resamples
3 Tucker’s congruence coefficients Mean CC ≥ 0.85 (fair) or ≥ 0.95 (high) per Lorenzo-Seva & ten Berge (2006)

Installation

# Install from GitHub (development version):
# install.packages("remotes")
remotes::install_github("sekangakim/FAPA")

Quick start

library(FAPA)

# 1. Load and ipsatize
dat    <- load_and_ipsatize("Calibration.csv", col_labels = paste0("V", 1:22))
Xtilde <- dat$ipsatized

# 2. Stage 1: parallel analysis
pa  <- fapa_pa(Xtilde, B = 2000, seed = 1)
print_pa(pa)
K   <- pa$n_retain

# 3. Core solution
fit <- fapa_core(Xtilde, K = K)

# 4. Stages 2 & 3: stability and replicability
pr  <- fapa_procrustes(Xtilde, K = K + 3, B = 2000, seed = 1)
tc  <- fapa_tucker(Xtilde,     K = K + 3, B = 2000, seed = 1)
print_procrustes(pr, K_pa = K)
print_tucker(tc, cc_thresh = 0.85, K_pa = K)

# 5. BCa confidence intervals
bca <- fapa_bca(Xtilde, K = K, B = 2000, seed = 1)
plot_fapa_core(bca, i = 1, split_at = 11)

# 6. Person-level reconstruction
prs <- fapa_person(Xtilde, fit, participants = 1:5, seed = 1)
cat(sprintf("Mean R² = %.4f\n", prs$R2_mean))

See vignette("fapa_example", package = "FAPA") for a fully documented walkthrough using EDI-2 eating-disorder symptom data.


Key functions

Function Description
load_and_ipsatize() Load CSV and row-centre
fapa_core() SVD-based core profile estimation
fapa_pa() Stage 1: variance-matched parallel analysis
fapa_procrustes() Stage 2: subspace stability via principal angles
fapa_tucker() Stage 3: Tucker’s congruence coefficients
fapa_bca() BCa bootstrap CIs for core profiles
fapa_person() Person-level reconstruction and weights
print_pa/procrustes/tucker() Formatted console summaries
plot_fapa_core() Core profile with BCa CI bands
plot_pa_scree() PA scree plot
plot_principal_angles() Stage 2 angle distributions
plot_tucker_cc() Stage 3 CC distributions
write_fapa_results() Write core-profile CSVs
write_verification() Write three-stage verification CSVs

Citation

If you use FAPA in your research, please cite the accompanying manuscript:

Kim, S.-K. (in preparation). Factor Analytic Profile Analysis of Ipsatized Data (FAPA): An inferential framework for pattern detection and person reconstruction.

and the software:

Kim, S.-K. (2026). FAPA: Factor Analytic Profile Analysis of Ipsatized Data. R package version 0.1.0. https://github.com/sekangakim/FAPA


References


License

MIT © Se-Kang Kim

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.