Atlas
statminds
Unsupervised GLM (Eigen-Decomposition Model)The underlying model family class (e.g. GLM, linear model, categorical matrix, log-linear).Parametric ReferenceStatistical methods that assume a specific probability distribution family (typically normal).12-stage workflow

Principal Component Analysis (PCA)

The engine for Data Purification. PCA audits vast fields of correlated data, reveal the hidden 'Skeleton' of variance by mathematically collapsing dozens of markers into a few high-fidelity components.

Model familyUnsupervised GLM (Eigen-Decomposition Model)
Hypothesistwo-tailed
AliasesPCA · Eigen-Analysis · Multivariate Orthogonal Reduction
G1
Complexity Neutralization
Collapse redundant, overlapping variables into a lean set of orthogonal (independent) components.
G2
Variance Shielding
Capture the maximum amount of 'Information Signal' while discarding random measurement noise.
G3
Feature Architecture Discovery
Identify the underlying 'Archetypes' that drive global behavior in complex clinical or genomic grids.
Visual Overview Dashboard
1

What is it?

Principal Component Analysis (PCA) is designed to reduce the dimensionality of high-dimensional datasets while retaining the maximum possible variance in the data.

The engine for Data Purification. PCA audits vast fields of correlated data, reveal the hidden 'Skeleton' of variance by mathematically collapsing dozens of markers into a few high-fidelity components.

2

Goals & Indications

  • Complexity Neutralization: Collapse redundant, overlapping variables into a lean set of orthogonal (independent) components.
  • Variance Shielding: Capture the maximum amount of 'Information Signal' while discarding random measurement noise.
  • Feature Architecture Discovery: Identify the underlying 'Archetypes' that drive global behavior in complex clinical or genomic grids.
3

Core Idea Diagram

PC1PC2
4

Claims tested

H₀: H₀: Variables are uncorrelated (R = I, identity matrix); PCA would not reduce dimensionality effectively
Hₐ: Hₐ: Variables are sufficiently correlated to allow meaningful dimension reduction
5

How it works

  1. Standardize features to mean=0 and variance=1 to prevent scale bias.
  2. Construct the covariance or correlation matrix across all features.
  3. Solve for eigenvalues and eigenvectors to find principal components.
  4. Project the raw high-dimensional points onto the primary eigenvector axes.
6

Assumptions

Variables are continuous: All variables measured on continuous scales
Linear relationships among variables: Variables relate to each other linearly
Adequate correlations among variables: Variables are correlated enough for reduction
7

Important Note

PCA is primarily an exploratory descriptive technique, not hypothesis testing. Bartlett's test of sphericity tests H₀: correlation matrix = identity. KMO measures sampling adequacy (>0.6 acceptable).

8

Worked Example

ComponentEigenvalue% Var ExplainedCumulative %
PC11.7587.5%87.5%
PC20.2512.5%100.0%
Interactive Sandbox

Eigenvector & Variance Projection Laboratory

Slide the feature correlation. Observe how the data points collapse along the primary PC1 eigenvector axis as correlation increases, meaning PC1 explains more variance.

Feature Correlation (r)0.70
Rotation Angle (θ)30°
Data Spread (noise)0.40
Eigenvalue Scree Data
PC1 Variance (λ₁): 1.700
PC1 Explained: 85.0%
PC2 Variance (λ₂): 0.300
PC2 Explained: 15.0%
Reduction Power: High
Projected Eigenvectors & Ellipse Fit
PC1PC2
The 12-Stage Precision Workflow
01Structure Presence
Hypotheses
We test if the data is a unified 'Body' or just random noise—using Bartlett's test to audit the structure's existence.
02Linear Connectivity
Assumptions
The ultimate prerequisite: variables MUST be correlated. PCA fails if the data is already independent, as there is no redundancy to collapse.
03KMO Measure
Diagnostics
Utilizing the Kaiser-Meyer-Olkin (KMO) index to verify 'Sampling Adequacy'—ensuring your data is rich enough for component discovery.
04focus
Collapsing 50 different physiological FlowMotion markers into 3 primary components: Mobility, Resilience, and Stability.
05EFA Pivot
Alternatives
Knowing when to switch to Exploratory Factor Analysis (EFA) if you want to model 'Latent Traits' rather than just reducing 'Observed Variance'.
06The Scree Strike
Extraction
Executing the 'Scree Test' or Parallel Analysis to determine the 'Elbow' where adding more components stops yielding useful discovery.
07Variance Accounted For
Effect Size
Interpreting the 'Cumulative Proportion'—quantifying exactly how much of the original universe is captured by your reduced set.
08The 10:1 Buffer
Sample Size
Ensuring a minimum of 10 participants per original variable to stabilize the Eigen-Decomposition math.
09Component Loadings
Reporting
Reporting the 'Factor Matrix'—revealing exactly which original markers 'Anchor' each new component.
10prcomp / FactoMineR
Software
Executing 'prcomp(scale. = TRUE)'—ensuring the algorithm standardizes data to prevent large-unit variables from hijacking the components.
11focus
The fatal error of treating components as physical things—remember that PCA is a mathematical abstraction of variance, not a biological trait.
12focus
Tracing the model back to Karl Pearson (1901) and the foundational shift toward geometric multivariate forensics.
01Hypothesis test logic

