ERP Analysis with PhysioEEG
This vignette demonstrates a complete ERP analysis workflow using PhysioEEG.
Simulating an Oddball Experiment
library(PhysioEEG)
# Create oddball paradigm data: 40 epochs, target and standard conditions
pe <- make_eeg_erp(n_epochs = 40, n_channels = 19, sr = 250, epoch_sec = 1.0)
# Check conditions
conditions <- metadata(pe)$conditions
table(conditions)ERP Component Detection
# Detect N100 (early sensory processing)
n100 <- eegERPdetect(pe, component = "N100")
print(n100)
# Detect P300 (attention/decision making)
p300 <- eegERPdetect(pe, component = "P300")
print(p300)ERP Measurement Methods
# Peak amplitude measurement
peak <- eegERPmeasure(pe, window = c(250, 500), method = "peak",
polarity = "positive")
# Mean amplitude measurement (more robust to noise)
mean_amp <- eegERPmeasure(pe, window = c(250, 500), method = "mean",
polarity = "positive")
# Adaptive mean (window centered on peak)
adaptive <- eegERPmeasure(pe, window = c(250, 500), method = "adaptive_mean",
polarity = "positive")
print(data.frame(method = c("peak", "mean", "adaptive_mean"),
amplitude = c(peak$amplitude[1], mean_amp$amplitude[1],
adaptive$amplitude[1])))Fractional Area Latency
# 50% fractional area latency (more reliable than peak latency)
lat <- eegERPlatency(pe, window = c(250, 500), fraction = 0.5,
polarity = "positive")
print(lat)Difference Waves
# Separate target and standard epochs (requires indexing by condition)
# Compute difference waveform
pe_diff <- eegERPdifference(pe, pe) # Simplified exampleArtifact Removal with ICA Before ERP
# For real data, apply ICA before epoching:
# 1. Run ICA on continuous data
# 2. Remove artifact components
# 3. Epoch the cleaned data
# 4. Average and measure ERPs
pe_continuous <- make_eeg(n_time = 10000, n_channels = 19, sr = 250)
pe_ica <- eegICA(pe_continuous, method = "fastica")
artifacts <- eegICAdetect(pe_ica, method = "kurtosis")
pe_clean <- eegICAremove(pe_ica,
components = artifacts$component[artifacts$type == "artifact"])