RSA
Overview
This demo demonstrates Representational Similarity Analysis (RSA) for analyzing neural representational geometries.
What is RSA?
RSA quantifies how neural patterns represent different stimuli/conditions:
Compute dissimilarity: Calculate distance between conditions (e.g., correlation distance)
Create RDM: Representational Dissimilarity Matrix showing all pairwise distances
Compare geometries: Relate neural RDMs to behavior, models, or other brain regions
RSA Workflow
Extract patterns: Get spatial or spatiotemporal patterns for each condition
Compute RDM: Calculate dissimilarity between all condition pairs
Statistical testing: Assess significance of representational structure
Model comparison: Compare neural RDMs to theoretical predictions
Applications
Compare representational geometry across time
Test computational models of cognition
Relate neural to behavioral similarity
Cross-modality comparisons
Advantages
Multivariate (uses all channels)
Model-agnostic representational space
Can compare across different measurement modalities
Code Examples
Show Code
# Demo: Representational Similarity Analysis (RSA)
# Shows RSA analysis with multiple participants, dissimilarity measures,
# grand averaging with noise ceiling, RDM heatmaps, and timecourse visualization.
using EegFun
@info EegFun.section("Representational Similarity Analysis (RSA)")
println("Basic RSA analysis...")
# Create test data for multiple participants
all_participant_epochs = [
EegFun.create_test_epoch_data_vector(
conditions = 1:3,
n_epochs = 100,
n_channels = 3,
fs = 250,
n = 250, # 1 second of data at 250 Hz
) for _ = 1:5
]
# Perform RSA for each participant using batch method
all_rsa_results = EegFun.rsa(all_participant_epochs; dissimilarity_measure = :correlation, average_trials = true)
all_rsa_results =
EegFun.rsa(all_participant_epochs; dissimilarity_measure = :correlation, average_trials = true, normalize_method = :zscore)
# Compute grand average with noise ceiling
grand_avg_rsa = EegFun.grand_average(all_rsa_results)
# RSA Plots
EegFun.plot_rdm_heatmap(grand_avg_rsa, time_point = 0.0, title = "Grand Average RDM")
EegFun.plot_rdm_heatmap(grand_avg_rsa, title = "Grand Average RDM (time-averaged)")
EegFun.plot_rdm_timecourse(grand_avg_rsa, title = "Dissimilarity Over Time")