Hypotheses

Pragmatic null and alternative hypotheses defined in mathematical notation.

A hypothesis is a question sharpened to a point. Ambiguity is the enemy of inference.
Logic Core
Null · H₀

H₀: Variables are uncorrelated (R = I, identity matrix); PCA would not reduce dimensionality effectively

Alternative · Hₐ

Hₐ: Variables are sufficiently correlated to allow meaningful dimension reduction

Why it matters two-tailed

PCA is primarily an exploratory descriptive technique, not hypothesis testing. Bartlett's test of sphericity tests H₀: correlation matrix = identity. KMO measures sampling adequacy (>0.6 acceptable).

02Model diagnostics

Assumptions

The core mathematical criteria needed to ensure that statistical testing remains unbiased and valid.

Build your analysis on rock, not sand. Verify the mathematical foundation before building the model.
Integrity Shield
6
Assumptions
3
Critical / High Severity
How to check
Quick
Inspect variable types; verify all variables are numeric and continuous. Check for ordinal or categorical variables that need special treatment. Create histograms to confirm continuous distributions
Rigorous
Verify measurement scales for each variable; check that distances between values are meaningful (interval/ratio). For Likert scales with many levels (7+), PCA may be acceptable but document this decision
If violated
If categorical variables: (1) Use Multiple Correspondence Analysis (MCA) for categorical data; (2) Use factor analysis of mixed data (FAMD) for mixed continuous/categorical; (3) Create dummy variables for categorical predictors (not ideal for PCA). If ordinal: consider categorical PCA or polychoric correlation-based PCA. If binary: use tetrachoric/polychoric correlation PCA or MCA
How to check
Quick
Create scatterplot matrix for subset of variables; look for linear patterns. Check correlation matrix - should see moderate-to-strong correlations (|r| > .3) among variable groups
Rigorous
Compute correlation matrix and examine structure. Use pairs plots with lowess curves to detect non-linearity. Test linearity assumption with component plus residual plots after PCA
If violated
If relationships are non-linear: (1) Transform variables (log, sqrt, Box-Cox) to linearize relationships; (2) Use kernel PCA for non-linear dimension reduction; (3) Use manifold learning methods (t-SNE, UMAP, Isomap) for complex non-linear structures; (4) Use autoencoders (neural network-based dimension reduction). Standard PCA with mild non-linearity may still provide useful data reduction
How to check
Quick
Kaiser-Meyer-Olkin (KMO) measure of sampling adequacy: >0.9 marvelous, 0.8-0.9 meritorious, 0.7-0.8 middling, 0.6-0.7 mediocre, <0.6 unacceptable. Bartlett's test of sphericity should be significant (p < .05)
Rigorous
Check correlation matrix: need multiple correlations |r| > .3. Calculate KMO per variable (MSA) - remove variables with MSA < 0.5. Bartlett's test: χ² should be large with p < .001 (rejects H₀: R = I). Check anti-image correlation matrix diagonal (should be > .5)
If violated
If KMO < 0.6 or Bartlett's p > .05: variables are too independent for PCA to be useful. Solutions: (1) Remove variables with low individual MSA (<0.5); (2) Keep original variables - PCA won't achieve meaningful reduction; (3) Consider why variables are uncorrelated - may indicate distinct constructs that shouldn't be combined; (4) Collect more variables that tap same underlying constructs
How to check
Quick
Create boxplots for each variable; check for extreme values (>3 SD from mean). Examine Mahalanobis distances for multivariate outliers. Scatterplot matrix to visually identify multivariate outliers
Rigorous
Calculate Mahalanobis distance for each observation; flag cases with D² > χ²(df=p, α=.001) as potential outliers. Check leverage values and influence diagnostics. Use robust PCA to compare with standard PCA - large differences indicate outlier influence
If violated
If outliers detected: (1) Investigate data entry errors and correct if found; (2) Use robust PCA (using MCD estimator or L1-norm) less sensitive to outliers; (3) Winsorize extreme values at 1st/99th percentiles; (4) Run PCA with and without outliers as sensitivity analysis; (5) Transform skewed variables (log, sqrt) to reduce outlier impact. Never remove outliers without justification and transparency
How to check
Quick
Rules of thumb: (1) N ≥ 150 minimum; (2) N ≥ 5-10 times number of variables (e.g., 20 variables → need 100-200 subjects); (3) N/p ratio ≥ 5 minimum, ≥10 preferred. Check if sample size allows stable correlation estimates
Rigorous
Calculate communalities (proportion of variance explained per variable) - if most h² > .6, smaller samples acceptable. Use bootstrap or cross-validation to assess solution stability. Compare solutions from random halves of data - should be similar
If violated
If N < 5p or N < 100: (1) Collect more data if possible; (2) Reduce number of variables (use domain knowledge to select most important); (3) Use regularized PCA (sparse PCA, ridge PCA) to stabilize estimates; (4) Use cross-validation to assess stability; (5) Report results as exploratory only, requiring replication. Small samples yield unstable loadings and overfit components
How to check
Quick
Check variable standard deviations - if they differ by more than 10-fold, standardization is needed. If variables are on same scale and units (e.g., all test scores 0-100), standardization may not be necessary. Compare PCA on covariance vs correlation matrix
Rigorous
Examine variance of each variable. If variables are on different scales (e.g., age in years vs income in dollars), use correlation matrix (standardized PCA). If variables are same scale and variance differences are meaningful (e.g., symptom severity measures where high variance = important dimension), covariance matrix may be preferred
If violated
Decision: correlation vs covariance matrix. Use CORRELATION MATRIX (standardizes variables) when: (1) Variables on different scales/units; (2) Variance differences are arbitrary artifacts of measurement. Use COVARIANCE MATRIX when: (1) Variables on same meaningful scale; (2) Variance differences represent real importance; (3) Preserving original units matters. Default recommendation: use correlation matrix unless specific reason to preserve variance differences
03Residual Forensics

