Skip to content

Signal Example — ICA (Blind Source Separation)

Interactive demonstration of Independent Component Analysis (ICA) — 3 sources, rotation geometry, and scatter plots.

New to ICA? Start with the [beginner Mixing & Unmixing demo](signal_example_mixing.md) first — it covers the core idea with just 2 sources and one button.

What it shows

FeatureDescription
True Sources (Row 1)Three independent signals: S1 (oscillatory bursts, Gabor-shaped), S2 (blink artifacts), S3 (muscle burst)
EEG Recordings (Row 2)The mixed signals as they would appear at electrodes — each is a weighted combination of all sources
Recovered Components (Row 3)The unmixed signals, either via manual rotation sliders or the Auto-ICA (Infomax) algorithm
Scatter PlotsThree pairwise joint distributions (S1 vs S2, S1 vs S3, S2 vs S3) — see below
Excess KurtosisDisplayed for sources and recovered components

The Scatter Plots

The scatter plots are the most informative panel:

  • Independent, non-Gaussian signals → distinctive cross or T-shape (the signals are statistically independent)

  • Mixed signals → correlated blob (everything jumbled together)

  • Correctly unmixed → cross shape restored

Things to Try

  1. Set all mixing angles > 0° and watch the scatter plots collapse from crosses into blobs.

  2. Drag the unmixing sliders manually to match the mixing angles — the sources reappear.

  3. Reset unmixing angles to 0°, then click Infomax — ICA automatically recovers the sources.

  4. Increase the Noise slider — Infomax still works because the blink and muscle sources are highly non-Gaussian.

  5. Compare manual rotation with Infomax — Infomax finds a general unmixing matrix, not just a rotation.

  6. Try Extended Infomax, which handles both sub-Gaussian and super-Gaussian sources.

Controls

ControlRangeDescription
Mix α (S1-S2)0–90°Rotation angle blending S1 and S2 into the recordings
Mix β (S1-S3)0–90°Rotation angle blending S1 and S3 into the recordings
Mix γ (S2-S3)0–90°Rotation angle blending S2 and S3 into the recordings
Unmix φ (S1-S2)0–90°Inverse rotation to recover S1/S2 (manual mode)
Unmix ψ (S1-S3)0–90°Inverse rotation to recover S1/S3 (manual mode)
Unmix χ (S2-S3)0–90°Inverse rotation to recover S2/S3 (manual mode)
Burst Freq1–20 HzFrequency of the oscillatory source (S1)
Noise0–1Additive Gaussian noise on all sources
InfomaxRun standard Infomax ICA (Bell & Sejnowski, 1995)
ExtendedRun Extended Infomax (Lee et al., 1999)
Under the Hood — The Mathematics (click to expand)

The Mixing Model

With N sources and N sensors, mixing is an N×N matrix multiplication. For 3 sources, we compose three pairwise 2D rotations (α, β, γ):

Mixing: R₂₃(γ) · R₁₃(β) · R₁₂(α) · S Unmixing: R₁₂ᵀ(φ) · R₁₃ᵀ(ψ) · R₂₃ᵀ(χ) · M

When φ=α, ψ=β, χ=γ → perfect recovery.

Why Non-Gaussianity?

ICA exploits the Central Limit Theorem in reverse: mixtures of independent signals are more Gaussian than the original signals. So finding the unmixing that maximises non-Gaussianity (measured by kurtosis or negentropy) recovers the independent sources.

  • Excess kurtosis = 0: Gaussian distribution

  • Excess kurtosis > 0: Super-Gaussian (sharp peaks, heavy tails — like blink spikes)

  • Excess kurtosis < 0: Sub-Gaussian (flat-topped distributions)

The Infomax algorithm (Bell & Sejnowski, 1995) used in EegFun maximises the total non-Gaussianity of the output components.

See Also

  • Mixing & Unmixing — 2-source introduction to ICA

  • ICA Demo — Full ICA workflow on real EEG data

  • EEGLAB: Running ICA — Practical guide to ICA in EEGLAB

  • ICA for Dummies — Arnaud Delorme's accessible introduction to ICA

  • Bell, A. J., & Sejnowski, T. J. (1995). An information-maximization approach to blind separation. Neural Computation, 7(6), 1129–1159.

  • Hyvärinen, A., & Oja, E. (2000). Independent component analysis: algorithms and applications. Neural Networks, 13(4-5), 411–430.

Code

julia
using EegFun
EegFun.signal_example_ica()