seqasim / LFPAnalysis

6 stars 4 forks source link

Added cluster-based permutation testing over timeseries #64

Open shawnrhoads opened 1 month ago

shawnrhoads commented 1 month ago

Based on the large DataFrame of time-resolved regression coefficients generated across all electrodes using statistics_utils.time_resolved_regression_single_channel(timeseries, regressors, standardize=True, smooth=False), can subselect rows for a given region of interest (e.g., 'AMY"):

roi_df = all_channels_df[all_channels_df.region == 'AMY'][['Original_Estimate', 'ts']]

Can run the following: roi_ttest, cluster_tstats = cluster_based_permutation(roi_df), which produces the following outputs:

cluster_based_permutation() relies on the following dependencies:

It also depends on the following packages: pandas, numpy, scipy.stats.ttest_1samp, scipy.ndimage.label, joblib.Parallel, joblib.delayed, tqdm.tqdm

seqasim commented 4 weeks ago

This mostly looks good but I don't think shuffling the 'ts' values of the regression outputs is exactly the right way to do this.

I think to mirror the original category-based permutations in Maris and Oostenveld 2007 I think we want to shuffle the regressors going into time_resolved_regression_single_channel, compute the clusters in this new surrogate output, and then compare that to the real cluster test stat