Diagnostics

Checking residual plots and indices to examine model deviations and ensure standard error integrity.

Trust, but verify. The outliers often hold more truth than the averages.
System Health
Essential checks
  1. Kaiser-Meyer-Olkin (KMO) Measure of Sampling Adequacy (> 0.6)
  2. Bartlett's Test of Sphericity (p < 0.05)
  3. Scree plot and Eigenvalues (> 1 criterion) for component retention
Recommended checks
  1. Parallel analysis for determining number of components
  2. Total variance explained by retained components (>60% recommended)
  3. Component loadings matrix with clear interpretation
  4. Communalities (h²) for each variable (>0.3 acceptable)
  5. Component correlation matrix if oblique rotation used
04Live Instances

Applied Minds

Review concrete study examples, data layout guidelines, and copy executable syntax scripts.

Theory is the map. Practice is the terrain. Simulation bridges the gap.
Applied Wisdom
Example 01

Mental Health Symptom Dimensions from Multi-Scale Assessment

Research question: Can we reduce 15 mental health symptom measures (anxiety, depression, stress subscales) to fewer underlying dimensions? Design: Cross-sectional survey (N=320 adults, community sample). Variables: 15 symptom subscales from PHQ-9, GAD-7, PSS-10 measuring depression, anxiety, and stress. Goal: Identify latent symptom dimensions for use in predictive models.

DesignCross-sectional PCA for data reduction
# Principal Components Analysis (PCA): Mental Health Symptom Reduction
# Reducing 15 symptom measures to fewer dimensions

library(psych)        # For PCA, KMO, parallel analysis
library(corrplot)     # Correlation matrix visualization
library(FactoMineR)   # Comprehensive PCA
library(factoextra)   # PCA visualization
library(dplyr)

# Simulate realistic mental health symptom data
set.seed(2025)
n <- 320

# Generate 3 underlying factors
factor1_internalizing <- rnorm(n)  # Depression-anxiety
factor2_stress <- rnorm(n)          # Stress-tension  
factor3_fear <- rnorm(n)            # Fear-panic

