Obtain p-value for Partial Correlation matrix



I used the following link to find the Correlation and Partial Correlation in fMRI.
I want to now find the p-value of these correlation matrices. Is there a direct function to do this in nilearn ?
If not, Please suggest a way I can recalculate a similar correlation matrix and then the p-value.


I think the link you mention is missing?


What types of hypotheses are you testing with respect to the matrix?
Is each individual hypothesis at the edge level?
Are you trying to obtain p-values per entry of the matrix?


Edited the post. Please check it now.


I have seen some papers mentioning about p-value of each correlation matrix they obtain. I don’t understand what do they mean, signify and how are they calculated.


I would advise against doing this for now as this is difficult do to correctly with popular toolboxes.

If you were to just apply the non-parametric bootstrap to estimate p-values for a partial correlation estimate, then that number is quite likely to be highly over-optimistic i.e. p-values end up being much smaller than they ought to be.

It might be okay to do so as long as

  • the number of observations (e.g. fMRI volumes) you have are at least 10x the number of ROIs
  • you don’t use any of the sparse connectivity measures but stick to Ledoit-Wolf style regularization if you use any.

I think this is quite uncommon for neuroimagers to do. They rarely do so even for a correlation matrix which is a simpler case, and even that is tricky to do correctly since time-series are dependent measurements. Relevant twitter thread


I really don’t think bootstrapping partial correlation is a good idea. Bootstrapping systematically messes your degrees of freedom by duplicating time points for each sample, while partial correlation is a multiple regression technique highly sensitive to degrees of freedom. Unless you have loads of time points, as in thousands, I don’t think you should do it. Parametric tests will be completely off, because temporal dependencies on fmri time series are large and hard to model. Good news is that partial correlation live on a standardized scale, so you could simply go with a “substantial” threshold, eg 0.1. This threshold will however depend on the number of regions in your analysis, as in large networks pairwise interactions are bound to explain small amounts of specific variance.