Skip to content

Worked example: trajectory → scalar outcome

Use FPCA scores when the goal is a transparent low-dimensional approximation to scalar-on-function regression.

import numpy as np
from eyetrajectoriespy import (
    fit_mfpca,
    fit_scalar_on_function_regression,
    simulate_planar_trajectories,
)

gaze = simulate_planar_trajectories(n_participants=24, trials_per_participant=3)
fit = fit_mfpca(gaze, n_components=5, scaling="dimension_sd")

rng = np.random.default_rng(22)
outcome = 2 + 0.7 * fit.scores[:, 0] + rng.normal(0, 0.2, gaze.n_curves)
model = fit_scalar_on_function_regression(fit, outcome, n_components=3)
print(model.coefficients)

Warning

For prediction studies, fit preprocessing and FPCA inside training folds. Do not estimate the functional basis on the full dataset before cross-validation.