# Create 15 observed variables as linear combinations + noise
data <- data.frame(
  # Depression symptoms (load on factor 1)
  dep_mood = 0.85*factor1_internalizing + rnorm(n, 0, 0.3),
  dep_anhedonia = 0.80*factor1_internalizing + rnorm(n, 0, 0.35),
  dep_fatigue = 0.75*factor1_internalizing + 0.3*factor2_stress + rnorm(n, 0, 0.3),
  dep_worthless = 0.82*factor1_internalizing + rnorm(n, 0, 0.32),
  dep_concentration = 0.70*factor1_internalizing + 0.25*factor2_stress + rnorm(n, 0, 0.35),
  
  # Anxiety symptoms (load on factors 1 and 3)
  anx_worry = 0.78*factor1_internalizing + 0.25*factor3_fear + rnorm(n, 0, 0.3),
  anx_restless = 0.72*factor1_internalizing + 0.30*factor2_stress + rnorm(n, 0, 0.35),
  anx_tense = 0.68*factor1_internalizing + 0.35*factor2_stress + rnorm(n, 0, 0.32),
  anx_panic = 0.40*factor1_internalizing + 0.75*factor3_fear + rnorm(n, 0, 0.3),
  anx_fear = 0.35*factor1_internalizing + 0.80*factor3_fear + rnorm(n, 0, 0.28),
  
  # Stress symptoms (load on factor 2)
  stress_overwhelm = 0.30*factor1_internalizing + 0.82*factor2_stress + rnorm(n, 0, 0.3),
  stress_control = 0.25*factor1_internalizing + 0.78*factor2_stress + rnorm(n, 0, 0.32),
  stress_irritable = 0.40*factor1_internalizing + 0.70*factor2_stress + rnorm(n, 0, 0.35),
  stress_pressure = 0.20*factor1_internalizing + 0.80*factor2_stress + rnorm(n, 0, 0.30),
  stress_coping = 0.28*factor1_internalizing + 0.75*factor2_stress + rnorm(n, 0, 0.33)
)

# Standardize to 0-100 scale (simulating normalized scores)
data <- as.data.frame(scale(data) * 15 + 50)
data[data < 0] <- 0
data[data > 100] <- 100

# === STEP 1: Check Assumptions ===

cat("=== Data Summary ===\n")
cat("Sample size:", nrow(data), "\n")
cat("Number of variables:", ncol(data), "\n")
cat("N/p ratio:", round(nrow(data)/ncol(data), 1), "\n\n")

# Check for missing data
cat("Missing data:", sum(is.na(data)), "values\n\n")

# Descriptive statistics
summary(data)

# 1. Check correlations (need adequate correlations)
cor_matrix <- cor(data)
cat("=== Correlation Matrix Summary ===\n")
cat("Range of correlations:", round(min(cor_matrix[cor_matrix!=1]), 2), 
    "to", round(max(cor_matrix[cor_matrix!=1]), 2), "\n\n")

# Visualize correlation matrix
corrplot(cor_matrix, method="color", type="upper", 
         tl.cex=0.7, tl.col="black",
         title="Correlation Matrix: Mental Health Symptoms",
         mar=c(0,0,2,0))

# 2. KMO - Sampling Adequacy
kmo_result <- KMO(data)
cat("=== Kaiser-Meyer-Olkin(KMO) ===\n")
cat("Overall MSA:", round(kmo_result$MSA, 3), "\n")
if (kmo_result$MSA > 0.9) {
  cat("Interpretation: Marvelous - excellent for PCA\n\n")
} else if (kmo_result$MSA > 0.8) {
  cat("Interpretation: Meritorious - very good for PCA\n\n")
} else if (kmo_result$MSA > 0.7) {
  cat("Interpretation: Middling - acceptable for PCA\n\n")
} else if (kmo_result$MSA > 0.6) {
  cat("Interpretation: Mediocre - acceptable but not ideal\n\n")
} else {
  cat("Interpretation: Unacceptable - PCA not recommended\n\n")
}

cat("Individual MSA per variable:\n")
print(round(kmo_result$MSAi, 2))

# 3. Bartlett's Test of Sphericity
bartlett_result <- cortest.bartlett(cor_matrix, n=nrow(data))
cat("\n=== Bartlett's Test of Sphericity ===\n")
cat("Chi-square:", round(bartlett_result$chisq, 2), "\n")
cat("df:", bartlett_result$df, "\n")
cat("p-value:", format(bartlett_result$p.value, scientific=TRUE), "\n")
if (bartlett_result$p.value < 0.05) {
  cat("Interpretation: Significant(p < .05) - correlations adequate for PCA\n\n")
} else {
  cat("Interpretation: Non-significant - variables may be too independent\n\n")
}

# 4. Check for outliers (Mahalanobis distance)
maha_dist <- mahalanobis(data, colMeans(data), cov(data))
outlier_cutoff <- qchisq(0.999, df=ncol(data))
outliers <- which(maha_dist > outlier_cutoff)
cat("Multivariate outliers(p < .001):", length(outliers), "cases\n\n")

# === STEP 2: Determine Number of Components ===

