rrr¶
Reduced-rank regression.
Use method="rrr" to learn a low-rank mapping from neural activity to
target variables.
When to choose this method¶
Choose RRR when your main objective is predicting external variables from neural activity while enforcing a low-dimensional predictive subspace.
Directly models neural-to-target relationships (unlike unsupervised methods).
Useful for neural encoding/decoding problems where targets are continuous or multidimensional.
Low-rank structure can improve generalization and interpretability.
RRR requires meaningful target definitions and enough data to estimate the mapping reliably.
What goes in target_da?¶
target_da is the targets=... argument passed to
da.ephys.reduce(method="rrr", ...).
It must be an xarray.DataArray with:
All sample dimensions used by
reduce(by default,trialandtimebecause the defaultstackis("trial", "time")).Exactly one additional non-sample dimension that indexes target variables (for example
"target","behavior", or"kinematic_feature").
Common choices for target variables include:
Behavioral signals over time (running speed, pupil size, lick rate).
Kinematics over time (position/velocity components).
Task-variable encodings (for example one-hot vectors for stimulus/choice).
The sample coordinates in target_da should align with the neural data
samples used for fitting.
ds = da.ephys.reduce(
method="rrr",
targets=target_da,
rank=3,
)
Example¶
Time-resolved targets (default stacking over trial and time):
target_da = xr.DataArray(
target_values, # shape: (n_trial, n_time, n_target)
dims=("trial", "time", "target"),
coords={
"trial": da.coords["trial"],
"time": da.coords["time"],
"target": ["x_vel", "y_vel"],
},
)
ds = da.ephys.reduce(
method="rrr",
targets=target_da,
rank=3,
)
Trial-level targets only (for example per-trial choice), by stacking trials only:
target_da = xr.DataArray(
trial_targets, # shape: (n_trial, n_target)
dims=("trial", "target"),
coords={"trial": da.coords["trial"], "target": ["left", "right"]},
)
ds = da.ephys.reduce(
method="rrr",
targets=target_da,
stack=("trial",), # now targets need only the trial sample dim
rank=2,
)
Notes¶
targetsis required.rankcontrols the dimensionality of the learned predictive subspace.