Source code for rsatoolbox.inference.bootstrap

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""inference module: bootstrapping
"""

import numpy as np
from rsatoolbox.util.rdm_utils import add_pattern_index


[docs]def bootstrap_sample(rdms, rdm_descriptor='index', pattern_descriptor='index'): """Draws a bootstrap_sample from the data. This function generates a bootstrap sample of RDMs resampled over measurements and patterns. By default every pattern and RDM sample is treated independently. If desired descriptor names can be passed in descriptors and in pattern_descriptors to group rdms instead. Args: rdms(rsatoolbox.rdm.rdms.RDMs): Data to be used rdm_descriptors(String): descriptor to group the samples by. For each unique value of the descriptor each sample will either contain all RDMs with this value or none pattern_descriptors(string): descriptor to group the patterns by. Each group of patterns will be in or out of the sample as a whole Returns: rsatoolbox.rdm.rdms.RDMs: rdms subsampled dataset with equal number of groups in both patterns and measurements of the rdms numpy.ndarray: rdm_idx sampled rdm indices numpy.ndarray: pattern_idx sampled pattern descriptor indices """ rdm_select = np.unique(rdms.rdm_descriptors[rdm_descriptor]) pattern_descriptor, pattern_select = \ add_pattern_index(rdms, pattern_descriptor) rdm_idx = np.random.randint(0, len(rdm_select), size=len(rdm_select)) rdm_idx = rdm_select[rdm_idx] rdms = rdms.subsample(rdm_descriptor, rdm_idx) pattern_idx = np.random.randint(0, len(pattern_select), size=len(pattern_select)) pattern_idx = pattern_select[pattern_idx] rdms = rdms.subsample_pattern(pattern_descriptor, pattern_idx) return rdms, rdm_idx, pattern_idx
[docs]def bootstrap_sample_rdm(rdms, rdm_descriptor='index'): """Draws a bootstrap_sample from the data. This function generates a bootstrap sample of RDMs resampled over measurements. By default every RDM sample is treated independently. If desired a descriptor name can be passed inrdm_descriptor to group rdms. Args: rdms(rsatoolbox.rdm.rdms.RDMs): Data to be used rdm_descriptors(String): descriptor to group the samples by. For each unique value of the descriptor each sample will either contain all RDMs with this value or none Returns: rsatoolbox.rdm.rdms.RDMs: rdm_idx subsampled dataset with equal number of groups of rdms numpy.ndarray: rdm_idx sampled rdm indices numpy.ndarray: rdm_select rdm group descritor values """ rdm_select = np.unique(rdms.rdm_descriptors[rdm_descriptor]) rdm_sample = np.random.randint(0, len(rdm_select), size=len(rdm_select)) rdm_idx = rdm_select[rdm_sample] rdms = rdms.subsample(rdm_descriptor, rdm_idx) return rdms, rdm_idx
[docs]def bootstrap_sample_pattern(rdms, pattern_descriptor='index'): """Draws a bootstrap_sample from the data. This function generates a bootstrap sample of RDMs resampled over patterns. By default every pattern is treated independently. If desired a descriptor name can be passed in pattern_descriptor to group patterns. Args: rdms(rsatoolbox.rdm.rdms.RDMs): Data to be used pattern_descriptors(string): descriptor to group the patterns by. Each group of patterns will be in or out of the sample as a whole Returns: rsatoolbox.rdm.rdms.RDMs: rdm_idx subsampled dataset with equal number of pattern groups numpy.ndarray: pattern_idx sampled pattern descriptor index values for subsampling other rdms """ pattern_descriptor, pattern_select = \ add_pattern_index(rdms, pattern_descriptor) pattern_idx = np.random.randint(0, len(pattern_select), size=len(pattern_select)) pattern_idx = pattern_select[pattern_idx] rdms = rdms.subsample_pattern(pattern_descriptor, pattern_idx) return rdms, pattern_idx