# Method 1: Scree plot
pca_initial <- prcomp(data, center=TRUE, scale.=TRUE)
screeplot(pca_initial, type="lines", 
          main="Scree Plot: Eigenvalues by Component",
          xlab="Component Number", 
          ylab="Eigenvalue(Variance)")
abline(h=1, col="red", lty=2)  # Kaiser criterion line

# Extract eigenvalues
eigenvalues <- pca_initial$sdev^2
cat("=== Eigenvalues(Kaiser Criterion: λ > 1) ===\n")
print(round(eigenvalues, 2))
cat("\nComponents with eigenvalue > 1:", sum(eigenvalues > 1), "\n\n")

# Method 2: Variance explained
var_explained <- eigenvalues / sum(eigenvalues) * 100
cum_var <- cumsum(var_explained)

cat("=== Variance Explained ===\n")
var_table <- data.frame(
  Component = 1:length(eigenvalues),
  Eigenvalue = round(eigenvalues, 2),
  Variance_Pct = round(var_explained, 1),
  Cumulative_Pct = round(cum_var, 1)
)
print(var_table[1:6,])  # First 6 components

# Method 3: Parallel Analysis (BEST METHOD)
parallel <- fa.parallel(data, fa="pc", n.iter=1000, 
                       main="Parallel Analysis: Actual vs Simulated Data")
cat("\n=== Parallel Analysis ===\n")
cat("Suggested number of components:", parallel$ncomp, "\n\n")

# Decision: Retain 3 components based on parallel analysis
n_components <- 3
cat("DECISION: Retaining", n_components, "components\n")
cat("Total variance explained:", round(cum_var[n_components], 1), "%\n\n")

# === STEP 3: Run PCA with Optimal Number of Components ===

pca_result <- principal(data, nfactors=n_components, 
                       rotate="varimax",  # Orthogonal rotation
                       scores=TRUE)

cat("=== PCA Results ===\n")
print(pca_result)

# Component loadings
cat("\n=== Component Loadings(Varimax Rotation) ===\n")
loadings_matrix <- as.data.frame(unclass(pca_result$loadings))
print(round(loadings_matrix, 2))

# Communalities (variance explained per variable)
cat("\n=== Communalities(h²) ===\n")
cat("Proportion of variance in each variable explained by components\n")
print(round(pca_result$communality, 2))
cat("\nVariables with low communality(<0.3):", 
    sum(pca_result$communality < 0.3), "\n\n")

# === STEP 4: Interpret Components ===

cat("=== Component Interpretation ===\n\n")
cat("PC1(Internalizing): Loads high on depression and general anxiety\n")
cat("PC2(Stress): Loads high on stress and tension symptoms\n")
cat("PC3(Fear): Loads high on panic and fear symptoms\n\n")

# === STEP 5: Visualizations ===

# Biplot (variables and observations)
biplot(pca_initial, scale=0, cex=0.6,
       main="PCA Biplot: Variables and Observations")

# Component loadings plot
library(factoextra)
fviz_pca_var(pca_initial, col.var="contrib",
             gradient.cols=c("#00AFBB", "#E7B800", "#FC4E07"),
             repel=TRUE,
             title="PCA Variable Plot: Contributions to PC1-PC2")

# Individual plot (colored by contribution)
fviz_pca_ind(pca_initial, col.ind="cos2",
             gradient.cols=c("#00AFBB", "#E7B800", "#FC4E07"),
             repel=FALSE,
             title="PCA Individual Plot")

# === STEP 6: Save Component Scores ===

component_scores <- as.data.frame(pca_result$scores)
colnames(component_scores) <- c("Internalizing", "Stress", "Fear")

cat("=== Component Scores(First 6 subjects) ===\n")
print(head(component_scores))

# These scores can be used in subsequent analyses
data_with_components <- cbind(data, component_scores)

cat("\n=== Summary ===\n")
cat("Successfully reduced 15 variables to 3 principal components\n")
cat("explaining", round(cum_var[n_components], 1), "% of total variance.\n")
cat("Components represent: Internalizing, Stress, and Fear dimensions.\n")
cat("Component scores saved for use in predictive models.\n")
Interpretation Blueprint

KMO = 0.87 (meritorious), Bartlett's χ²(105) = 2847.3, p < .001. Three components retained via parallel analysis, explaining 68.4% of total variance. PC1 (Internalizing, 38.2%) loads on depression and general anxiety. PC2 (Stress, 18.7%) loads on stress-tension symptoms. PC3 (Fear, 11.5%) loads on panic-fear symptoms. All communalities >0.50. Successfully reduced 15 variables to 3 interpretable dimensions suitable for predictive modeling.

05Tactical Pivots

Alternatives

Structured fallback pathways for choosing alternative tests when normality or slopes requirements fail.

