How to get an average RDM from a stack of partial RDMs¶
Here’s an example on how to combine RDMs that do not cover all conditions. One example of this is the trials of the Multiple Arrangements / inverse MDS task. Another is where each participant only takes part in a subset of conditions.
from numpy import array
from rsatoolbox.rdm.rdms import RDMs
from rsatoolbox.rdm.combine import from_partials, rescale
rdms1 = RDMs(
array(1, 2, 3),
pattern_descriptors={'conds': ['a', 'b', 'c']}
)
rdms2 = RDMs(
array(6, 7, 8),
pattern_descriptors={'conds': ['b', 'c', 'd']}
)
## first, all rdms should have the same number of conditions, with NaNs for missing data
partials = from_partials([rdms1, rdms2])
## then we rescale/align these based on pairs in common (put them in the same space)
rescaledPartials = rescale(partials, method='evidence')
## then we can take a weighted average:
meanRDM = rescaledPartials.mean(weights='rescalingWeights')