When the path is blocked, pivot. Rigor is not rigidity; it is the intelligent adaptation to reality.
Adaptive Strategy
Measurement Precision Ladder Ideal · Correlated Continuous Matrix
Ratio
Maintain PCA logic. Collapse high-fidelity markers into independent, high-signal components.
Peak Signal
Interval
Ideal for Feature Discovery. Ensure all variables are standardized to prevent units from hijacking the variance.
Standard Precision
Ordinal / Nominal
Pivot to Polychoric PCA or Multiple Correspondence Analysis (MCA) to preserve the discrete nature of the data.
Variance Distortion
Nominal Only
Abandon PCA. Use Categorical PCA (CATPCA) to model associations between unordered groups.
Identity Loss
Temporal Trajectory Audit Static Variance Snapshot
Static Matrix
Single point audit.
Stay with PCA. Find the 'Skeleton' of information in your cross-sectional grid.
Longitudinal
Trajectory clustering.
Pivot to Dynamic PCA or Multi-Level EFA to account for variance shifts over time.
Adaptive Technical Safeguards · adaptive safeguards
non linear skeletons
  • Kernel PCA — Map the data into high-D space to capture curved feature architectures.
  • Multidimensional Scaling (MDS) — Prioritize 'Distances' rather than 'Variance' if the grid is non-linear.
low item correlations
  • Canonical Correlation — Focus on the relationship between two specific sets of variables rather than global reduction.
  • Item Elimination Audit — Prune markers with low commonality to strengthen the signal.
unstable loadings
  • Bootstrap PCA Strike — Resample the matrix 1,000 times to verify the stability of your component identities.
06Adjusted Comparisons

Post-hoc

Group mean comparisons and correction controls (e.g. Tukey HSD, Bonferroni) to protect against Family-Wise Error Rates.

The omnibus test opens the door; post-hoc analysis explores the room.
Forensic Detail
Adjusted Comparisons
  • Compare different rotation methods (varimax, oblimin, promax)
  • Assess stability using bootstrap or cross-validation
  • Compare Kaiser criterion vs scree plot vs parallel analysis for component retention
  • Examine factor congruence across subsamples
  • Test alternative extraction methods (principal axis, maximum likelihood)
Interpretation Guidelines

PCA is an exploratory technique for dimension reduction, not hypothesis testing. Traditional post-hoc tests are not applicable.

07Standardized scale impact

Effect Size

Understanding effect sizes (e.g., Cohen's d, Partial Eta-Squared) and clinical impact benchmarks.

Significance is noise. Magnitude is the signal. Measure the impact, not just the probability.
Impact Magnitude

60-70% explained considered good for social sciences; 80%+ excellent for physical sciences. Higher indicates components capture most information

Kaiser criterion: retain components with λ > 1.0. Each component should explain more variance than single original variable

Magnitude of variable-component relationship. |loading| > .70 excellent, .60-.70 good, .50-.60 fair, .40-.50 marginal, <.40 poor. Loadings² = variance explained

Recommended Metric: Total Variance Explained (%)
Small
0.2
Medium
0.5
Large
0.8
0.50
Total Variance Explained (%)
Recommended Measure
3
Available Metrics
ReportUse Total Variance Explained (%) to represent clinical impact magnitude.
08Statistical Power

Sample Size

Guidelines for minimum sample requirements and power analysis parameters.

An underpowered study is an ethical failure. Respect the data by collecting enough of it.
Power Protocol
Floor Requirements

The '5:1 Ratio' Minimum: A minimum of 5 participants per original variable is the absolute floor. Data reduction collapse mathematically if the N-to-Feature ratio is too shallow to stabilize the correlation matrix.

Effect SizeParametersRequired n
Small EffectLow Commonality (0.4)n ≈ 300
Medium EffectWide Commonality (0.6)n ≈ 150
Large EffectHigh Commonality (0.8)n ≈ 60
Key considerations

The 'Sample Density' Strike: While 5:1 is the minimum, 10:1 or 20:1 is elite. If your N is under 100, components are likely artifacts of sampling error ('Phantom Components'). Use Parallel Analysis to audit component validity.

G*Power StrategyBenchmark: Eigen-decomposition stability. Parameters: Number of variables (p), Number of components (k), Expected Commonalities, α = .05, Power = .80. Note: PCA power is defined as the 'Stability of Component Loadings'.
09APA narrative blueprint

Reporting

How to compile statistical results into publication prose matching APA and journal style guides.

Data does not speak for itself. It requires a translator. Be clear, be precise, be honest.
Narrative Arc
Worked APA paragraph example
Principal components analysis was conducted on 320 participants across 15 mental health symptom measures. Kaiser-Meyer-Olkin measure verified sampling adequacy (KMO = .87, meritorious), and Bartlett's test of sphericity indicated correlations were adequate (χ²(105) = 2847.3, p < .001). Parallel analysis suggested retaining three components, which explained 68.4% of total variance. Varimax rotation was applied. Component 1 (38.2% variance) loaded on depression and anxiety items (loadings .70-.85), representing Internalizing symptoms. Component 2 (18.7% variance) loaded on stress items (.75-.82), representing Stress. Component 3 (11.5% variance) loaded on panic and fear items (.74-.80), representing Fear. All communalities exceeded .50, indicating adequate explanation of item variance.
Reusable template

Principal components analysis was conducted on N observations across p variables measuring construct. Sampling adequacy was assessed using Kaiser-Meyer-Olkin measure (KMO = X.XX, interpretation) and Bartlett's test of sphericity (χ²(df) = X.XX, p < .001), indicating correlations were adequate for PCA. Method for determining components, e.g., parallel analysis/scree plot/Kaiser criterion suggested retaining k components, which collectively explained X.X% of total variance. If rotation used: Varimax/oblimin rotation was applied to aid interpretation. Component 1 (X.X% variance) loaded strongly on variables, representing dimension name/interpretation. Component 2 (X.X% variance) loaded on variables, representing dimension. Continue for each component. Component loadings ranged from X.XX to X.XX, with all retained variables showing communalities > X.XX. Component scores were computed and used in subsequent analyses.

Essential statistics to report
  • KMO overall and per-variable MSA
  • Bartlett's test chi-square, df, p-value
  • Number of components retained and justification method
  • Total variance explained (% and cumulative %)
  • Eigenvalues for retained components
  • Component loadings matrix (with rotation method if used)
  • Communalities (h²) per variable
  • Component interpretation/naming based on high-loading variables
10Exhibit Builder

Manuscript Lab

Copy standard summary tables and forensic reporting grids to outline analysis details.

Table 1: PCA Component Loading Matrix for Behavioral Markers
ItemComponent 1 (Focus)Component 2 (Speed)h² (Communality)
Attention Span0.850.12.74
Error Rate-0.780.25.67
Reaction Time0.080.82.68
Processing Speed0.150.75.58
Note. Varimax rotation applied. Only loadings > .40 shown. N = 300.
Cumulative 70.9%Powerful Compression. By reducing 10 items down to just 2 components, we've maintained over 70% of the original information.
Header glossary

The 'Pull' Strength. Measures how strongly each item correlates with the hidden component. Higher magnitude = more representative.

Item Reliability. The percentage of the item's variance that is captured by the extracted components.

Component Volume. Represents the total amount of variance (information) captured by that specific component.

11Algorithmic Logic

Command Center

Syntax libraries and function parameters for executing calculations in stats packages.

Code is the modern laboratory. Clean execution ensures reproducible discovery.
Execution Engine
# 1. Execute PCA with Varimax Rotation
pca_res <- psych::principal(df_items, nfactors = 2, rotate = 'varimax')
print(pca_res)

# 2. Visualize Eigenvalues (Scree Plot)
factoextra::fviz_screeplot(pca_res)

# 3. Plot Component Loadings
factoextra::fviz_pca_var(pca_res)
Library stack
R
psychGPArotationfactoextra
Python
sklearn.decomposition
Elite Forensic Strike

PCA is not just about reduction; it's about 'Noise Filtering'. Use the Kaiser-Guttman rule (Eigenvalues > 1) or Parallel Analysis to ensure you aren't extracting components from random noise.

# Execute Parallel Analysis Audit (Gold Standard for component selection)
psych::fa.parallel(df_items, n.iter = 100)
12The Over-adjustment Trap

Common Mistakes

Analytical caveats and corrections to maintain modeling integrity.

Wisdom is learning from the failures of others. Anticipate the error before it occurs.
Defensive Logic
Why it's wrong
PCA requires adequate correlations among variables to achieve dimension reduction. If variables are uncorrelated (r ≈ 0), PCA simply returns the original variables as components - no reduction achieved. KMO < 0.5 and Bartlett's p > .05 indicate variables are too independent for meaningful PCA. Proceeding wastes time and produces uninterpretable components.
The correction
Always check KMO (>0.6 required, >0.8 preferred) and Bartlett's test (p < .05) before PCA. If assumptions violated: (1) Remove variables with low individual MSA (<0.5); (2) Consider why variables are uncorrelated - may represent distinct constructs that shouldn't be combined; (3) If KMO remains <0.6 after removal, abandon PCA and use original variables; (4) Consider collecting additional variables that measure same constructs to increase correlations.
Why it's wrong
Kaiser criterion (λ > 1) often overestimates optimal number of components, especially with many variables. This leads to retaining trivial components that don't meaningfully reduce dimensionality or provide interpretable dimensions. For example, with 30 variables, Kaiser might suggest 8-10 components, defeating purpose of dimension reduction. Scree plot and parallel analysis are more accurate.
The correction
Use multiple criteria: (1) BEST: Parallel analysis (compares eigenvalues to random data); (2) Scree plot (look for 'elbow' where slope levels off); (3) Cumulative variance (60-70% threshold); (4) Interpretability (can you name/interpret each component?). If methods disagree, prioritize parallel analysis > scree plot > Kaiser criterion. Aim for parsimony - fewest components that capture most variance and have clear interpretation.
Why it's wrong
Unrotated component loadings are difficult to interpret because variables often load moderately on multiple components. Rotation (varimax, promax) simplifies structure so each variable loads highly on one component, but changes loading magnitudes. Also, component direction is arbitrary - negative loadings don't mean 'bad', just opposite direction. Misinterpreting signs or ignoring rotation leads to confused component interpretation.
The correction
Always use rotation for interpretation: (1) Varimax (orthogonal) if components should be uncorrelated; (2) Promax/oblimin (oblique) if components may correlate. After rotation, interpret loadings: |loading| > .7 excellent, .6-.7 good, .5-.6 fair, .4-.5 marginal, <.4 poor. Look for 'simple structure' (each variable loads high on one component, low on others). Component direction is arbitrary - focus on which variables load together, not sign. Name components based on highest-loading variables' shared meaning.
Why it's wrong
PCA with small samples produces unstable solutions: loadings fluctuate substantially with different samples, components may not replicate, and results may be idiosyncratic to your specific sample. Correlation estimates are unreliable with small N, leading to spurious components. For example, N=80 with 20 variables (N:p = 4:1) yields unstable loadings that likely won't replicate.
The correction
Ensure adequate sample size: N ≥ 150 minimum, N:p ratio ≥ 5:1 (preferably ≥10:1). If sample is small: (1) Reduce number of variables using domain knowledge; (2) Use regularized PCA (sparse PCA, ridge PCA) to stabilize estimates; (3) Bootstrap the solution to assess stability (if loadings vary widely, solution is unstable); (4) Cross-validate by splitting sample and comparing solutions; (5) Report results as exploratory only, requiring replication with larger sample. Never claim definitive factor structure with N < 100.
Why it's wrong
PCA on covariance matrix (unstandardized) is dominated by variables with largest variances - e.g., income ($10,000s) will dominate age (years). Components may reflect scale differences, not meaningful structure. Conversely, standardizing when variance differences are meaningful (e.g., high-variance symptom = clinically important dimension) erases this information and treats all variables as equally important.
The correction
Decision tree: (1) Variables on DIFFERENT scales/units (e.g., age in years, income in dollars, test scores 0-100) → standardize (use correlation matrix): prcomp(data, scale.=TRUE) or StandardScaler() in Python; (2) Variables on SAME meaningful scale and variance differences matter (e.g., symptom severities where high variance = important) → don't standardize (use covariance matrix): scale.=FALSE; (3) Default recommendation: standardize unless specific reason not to. Always report which matrix (correlation vs covariance) was used.
Why it's wrong
PCA maximizes variance explained, not predictive accuracy. Components that explain most variance may be unrelated to outcome of interest. For example, in gene expression data predicting cancer, PCA components capture batch effects or tissue differences (high variance) rather than cancer-related genes (lower variance but predictive). Using PCA components as predictors may remove signal while keeping noise.
The correction
If goal is prediction: (1) Use supervised dimension reduction: Partial Least Squares (PLS) maximizes covariance with outcome; (2) Use variable selection methods (LASSO, elastic net) to identify predictive variables; (3) Use feature importance from random forests or gradient boosting; (4) If using PCA, test whether components predict outcome - don't assume they will. Use PCA only when goal is data reduction/visualization, not when outcome prediction is primary aim. For classification, consider Linear Discriminant Analysis (LDA) instead of PCA.
13Academic Lineage

References

Scholarly lineage and citation keys grounding the statistical framework.

We stand on the shoulders of giants. Honor the source of the method.
Academic Lineage
[1]
In a world of big data, simplicity is the ultimate sophistication. Use PCA to strip away the vanity of numbers and find the elegant skeleton of the truth.
The Interpretive Rigor Directive
statminds · PrincipalMind reference · v2.2 · updated 2026-01-1715 of 15 sections