Repository: mind-inria/hidimstat
Pull request #224: Fix bibliography
Author: login: jpaillard
Labels: name: documentation
description: Improvements or additions to documentation
Created: 2025-04-08T13:26:08Z | Merged: 2025-04-10T08:33:12Z

While working on examples, I realized that the bibliography has several issues that I try to address in this PR: 
 - remove duplicates in the .bib file
 - remove unnecessary fields in the .bib (typically abstracts) + format the.bib file
 - Use systematically `footbibliography` to cite references in the docstrings and in the examples. This displays the citation as First et al + citation number in superscript that redirects to the full reference in bibliography section. 

It should solve #222



Diff:
diff --git a/doc_conf/api.rst b/doc_conf/api.rst
index 9c2cae9cc..45b0de66b 100644
--- a/doc_conf/api.rst
+++ b/doc_conf/api.rst
@@ -17,10 +17,10 @@ Functions
    :template: function.rst
 
    aggregate_quantiles
+   quantile_aggregation
    clustered_inference
    dcrt_zero
    dcrt_pvalue
-   data_simulation
    desparsified_lasso
    desparsified_lasso_pvalue
    desparsified_group_lasso_pvalue
diff --git a/doc_conf/references.bib b/doc_conf/references.bib
index 6843008d5..1e382a5aa 100644
--- a/doc_conf/references.bib
+++ b/doc_conf/references.bib
@@ -1,436 +1,340 @@
-@inproceedings{Chamma_NeurIPS2023,
- author = {CHAMMA, Ahmad and Engemann, Denis A. and Thirion, Bertrand},
- booktitle = {Advances in Neural Information Processing Systems},
- editor = {A. Oh and T. Naumann and A. Globerson and K. Saenko and M. Hardt and S. Levine},
- pages = {67662--67685},
- publisher = {Curran Associates, Inc.},
- title = {Statistically Valid Variable Importance Assessment through Conditional Permutations},
- url = {https://proceedings.neurips.cc/paper_files/paper/2023/file/d60e14c19cd6e0fc38556ad29ac8fbc9-Paper-Conference.pdf},
- volume = {36},
- year = {2023}
-}
-
-@article{Chamma_AAAI2024,
-title={Variable Importance in High-Dimensional Settings Requires Grouping},
-volume={38}, url={https://ojs.aaai.org/index.php/AAAI/article/view/28997},
-DOI={10.1609/aaai.v38i10.28997},
-number={10},
-journal={Proceedings of the AAAI Conference on Artificial Intelligence},
-author={Chamma, Ahmad and Thirion, Bertrand and Engemann, Denis},
-year={2024},
-month={Mar.},
-pages={11195-11203}
-}
-
-@InProceedings{pmlr-v119-nguyen20a,
-  title = 	 {Aggregation of Multiple Knockoffs},
-  author =       {Nguyen, Tuan-Binh and Chevalier, Jerome-Alexis and Thirion, Bertrand and Arlot, Sylvain},
-  booktitle = 	 {Proceedings of the 37th International Conference on Machine Learning},
-  pages = 	 {7283--7293},
-  year = 	 {2020},
-  editor = 	 {III, Hal Daumé and Singh, Aarti},
-  volume = 	 {119},
-  series = 	 {Proceedings of Machine Learning Research},
-  month = 	 {13--18 Jul},
-  publisher =    {PMLR},
-  pdf = 	 {http://proceedings.mlr.press/v119/nguyen20a/nguyen20a.pdf},
-  url = 	 {https://proceedings.mlr.press/v119/nguyen20a.html},
-  abstract = 	 {We develop an extension of the knockoff inference procedure, introduced by Barber &amp; Candes (2015). This new method, called Aggregation of Multiple Knockoffs (AKO), addresses the instability inherent to the random nature of knockoff-based inference. Specifically, AKO improves both the stability and power compared with the original knockoff algorithm while still maintaining guarantees for false discovery rate control. We provide a new inference procedure, prove its core properties, and demonstrate its benefits in a set of experiments on synthetic and real datasets.}
-}
-
-@article{Meinshausen_2008,
-author = {Nicolai Meinshausen, Lukas Meier and Peter Bühlmann},
-title = {p-Values for High-Dimensional Regression},
-journal = {Journal of the American Statistical Association},
-volume = {104},
-number = {488},
-pages = {1671--1681},
-year = {2009},
-publisher = {Taylor \& Francis},
-doi = {10.1198/jasa.2009.tm08647},
+@article{barber2015controlling,
+  author    = {Barber, Rina Foygel and Cand{\`e}s, Emmanuel J},
+  journal   = {The Annals of statistics},
+  pages     = {2055--2085},
+  publisher = {JSTOR},
+  title     = {Controlling the false discovery rate via knockoffs},
+  year      = {2015}
 }
 
-@article{bhy_2001,
-author = {Benjamini, Yoav and Yekutieli, Daniel},
-year = {2001},
-month = {08},
-pages = {},
-title = {The Control of the False Discovery Rate in Multiple Testing Under Dependency},
-volume = {29},
-journal = {Ann. Stat.},
-doi = {10.1214/aos/1013699998}
+@article{bellec2022biasing,
+  author    = {Bellec, Pierre C and Zhang, Cun-Hui},
+  journal   = {Bernoulli},
+  number    = {2},
+  pages     = {713--743},
+  publisher = {Bernoulli Society for Mathematical Statistics and Probability},
+  title     = {De-biasing the lasso with degrees-of-freedom adjustment},
+  volume    = {28},
+  year      = {2022}
 }
 
 @article{benjamini1995controlling,
-  title={Controlling the false discovery rate: a practical and powerful approach to multiple testing},
-  author={Benjamini, Yoav and Hochberg, Yosef},
-  journal={Journal of the Royal statistical society: series B (Methodological)},
-  volume={57},
-  number={1},
-  pages={289--300},
-  year={1995},
-  publisher={Wiley Online Library}
+  author    = {Benjamini, Yoav and Hochberg, Yosef},
+  journal   = {Journal of the Royal statistical society: series B (Methodological)},
+  number    = {1},
+  pages     = {289--300},
+  publisher = {Wiley Online Library},
+  title     = {Controlling the false discovery rate: a practical and powerful approach to multiple testing},
+  volume    = {57},
+  year      = {1995}
 }
 
-
-@article{Ren_2023,
-    author = {Ren, Zhimei and Barber, Rina Foygel},
-    title = "{Derandomised knockoffs: leveraging e-values for false discovery rate control}",
-    journal = {Journal of the Royal Statistical Society Series B: Statistical Methodology},
-    volume = {86},
-    number = {1},
-    pages = {122-154},
-    year = {2023},
-    month = {09},
-    abstract = "{Model-X knockoffs is a flexible wrapper method for high-dimensional regression algorithms, which provides guaranteed control of the false discovery rate (FDR). Due to the randomness inherent to the method, different runs of model-X knockoffs on the same dataset often result in different sets of selected variables, which is undesirable in practice. In this article, we introduce a methodology for derandomising model-X knockoffs with provable FDR control. The key insight of our proposed method lies in the discovery that the knockoffs procedure is in essence an e-BH procedure. We make use of this connection and derandomise model-X knockoffs by aggregating the e-values resulting from multiple knockoff realisations. We prove that the derandomised procedure controls the FDR at the desired level, without any additional conditions (in contrast, previously proposed methods for derandomisation are not able to guarantee FDR control). The proposed method is evaluated with numerical experiments, where we find that the derandomised procedure achieves comparable power and dramatically decreased selection variability when compared with model-X knockoffs.}",
-    issn = {1369-7412},
-    doi = {10.1093/jrsssb/qkad085},
-    url = {https://doi.org/10.1093/jrsssb/qkad085},
-    eprint = {https://academic.oup.com/jrsssb/article-pdf/86/1/122/56629998/qkad085.pdf},
+@article{bhy_2001,
+  author  = {Benjamini, Yoav and Yekutieli, Daniel},
+  doi     = {10.1214/aos/1013699998},
+  journal = {Ann. Stat.},
+  pages   = {},
+  title   = {The Control of the False Discovery Rate in Multiple Testing Under Dependency},
+  volume  = {29},
+  year    = {2001}
 }
 
 @article{breimanRandomForests2001,
-  title = {Random {{Forests}}},
-  author = {Breiman, Leo},
-  year = {2001},
-  month = oct,
+  author  = {Breiman, Leo},
+  doi     = {10.1023/A:1010933404324},
+  issn    = {1573-0565},
   journal = {Machine Learning},
-  volume = {45},
-  number = {1},
-  pages = {5--32},
-  issn = {1573-0565},
-  doi = {10.1023/A:1010933404324},
+  langid  = {english},
+  number  = {1},
+  pages   = {5--32},
+  title   = {Random {{Forests}}},
   urldate = {2022-06-28},
-  abstract = {Random forests are a combination of tree predictors such that each tree depends on the values of a random vector sampled independently and with the same distribution for all trees in the forest. The generalization error for forests converges a.s. to a limit as the number of trees in the forest becomes large. The generalization error of a forest of tree classifiers depends on the strength of the individual trees in the forest and the correlation between them. Using a random selection of features to split each node yields error rates that compare favorably to Adaboost (Y. Freund \& R. Schapire, Machine Learning: Proceedings of the Thirteenth International conference, ***, 148--156), but are more robust with respect to noise. Internal estimates monitor error, strength, and correlation and these are used to show the response to increasing the number of features used in the splitting. Internal estimates are also used to measure variable importance. These ideas are also applicable to regression.},
-  langid = {english},
-  keywords = {classification,ensemble,regression},
-}
-
-@article{mi2021permutation,
-  title={Permutation-based identification of important biomarkers for complex diseases via machine learning models},
-  author={Mi, Xinlei and Zou, Baiming and Zou, Fei and Hu, Jianhua},
-  journal={Nature communications},
-  volume={12},
-  number={1},
-  pages={3008},
-  year={2021},
-  publisher={Nature Publishing Group UK London}
-}
-
-@article{stroblConditionalVariableImportance2008,
-  title = {Conditional Variable Importance for Random Forests},
-  author = {Strobl, Carolin and Boulesteix, Anne-Laure and Kneib, Thomas and Augustin, Thomas and Zeileis, Achim},
-  year = {2008},
-  month = jul,
-  journal = {BMC Bioinformatics},
-  volume = {9},
-  number = {1},
-  pages = {307},
-  issn = {1471-2105},
-  doi = {10.1186/1471-2105-9-307},
-  urldate = {2022-01-12},
-  abstract = {Random forests are becoming increasingly popular in many scientific fields because they can cope with "small n large p" problems, complex interactions and even highly correlated predictor variables. Their variable importance measures have recently been suggested as screening tools for, e.g., gene expression studies. However, these variable importance measures show a bias towards correlated predictor variables.},
-  langid = {english},
-  file = {/home/ahmad/Zotero/storage/ML7VF5ZJ/Strobl et al. - 2008 - Conditional variable importance for random forests.pdf}
-}
-
-
-@article{miPermutationbasedIdentificationImportant2021,
-  title = {Permutation-Based Identification of Important Biomarkers for Complex Diseases via Machine Learning Models},
-  author = {Mi, Xinlei and Zou, Baiming and Zou, Fei and Hu, Jianhua},
-  year = {2021},
-  month = may,
-  journal = {Nature Communications},
-  volume = {12},
-  number = {1},
-  pages = {3008},
-  publisher = {Nature Publishing Group},
-  issn = {2041-1723},
-  doi = {10.1038/s41467-021-22756-2},
-  urldate = {2022-01-12},
-  abstract = {Study of human disease remains challenging due to convoluted disease etiologies and complex molecular mechanisms at genetic, genomic, and proteomic levels. Many machine learning-based methods have been developed and widely used to alleviate some analytic challenges in complex human disease studies. While enjoying the modeling flexibility and robustness, these model frameworks suffer from non-transparency and difficulty in interpreting each individual feature due to their sophisticated algorithms. However, identifying important biomarkers is a critical pursuit towards assisting researchers to establish novel hypotheses regarding prevention, diagnosis and treatment of complex human diseases. Herein, we propose a Permutation-based Feature Importance Test (PermFIT) for estimating and testing the feature importance, and for assisting interpretation of individual feature in complex frameworks, including deep neural networks, random forests, and support vector machines. PermFIT (available at https://github.com/SkadiEye/deepTL) is implemented in a computationally efficient manner, without model refitting. We conduct extensive numerical studies under various scenarios, and show that PermFIT not only yields valid statistical inference, but also improves the prediction accuracy of machine learning models. With the application to the Cancer Genome Atlas kidney tumor data and the HITChip atlas data, PermFIT demonstrates its practical usage in identifying important biomarkers and boosting model prediction performance.},
-  copyright = {2021 The Author(s)},
-  langid = {english},
-  keywords = {Cancer,Data mining,Machine learning,Statistical methods},
+  volume  = {45},
+  year    = {2001}
 }
 
 @article{candes2018panning,
-  title={Panning for gold:‘model-X’knockoffs for high dimensional controlled variable selection},
-  author={Candes, Emmanuel and Fan, Yingying and Janson, Lucas and Lv, Jinchi},
-  journal={Journal of the Royal Statistical Society Series B: Statistical Methodology},
-  volume={80},
-  number={3},
-  pages={551--577},
-  year={2018},
-  publisher={Oxford University Press}
- }
-
-@article{barber2015controlling,
-  title={Controlling the false discovery rate via knockoffs},
-  author={Barber, Rina Foygel and Cand{\`e}s, Emmanuel J},
-  journal={The Annals of statistics},
-  pages={2055--2085},
-  year={2015},
-  publisher={JSTOR}
+  author    = {Candes, Emmanuel and Fan, Yingying and Janson, Lucas and Lv, Jinchi},
+  journal   = {Journal of the Royal Statistical Society Series B: Statistical Methodology},
+  number    = {3},
+  pages     = {551--577},
+  publisher = {Oxford University Press},
+  title     = {Panning for gold:'model-X' knockoffs for high dimensional controlled variable selection},
+  volume    = {80},
+  year      = {2018}
 }
 
-@article{liu2022fast,
-  title={Fast and powerful conditional randomization testing via distillation},
-  author={Liu, Molei and Katsevich, Eugene and Janson, Lucas and Ramdas, Aaditya},
-  journal={Biometrika},
-  volume={109},
-  number={2},
-  pages={277--293},
-  year={2022},
-  publisher={Oxford University Press}
+@article{Chamma_AAAI2024,
+  author  = {Chamma, Ahmad and Thirion, Bertrand and Engemann, Denis},
+  doi     = {10.1609/aaai.v38i10.28997},
+  journal = {Proceedings of the AAAI Conference on Artificial Intelligence},
+  number  = {10},
+  pages   = {11195-11203},
+  title   = {Variable Importance in High-Dimensional Settings Requires Grouping},
+  url     = {https://ojs.aaai.org/index.php/AAAI/article/view/28997},
+  volume  = {38},
+  year    = {2024}
 }
 
-@article{liuFastPowerfulConditional2021,
-  title = {Fast and {{Powerful Conditional Randomization Testing}} via {{Distillation}}},
-  author = {Liu, Molei and Katsevich, Eugene and Janson, Lucas and Ramdas, Aaditya},
-  year = {2021},
-  month = jun,
-  journal = {arXiv:2006.03980 [stat]},
-  eprint = {2006.03980},
-  primaryclass = {stat},
-  urldate = {2022-01-12},
-  abstract = {We consider the problem of conditional independence testing: given a response Y and covariates (X,Z), we test the null hypothesis that Y is independent of X given Z. The conditional randomization test (CRT) was recently proposed as a way to use distributional information about X{\textbar}Z to exactly (non-asymptotically) control Type-I error using any test statistic in any dimensionality without assuming anything about Y{\textbar}(X,Z). This flexibility in principle allows one to derive powerful test statistics from complex prediction algorithms while maintaining statistical validity. Yet the direct use of such advanced test statistics in the CRT is prohibitively computationally expensive, especially with multiple testing, due to the CRT's requirement to recompute the test statistic many times on resampled data. We propose the distilled CRT, a novel approach to using state-of-the-art machine learning algorithms in the CRT while drastically reducing the number of times those algorithms need to be run, thereby taking advantage of their power and the CRT's statistical guarantees without suffering the usual computational expense. In addition to distillation, we propose a number of other tricks like screening and recycling computations to further speed up the CRT without sacrificing its high power and exact validity. Indeed, we show in simulations that all our proposals combined lead to a test that has similar power to the most powerful existing CRT implementations but requires orders of magnitude less computation, making it a practical tool even for large data sets. We demonstrate these benefits on a breast cancer dataset by identifying biomarkers related to cancer stage.},
-  archiveprefix = {arxiv},
-  keywords = {Statistics - Methodology},
+@inproceedings{Chamma_NeurIPS2023,
+  author    = {Chamma, Ahmad and Engemann, Denis A. and Thirion, Bertrand},
+  booktitle = {Advances in Neural Information Processing Systems},
+  editor    = {A. Oh and T. Naumann and A. Globerson and K. Saenko and M. Hardt and S. Levine},
+  pages     = {67662--67685},
+  publisher = {Curran Associates, Inc.},
+  title     = {Statistically Valid Variable Importance Assessment through Conditional Permutations},
+  url       = {https://proceedings.neurips.cc/paper_files/paper/2023/file/d60e14c19cd6e0fc38556ad29ac8fbc9-Paper-Conference.pdf},
+  volume    = {36},
+  year      = {2023}
 }
 
-@article{reid2016study,
-  title={A study of error variance estimation in lasso regression},
-  author={Reid, Stephen and Tibshirani, Robert and Friedman, Jerome},
-  journal={Statistica Sinica},
-  pages={35--67},
-  year={2016},
-  publisher={JSTOR}
+@article{chevalier2020statistical,
+  author  = {Chevalier, J{\'e}r{\^o}me-Alexis and Salmon, Joseph and Gramfort, Alexandre and Thirion, Bertrand},
+  journal = {Advances in Neural Information Processing Systems},
+  pages   = {1759--1770},
+  title   = {Statistical control for spatio-temporal meg/eeg source imaging with desparsified mutli-task lasso},
+  volume  = {33},
+  year    = {2020}
+}
+
+@article{chevalier2021decoding,
+  author    = {Chevalier, J{\'e}r{\^o}me-Alexis and Nguyen, Tuan-Binh and Salmon, Joseph and Varoquaux, Ga{\"e}l and Thirion, Bertrand},
+  journal   = {NeuroImage},
+  pages     = {117921},
+  publisher = {Elsevier},
+  title     = {Decoding with confidence: Statistical control on decoder maps},
+  volume    = {234},
+  year      = {2021}
+}
+
+@article{chevalier2022spatially,
+  author    = {Chevalier, J{\'e}r{\^o}me-Alexis and Nguyen, Tuan-Binh and Thirion, Bertrand and Salmon, Joseph},
+  journal   = {Statistics and Computing},
+  number    = {5},
+  pages     = {83},
+  publisher = {Springer},
+  title     = {Spatially relaxed inference on high-dimensional linear models},
+  volume    = {32},
+  year      = {2022}
 }
 
-@article{Williamson_General_2023,
-  year = {2023}, 
-  title = {{A General Framework for Inference on Algorithm-Agnostic Variable Importance}}, 
-  author = {Williamson, Brian D. and Gilbert, Peter B. and Simon, Noah R. and Carone, Marco}, 
-  journal = {Journal of the American Statistical Association}, 
-  issn = {0162-1459}, 
-  doi = {10.1080/01621459.2021.2003200}, 
-  pages = {1645--1658}, 
-  number = {543}, 
-  volume = {118}, 
-}
+@article{chevalier_statistical_2020,
+  author  = {Chevalier, Jérôme-Alexis},
+  journal = {Université Paris-Saclay},
+  langid  = {english},
+  title   = {Statistical control of sparse models in high dimension},
+  type    = {phdthesis},
+  url     = {https://theses.hal.science/tel-03147200},
+  year    = {2020}
 }
 
-@article{zhang2014confidence,
-  title={Confidence intervals for low dimensional parameters in high dimensional linear models},
-  author={Zhang, Cun-Hui and Zhang, Stephanie S},
-  journal={Journal of the Royal Statistical Society Series B: Statistical Methodology},
-  volume={76},
-  number={1},
-  pages={217--242},
-  year={2014},
-  publisher={Oxford University Press}
+@article{eshel2003yule,
+  author  = {Eshel, Gidon},
+  journal = {Internet resource},
+  pages   = {68--73},
+  title   = {The yule walker equations for the AR coefficients},
+  volume  = {2},
+  year    = {2003}
 }
 
-@article{van2014asymptotically,
-  title={On asymptotically optimal confidence regions and tests for high-dimensional models},
-  author={van de Geer, Sara and B{\"u}hlmann, Peter and Ritov, Ya'acov and Dezeure, Ruben},
-  journal={The Annals of Statistics},
-  pages={1166--1202},
-  year={2014},
-  publisher={JSTOR}
+@article{fan2012variance,
+  author    = {Fan, Jianqing and Guo, Shaojun and Hao, Ning},
+  journal   = {Journal of the Royal Statistical Society Series B: Statistical Methodology},
+  number    = {1},
+  pages     = {37--65},
+  publisher = {Oxford University Press},
+  title     = {Variance estimation using refitted cross-validation in ultrahigh dimensional regression},
+  volume    = {74},
+  year      = {2012}
 }
 
-@article{javanmard2014confidence,
-  title={Confidence intervals and hypothesis testing for high-dimensional regression},
-  author={Javanmard, Adel and Montanari, Andrea},
-  journal={The Journal of Machine Learning Research},
-  volume={15},
-  number={1},
-  pages={2869--2909},
-  year={2014},
-  publisher={JMLR. org}
+@article{gaonkar_deriving_2012,
+  author  = {Gaonkar, Bilwaj and Davatzikos, Christos},
+  journal = {International Conference on Medical Image Computing and Computer-Assisted Intervention},
+  number  = {0},
+  pages   = {723--730},
+  pmcid   = {PMC3703958},
+  pmid    = {23285616},
+  title   = {Deriving statistical significance maps for {SVM} based image classification and group comparisons},
+  url     = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3703958/},
+  urldate = {2024-12-16},
+  volume  = {15},
+  year    = {2012}
 }
 
-@article{bellec2022biasing,
-  title={De-biasing the lasso with degrees-of-freedom adjustment},
-  author={Bellec, Pierre C and Zhang, Cun-Hui},
-  journal={Bernoulli},
-  volume={28},
-  number={2},
-  pages={713--743},
-  year={2022},
-  publisher={Bernoulli Society for Mathematical Statistics and Probability}
+@article{hirschhorn2005genome,
+  author    = {Hirschhorn, Joel N and Daly, Mark J},
+  journal   = {Nature reviews genetics},
+  number    = {2},
+  pages     = {95--108},
+  publisher = {Nature Publishing Group UK London},
+  title     = {Genome-wide association studies for common diseases and complex traits},
+  volume    = {6},
+  year      = {2005}
+}
+
+@article{lei2018distribution,
+  title     = {Distribution-free predictive inference for regression},
+  author    = {Lei, Jing and G'Sell, Max and Rinaldo, Alessandro and Tibshirani, Ryan J and Wasserman, Larry},
+  journal   = {Journal of the American Statistical Association},
+  volume    = {113},
+  number    = {523},
+  pages     = {1094--1111},
+  year      = {2018},
+  publisher = {Taylor \& Francis}
 }
 
-@article{celentano2023lasso,
-  title={The lasso with general gaussian designs with applications to hypothesis testing},
-  author={Celentano, Michael and Montanari, Andrea and Wei, Yuting},
-  journal={The Annals of Statistics},
-  volume={51},
-  number={5},
-  pages={2194--2220},
-  year={2023},
-  publisher={Institute of Mathematical Statistics}
+@article{liu2022fast,
+  author    = {Liu, Molei and Katsevich, Eugene and Janson, Lucas and Ramdas, Aaditya},
+  journal   = {Biometrika},
+  number    = {2},
+  pages     = {277--293},
+  publisher = {Oxford University Press},
+  title     = {Fast and powerful conditional randomization testing via distillation},
+  volume    = {109},
+  year      = {2022}
+}
+
+@article{meinshausen2009pvalues,
+  author    = {Nicolai Meinshausen, Lukas Meier and Peter Buhlmann},
+  doi       = {10.1198/jasa.2009.tm08647},
+  journal   = {Journal of the American Statistical Association},
+  number    = {488},
+  pages     = {1671--1681},
+  publisher = {Taylor \& Francis},
+  title     = {p-Values for High-Dimensional Regression},
+  volume    = {104},
+  year      = {2009}
 }
 
-@phdthesis{chevalier2020statistical,
-  title={Statistical control of sparse models in high dimension},
-  author={Chevalier, J{\'e}r{\^o}me-Alexis},
-  year={2020},
-  school={Universit{\'e} Paris-Saclay}
+@article{mi2021permutation,
+  author    = {Mi, Xinlei and Zou, Baiming and Zou, Fei and Hu, Jianhua},
+  journal   = {Nature communications},
+  number    = {1},
+  pages     = {3008},
+  publisher = {Nature Publishing Group UK London},
+  title     = {Permutation-based identification of important biomarkers for complex diseases via machine learning models},
+  volume    = {12},
+  year      = {2021}
+}
+
+@inproceedings{pmlr-v119-nguyen20a,
+  author    = {Nguyen, Tuan-Binh and Chevalier, Jerome-Alexis and Thirion, Bertrand and Arlot, Sylvain},
+  booktitle = {Proceedings of the 37th International Conference on Machine Learning},
+  editor    = {III, Hal Daumé and Singh, Aarti},
+  pages     = {7283--7293},
+  pdf       = {http://proceedings.mlr.press/v119/nguyen20a/nguyen20a.pdf},
+  publisher = {PMLR},
+  series    = {Proceedings of Machine Learning Research},
+  title     = {Aggregation of Multiple Knockoffs},
+  url       = {https://proceedings.mlr.press/v119/nguyen20a.html},
+  volume    = {119},
+  year      = {2020}
 }
 
-@article{fan2012variance,
-  title={Variance estimation using refitted cross-validation in ultrahigh dimensional regression},
-  author={Fan, Jianqing and Guo, Shaojun and Hao, Ning},
-  journal={Journal of the Royal Statistical Society Series B: Statistical Methodology},
-  volume={74},
-  number={1},
-  pages={37--65},
-  year={2012},
-  publisher={Oxford University Press}
+@article{ramdas2017online,
+  author  = {Ramdas, Aaditya and Yang, Fanny and Wainwright, Martin J and Jordan, Michael I},
+  journal = {Advances in neural information processing systems},
+  title   = {Online control of the false discovery rate with decaying memory},
+  volume  = {30},
+  year    = {2017}
 }
 
 @article{reid2016study,
-  title={A study of error variance estimation in lasso regression},
-  author={Reid, Stephen and Tibshirani, Robert and Friedman, Jerome},
-  journal={Statistica Sinica},
-  pages={35--67},
-  year={2016},
-  publisher={JSTOR}
-}
-
-@article{chevalier2020statistical,
-  title={Statistical control for spatio-temporal meg/eeg source imaging with desparsified mutli-task lasso},
-  author={Chevalier, J{\'e}r{\^o}me-Alexis and Salmon, Joseph and Gramfort, Alexandre and Thirion, Bertrand},
-  journal={Advances in Neural Information Processing Systems},
-  volume={33},
-  pages={1759--1770},
-  year={2020}
-}
-
-@article{eshel2003yule,
-  title={The yule walker equations for the AR coefficients},
-  author={Eshel, Gidon},
-  journal={Internet resource},
-  volume={2},
-  pages={68--73},
-  year={2003}
-
-@article{chevalier_statistical_2020,
-	title = {Statistical control of sparse models in high dimension},
-	url = {https://theses.hal.science/tel-03147200},
-	journal = {Université Paris-Saclay},
-	type = {phdthesis},
-	author = {Chevalier, Jérôme-Alexis},
-	year = {2020},
-	langid = {english},
+  author    = {Reid, Stephen and Tibshirani, Robert and Friedman, Jerome},
+  journal   = {Statistica Sinica},
+  pages     = {35--67},
+  publisher = {JSTOR},
+  title     = {A study of error variance estimation in lasso regression},
+  year      = {2016}
 }
 
-@article{benjamini1995controlling,
-  title={Controlling the false discovery rate: a practical and powerful approach to multiple testing},
-  author={Benjamini, Yoav and Hochberg, Yosef},
-  journal={Journal of the Royal statistical society: series B (Methodological)},
-  volume={57},
-  number={1},
-  pages={289--300},
-  year={1995},
-  publisher={Wiley Online Library}
+@article{Ren_2023,
+  author  = {Ren, Zhimei and Barber, Rina Foygel},
+  doi     = {10.1093/jrsssb/qkad085},
+  issn    = {1369-7412},
+  journal = {Journal of the Royal Statistical Society Series B: Statistical Methodology},
+  number  = {1},
+  pages   = {122-154},
+  title   = {{Derandomised knockoffs: leveraging e-values for false discovery rate control}},
+  url     = {https://doi.org/10.1093/jrsssb/qkad085},
+  volume  = {86},
+  year    = {2023}
 }
 
-@article{wang2022false,
-  title={False discovery rate control with e-values},
-  author={Wang, Ruodu and Ramdas, Aaditya},
-  journal={Journal of the Royal Statistical Society Series B: Statistical Methodology},
-  volume={84},
-  number={3},
-  pages={822--852},
-  year={2022},
-  publisher={Oxford University Press}
+@article{stroblConditionalVariableImportance2008,
+  author  = {Strobl, Carolin and Boulesteix, Anne-Laure and Kneib, Thomas and Augustin, Thomas and Zeileis, Achim},
+  doi     = {10.1186/1471-2105-9-307},
+  file    = {/home/ahmad/Zotero/storage/ML7VF5ZJ/Strobl et al. - 2008 - Conditional variable importance for random forests.pdf},
+  issn    = {1471-2105},
+  journal = {BMC Bioinformatics},
+  langid  = {english},
+  number  = {1},
+  pages   = {307},
+  title   = {Conditional Variable Importance for Random Forests},
+  urldate = {2022-01-12},
+  volume  = {9},
+  year    = {2008}
 }
 
-@article{ramdas2017wasserstein,
-  title={On wasserstein two-sample testing and related families of nonparametric tests},
-  author={Ramdas, Aaditya and Garc{\'\i}a Trillos, Nicol{\'a}s and Cuturi, Marco},
-  journal={Entropy},
-  volume={19},
-  number={2},
-  pages={47},
-  year={2017},
-  publisher={MDPI}
+@article{van2014asymptotically,
+  author    = {van de Geer, Sara and B{\"u}hlmann, Peter and Ritov, Ya'acov and Dezeure, Ruben},
+  journal   = {The Annals of Statistics},
+  pages     = {1166--1202},
+  publisher = {JSTOR},
+  title     = {On asymptotically optimal confidence regions and tests for high-dimensional models},
+  year      = {2014}
 }
 
-@article{ramdas2017online,
-  title={Online control of the false discovery rate with decaying memory},
-  author={Ramdas, Aaditya and Yang, Fanny and Wainwright, Martin J and Jordan, Michael I},
-  journal={Advances in neural information processing systems},
-  volume={30},
-  year={2017}
+@article{verdinelli2024feature,
+  title     = {Feature importance: A closer look at shapley values and loco},
+  author    = {Verdinelli, Isabella and Wasserman, Larry},
+  journal   = {Statistical Science},
+  volume    = {39},
+  number    = {4},
+  pages     = {623--636},
+  year      = {2024},
+  publisher = {Institute of Mathematical Statistics}
 }
 
-@article{meinshausen2008hierarchical,
-  title={Hierarchical testing of variable importance},
-  author={Meinshausen, Nicolai},
-  journal={Biometrika},
-  volume={95},
-  number={2},
-  pages={265--278},
-  year={2008},
-  publisher={Oxford University Press}
-}
-@article{meinshausen2009p,
-  title={P-values for high-dimensional regression},
-  author={Meinshausen, Nicolai and Meier, Lukas and B{\"u}hlmann, Peter},
-  journal={Journal of the American Statistical Association},
-  volume={104},
-  number={488},
-  pages={1671--1681},
-  year={2009},
-  publisher={Taylor \& Francis}
+@article{wang2022false,
+  author    = {Wang, Ruodu and Ramdas, Aaditya},
+  journal   = {Journal of the Royal Statistical Society Series B: Statistical Methodology},
+  number    = {3},
+  pages     = {822--852},
+  publisher = {Oxford University Press},
+  title     = {False discovery rate control with e-values},
+  volume    = {84},
+  year      = {2022}
 }
 
 @book{westfall1993resampling,
-  title={Resampling-based multiple testing: Examples and methods for p-value adjustment},
-  author={Westfall, Peter H and Young, S Stanley},
-  volume={279},
-  year={1993},
-  publisher={John Wiley \& Sons}
+  author    = {Westfall, Peter H and Young, S Stanley},
+  publisher = {John Wiley \& Sons},
+  title     = {Resampling-based multiple testing: Examples and methods for p-value adjustment},
+  volume    = {279},
+  year      = {1993}
 }
 
-@article{hirschhorn2005genome,
-  title={Genome-wide association studies for common diseases and complex traits},
-  author={Hirschhorn, Joel N and Daly, Mark J},
-  journal={Nature reviews genetics},
-  volume={6},
-  number={2},
-  pages={95--108},
-  year={2005},
-  publisher={Nature Publishing Group UK London}
-}
-@article{gaonkar_deriving_2012,
-	title = {Deriving statistical significance maps for {SVM} based image classification and group comparisons},
-	volume = {15},
-	url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3703958/},
-	pages = {723--730},
-	number = {0},
-	journaltitle = {Medical image computing and computer-assisted intervention : {MICCAI} ... International Conference on Medical Image Computing and Computer-Assisted Intervention},
-	journal = {Med Image Comput Comput Assist Interv},
-	author = {Gaonkar, Bilwaj and Davatzikos, Christos},
-	urldate = {2024-12-16},
-	year = {2012},
-	pmid = {23285616},
-	pmcid = {PMC3703958},
+@article{Williamson_General_2023,
+  author  = {Williamson, Brian D. and Gilbert, Peter B. and Simon, Noah R. and Carone, Marco},
+  doi     = {10.1080/01621459.2021.2003200},
+  issn    = {0162-1459},
+  journal = {Journal of the American Statistical Association},
+  number  = {543},
+  pages   = {1645--1658},
+  title   = {{A General Framework for Inference on Algorithm-Agnostic Variable Importance}},
+  volume  = {118},
+  year    = {2023}
 }
 
-@article{Williamson_General_2023,
-  year = {2023}, 
-  title = {{A General Framework for Inference on Algorithm-Agnostic Variable Importance}}, 
-  author = {Williamson, Brian D. and Gilbert, Peter B. and Simon, Noah R. and Carone, Marco}, 
-  journal = {Journal of the American Statistical Association}, 
-  issn = {0162-1459}, 
-  doi = {10.1080/01621459.2021.2003200}, 
-  pages = {1645--1658}, 
-  number = {543}, 
-  volume = {118}, 
+@article{zhang2014confidence,
+  author    = {Zhang, Cun-Hui and Zhang, Stephanie S},
+  journal   = {Journal of the Royal Statistical Society Series B: Statistical Methodology},
+  number    = {1},
+  pages     = {217--242},
+  publisher = {Oxford University Press},
+  title     = {Confidence intervals for low dimensional parameters in high dimensional linear models},
+  volume    = {76},
+  year      = {2014}
 }
diff --git a/examples/plot_2D_simulation_example.py b/examples/plot_2D_simulation_example.py
index fe33ebaad..9b97e78d3 100644
--- a/examples/plot_2D_simulation_example.py
+++ b/examples/plot_2D_simulation_example.py
@@ -9,11 +9,10 @@
 features. Among those methods some leverage the spatial structure of the
 data. For more details about the inference algorithms presented in this
 example or about the generative process used to simulate the data,
-please refer to Chevalier et al. (2021) [1]_.
+please refer to :footcite:t:`chevalier2022spatially`.
 
 This example corresponds to the experiment described in details in
-Chevalier et al. (2021) [1]_. Shortly, to simulate the data, we draw
-``n_samples`` i.i.d Gaussian vectors of size ``n_features`` and reshape them
+:footcite:t:`chevalier2022spatially`. Shortly, to simulate the data, we draw
 into squares (edges are equal to ``n_features ** (1/2)``). Then, to introduce
 some spatial structure, we apply a Gaussian filter that correlates features
 that are nearby. The 2D data are then flattened into a design matrix ``X`` to
@@ -29,7 +28,7 @@
 structure of the data are relevant. More precisely, we show that clustered
 inference algorithms (e.g., CluDL) and ensembled clustered inference algorithms
 (e.g., EnCluDL) are more powerful than the standard inference methods (see also
-Chevalier et al. (2021) [1]_). Indeed, when the number of features is much
+:footcite:t:`chevalier2022spatially`). Indeed, when the number of features is much
 greater than the number of samples, standard statistical methods are
 unlikely to recover the support. Then, the idea of clustered inference is to
 compress the data without breaking the spatial structure, leading to a
@@ -42,15 +41,11 @@
 significantly the spatial uncertainty compared to clustered inference
 algorithms which consider only one spatial compression.
 
-.. _References:
-
 References
 ----------
-.. [1] Chevalier, J. A., Nguyen, T. B., Thirion, B., & Salmon, J. (2021).
-       Spatially relaxed inference on high-dimensional linear models.
-       arXiv preprint arXiv:2106.02590.
-"""
+.. footbibliography::
 
+"""
 import matplotlib.pyplot as plt
 
 #############################################################################
@@ -61,10 +56,7 @@
 from sklearn.feature_extraction import image
 
 from hidimstat.clustered_inference import clustered_inference
-from hidimstat.desparsified_lasso import (
-    desparsified_lasso,
-    desparsified_lasso_pvalue,
-)
+from hidimstat.desparsified_lasso import desparsified_lasso, desparsified_lasso_pvalue
 from hidimstat.ensemble_clustered_inference import ensemble_clustered_inference
 from hidimstat.scenario import multivariate_simulation
 from hidimstat.stat_tools import zscore_from_pval
@@ -184,7 +176,7 @@ def plot(maps, titles):
 # the required spatial tolerance (small clusters lead to limited spatial
 # uncertainty). Formally, "spatial tolerance" is defined by the largest
 # distance from the true support for which the occurence of a false discovery
-# is not statistically controlled (c.f. :ref:`References`).
+# is not statistically controlled (c.f. :footcite:t:`chevalier2022spatially`).
 # Theoretically, the spatial tolerance ``delta`` is equal to the largest
 # cluster diameter. However this choice is conservative, notably in the case
 # of ensembled clustered inference. For these algorithms, we recommend to take
@@ -256,8 +248,8 @@ def plot(maps, titles):
 
 #############################################################################
 # Now, we compute the support estimated using a clustered inference algorithm
-# (c.f. :ref:`References`) called Clustered Desparsified Lasso (CluDL) since it
-# uses the Desparsified Lasso technique after clustering the data.
+# (c.f. :footcite:t:`chevalier2022spatially`) called Clustered Desparsified Lasso
+# (CluDL) since it uses the Desparsified Lasso technique after clustering the data.
 
 # Define the FeatureAgglomeration object that performs the clustering.
 # This object is necessary to run the current algorithm and the following one.
@@ -282,7 +274,7 @@ def plot(maps, titles):
 
 #############################################################################
 # Finally, we compute the support estimated by an ensembled clustered
-# inference algorithm (c.f. :ref:`References`). This algorithm is called
+# inference algorithm (c.f. :footcite:t:`chevalier2022spatially`). This algorithm is called
 # Ensemble of Clustered Desparsified Lasso (EnCluDL) since it runs several
 # CluDL algorithms with different clustering choices. The different CluDL
 # solutions are then aggregated into one.
diff --git a/examples/plot_fmri_data_example.py b/examples/plot_fmri_data_example.py
index c7c0156eb..4649088b5 100644
--- a/examples/plot_fmri_data_example.py
+++ b/examples/plot_fmri_data_example.py
@@ -12,7 +12,7 @@
 
 In this example, we show that standard statistical methods (i.e., method
 such as thresholding by permutation test the SVR or Ridge decoder or the
-algorithm introduced by Gaonkar et al. [1]_) are not powerful when applied on
+algorithm introduced by :footcite:t:`gaonkar_deriving_2012`) are not powerful when applied on
 the uncompressed problem (i.e., the orignal problem in which the activation
 maps are not reduced using compression techniques such as parcellation).
 This is notably due to the high dimensionality (too many voxels) and
@@ -24,20 +24,13 @@
 adds a randomization step over the choice of clustering.
 
 EnCluDL is powerful and does not depend on a unique clustering choice.
-As shown in Chevalier et al. (2021) [2]_, for several tasks the estimated
+As shown in :footcite:t:`chevalier2021decoding`, for several tasks the estimated
 support (predictive regions) looks relevant.
 
 References
 ----------
-.. [1] Gaonkar, B., & Davatzikos, C. (2012, October). Deriving statistical
-       significance maps for SVM based image classification and group
-       comparisons. In International Conference on Medical Image Computing
-       and Computer-Assisted Intervention (pp. 723-730). Springer, Berlin,
-       Heidelberg.
-
-.. [2] Chevalier, J. A., Nguyen, T. B., Salmon, J., Varoquaux, G.,
-       & Thirion, B. (2021). Decoding with confidence: Statistical
-       control on decoder maps. NeuroImage, 234, 117921.
+.. footbibliography::
+
 """
 
 #############################################################################
diff --git a/examples/plot_knockoff_aggregation.py b/examples/plot_knockoff_aggregation.py
index 2f8fcef8b..751dd7e40 100644
--- a/examples/plot_knockoff_aggregation.py
+++ b/examples/plot_knockoff_aggregation.py
@@ -3,7 +3,7 @@
 ======================================
 
 In this example, we show an example of variable selection using
-model-X Knockoffs introduced by :footcite:t:`Candes_2018`. A notable
+model-X Knockoffs introduced by :footcite:t:`candes2018panning`. A notable
 drawback of this procedure is the randomness associated with
 the knockoff generation process. This can result in unstable
 inference.
@@ -22,18 +22,18 @@
 # Imports needed for this script
 # ------------------------------
 
+import matplotlib.pyplot as plt
 import numpy as np
-from sklearn.utils import check_random_state
 from sklearn.linear_model import LassoCV
 from sklearn.model_selection import KFold
-import matplotlib.pyplot as plt
+from sklearn.utils import check_random_state
 
 from hidimstat.data_simulation import simu_data
 from hidimstat.knockoffs import (
     model_x_knockoff,
-    model_x_knockoff_pvalue,
-    model_x_knockoff_bootstrap_quantile,
     model_x_knockoff_bootstrap_e_value,
+    model_x_knockoff_bootstrap_quantile,
+    model_x_knockoff_pvalue,
 )
 from hidimstat.utils import cal_fdp_power
 
diff --git a/src/hidimstat/__init__.py b/src/hidimstat/__init__.py
index 32db80feb..d03503da0 100644
--- a/src/hidimstat/__init__.py
+++ b/src/hidimstat/__init__.py
@@ -18,6 +18,7 @@
 from .multi_sample_split import aggregate_quantiles
 from .noise_std import reid
 from .permutation_importance import PermutationImportance
+from .utils import quantile_aggregation
 from .dcrt import dcrt_zero, dcrt_pvalue
 from .permutation_test import permutation_test, permutation_test_pval
 from .scenario import multivariate_1D_simulation
@@ -30,6 +31,7 @@
 
 __all__ = [
     "aggregate_quantiles",
+    "quantile_aggregation",
     "clustered_inference",
     "dcrt_zero",
     "dcrt_pvalue",
diff --git a/src/hidimstat/clustered_inference.py b/src/hidimstat/clustered_inference.py
index 23d498706..48769c07b 100644
--- a/src/hidimstat/clustered_inference.py
+++ b/src/hidimstat/clustered_inference.py
@@ -4,9 +4,9 @@
 from sklearn.utils.validation import check_memory
 
 from .desparsified_lasso import (
+    desparsified_group_lasso_pvalue,
     desparsified_lasso,
     desparsified_lasso_pvalue,
-    desparsified_group_lasso_pvalue,
 )
 
 
@@ -186,7 +186,9 @@ def clustered_inference(
     verbose=1,
     **kwargs,
 ):
-    """Clustered inference algorithm
+    """Clustered inference algorithm.
+
+    For more details, see :footcite:t:`chevalier2021decoding`.
 
     Parameters
     ----------
@@ -257,9 +259,7 @@ def clustered_inference(
 
     References
     ----------
-    .. [1] Chevalier, J. A., Nguyen, T. B., Thirion, B., & Salmon, J. (2021).
-           Spatially relaxed inference on high-dimensional linear models.
-           arXiv preprint arXiv:2106.02590.
+    .. footbibliography::
     """
     memory = check_memory(memory=memory)
 
diff --git a/src/hidimstat/dcrt.py b/src/hidimstat/dcrt.py
index a9a4ac641..697291280 100644
--- a/src/hidimstat/dcrt.py
+++ b/src/hidimstat/dcrt.py
@@ -1,12 +1,13 @@
 import numpy as np
 from joblib import Parallel, delayed
-from hidimstat.utils import _alpha_max, fdr_threshold
 from scipy import stats
 from sklearn.base import clone
-from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
+from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor
 from sklearn.linear_model import Lasso, LassoCV
 from sklearn.preprocessing import StandardScaler
 
+from hidimstat.utils import _alpha_max, fdr_threshold
+
 
 def dcrt_zero(
     X,
@@ -41,8 +42,9 @@ def dcrt_zero(
     """
     Implements distilled conditional randomization test (dCRT) without interactions.
 
-    A faster version of the Conditional Randomization Test :cite:`candes2018panning` using the distillation
-    process from :cite:`liu2022fast`. Based on original implementation at:
+    A faster version of the Conditional Randomization Test
+    :footcite:t:`candes2018panning` using the distillation process from
+    :footcite:t:`liu2022fast`. Based on original implementation at:
     https://github.com/moleibobliu/Distillation-CRT/
 
     Parameters
@@ -119,7 +121,7 @@ def dcrt_zero(
 
     ## Screening of variables for accelarate dCRT
     if estimated_coef is None:
-        # base on the Theorem 2 of :cite:`liu2022fast`, the rule of screening
+        # base on the Theorem 2 of :footcite:t:`liu2022fast`, the rule of screening
         # is based on a cross-validated lasso
         clf_screening, alpha_screening = _fit_lasso(
             X_,
diff --git a/src/hidimstat/desparsified_lasso.py b/src/hidimstat/desparsified_lasso.py
index 5bc2bb131..eaf6822e3 100644
--- a/src/hidimstat/desparsified_lasso.py
+++ b/src/hidimstat/desparsified_lasso.py
@@ -7,8 +7,7 @@
 from sklearn.utils.validation import check_memory
 
 from hidimstat.noise_std import reid
-from hidimstat.stat_tools import pval_from_two_sided_pval_and_sign
-from hidimstat.stat_tools import pval_from_cb
+from hidimstat.stat_tools import pval_from_cb, pval_from_two_sided_pval_and_sign
 from hidimstat.utils import _alpha_max
 
 
@@ -36,7 +35,7 @@ def desparsified_lasso(
     Desparsified Lasso
 
     Algorithm based on Algorithm 1 of d-Lasso and d-MTLasso in
-    :cite:`chevalier2020statistical`.
+    :footcite:t:`chevalier2020statistical`.
 
     Parameters
     ----------
@@ -93,7 +92,7 @@ def desparsified_lasso(
     noise_method : {'AR', 'median'}, default='AR'
         Method to estimate noise covariance:
         - 'median': Uses median correlation between consecutive
-                    timepoints
+        timepoints
         - 'AR': Fits autoregressive model of specified order
 
     order : int, default=1
@@ -123,6 +122,8 @@ def desparsified_lasso(
     the consideration of unecessary additional parameters.
     Also, you may consider to center and scale `X` beforehand, notably if
     the data contained in `X` has not been prescaled from measurements.
+    Other relevant references: :footcite:t:`van2014asymptotically`,
+    :footcite:t:`zhang2014confidence`.
 
     References
     ----------
@@ -225,6 +226,7 @@ def desparsified_lasso_pvalue(
     This function computes confidence intervals for the desparsified lasso
     estimator beta_hat.
     It can also return p-values derived from these confidence intervals.
+
     Parameters
     ----------
     n_samples : float
@@ -242,6 +244,7 @@ def desparsified_lasso_pvalue(
         Currently only "norm" supported.
     epsilon : float, default=1e-14
         Small value to avoid numerical issues in p-value calculation.
+
     Returns
     -------
     pval : ndarray, shape (n_features,)
@@ -408,7 +411,7 @@ def _compute_all_residuals(
 
     Notes
     -----
-    This implements the nodewise Lasso procedure from :cite:`chevalier2020statistical`
+    This implements the nodewise Lasso procedure from :footcite:t:`chevalier2020statistical`
     for estimating entries of the precision matrix needed in the
     desparsified Lasso. The procedure regresses each feature against
     all others using Lasso to obtain residuals and precision matrix estimates.
diff --git a/src/hidimstat/ensemble_clustered_inference.py b/src/hidimstat/ensemble_clustered_inference.py
index 4ace8bd66..82275671c 100644
--- a/src/hidimstat/ensemble_clustered_inference.py
+++ b/src/hidimstat/ensemble_clustered_inference.py
@@ -62,7 +62,9 @@ def ensemble_clustered_inference(
     verbose=1,
     **kwargs,
 ):
-    """Ensemble clustered inference algorithm
+    """Ensemble clustered inference algorithm.
+
+    For more details, see :footcite:t:`chevalier2021decoding`.
 
     Parameters
     ----------
@@ -147,9 +149,7 @@ def ensemble_clustered_inference(
 
     References
     ----------
-    .. [1] Chevalier, J. A., Nguyen, T. B., Thirion, B., & Salmon, J. (2021).
-           Spatially relaxed inference on high-dimensional linear models.
-           arXiv preprint arXiv:2106.02590.
+    .. footbibliography::
     """
 
     memory = check_memory(memory=memory)
diff --git a/src/hidimstat/gaussian_knockoff.py b/src/hidimstat/gaussian_knockoff.py
index ed766b911..89a6d1f2f 100644
--- a/src/hidimstat/gaussian_knockoff.py
+++ b/src/hidimstat/gaussian_knockoff.py
@@ -1,4 +1,5 @@
 import warnings
+
 import numpy as np
 
 
@@ -7,8 +8,8 @@ def gaussian_knockoff_generation(X, mu, sigma, seed=None, tol=1e-14):
     Generate second-order knockoff variables using the equi-correlated method.
 
     This function generates knockoff variables for a given design matrix X,
-    using the equi-correlated method described in :cite:`barber2015controlling`
-    and :cite:`candes2018panning`. The function takes as input the design matrix
+    using the equi-correlated method described in :footcite:t:`barber2015controlling`
+    and :footcite:t:`candes2018panning`. The function takes as input the design matrix
     X, the vector of empirical mean values mu, and the empirical covariance
     matrix sigma. It returns the knockoff variables X_tilde.
 
@@ -126,8 +127,8 @@ def _s_equi(sigma, tol=1e-14):
 
     This function estimates the diagonal matrix of correlation
     between real and knockoff variables using the equi-correlated
-    equation described in :cite:`barber2015controlling` and
-    :cite:`candes2018panning`. It takes as input the empirical
+    equation described in :footcite:t:`barber2015controlling` and
+    :footcite:t:`candes2018panning`. It takes as input the empirical
     covariance matrix sigma and a tolerance value tol,
     and returns a vector of diagonal values of the estimated
     matrix diag{s}.
diff --git a/src/hidimstat/knockoffs.py b/src/hidimstat/knockoffs.py
index 72bee26a7..43685783d 100644
--- a/src/hidimstat/knockoffs.py
+++ b/src/hidimstat/knockoffs.py
@@ -1,11 +1,11 @@
 import numpy as np
-from sklearn.preprocessing import StandardScaler
+from joblib import Parallel, delayed
 from sklearn.covariance import LedoitWolf
 from sklearn.linear_model import LassoCV
 from sklearn.model_selection import KFold
+from sklearn.preprocessing import StandardScaler
 from sklearn.utils import check_random_state
 from sklearn.utils.validation import check_memory
-from joblib import Parallel, delayed
 
 from hidimstat.gaussian_knockoff import (
     gaussian_knockoff_generation,
@@ -91,8 +91,8 @@ def model_x_knockoff(
     Model-X Knockoff
 
     This module implements the Model-X knockoff inference procedure, which is an approach
-    to control the False Discovery Rate (FDR) based on :cite:`candes2018panning`. The original
-    implementation can be found at
+    to control the False Discovery Rate (FDR) based on :footcite:t:`candes2018panning`.
+    The original implementation can be found at
     https://github.com/msesia/knockoff-filter/blob/master/R/knockoff/R/knockoff_filter.R
     The noisy variables are generated with second-order knockoff variables using the equi-correlated method.
 
@@ -113,15 +113,19 @@ def model_x_knockoff(
         This can be any estimator with a `fit` method that accepts a 2D array and
         a 1D array, and a `coef_` attribute that returns a 1D array of coefficients.
         Examples include LassoCV, LogisticRegressionCV, and LinearRegression.
-        Configuration example:
-            LassoCV(alphas=alphas, n_jobs=None, verbose=0, max_iter=1000,
-                cv=KFold(n_splits=5, shuffle=True, random_state=0), tol=1e-8)
-            LogisticRegressionCV(penalty="l1", max_iter=1000, solver="liblinear",
-                cv=KFold(n_splits=5, shuffle=True, random_state=0), n_jobs=None,
-                tol=1e-8)
-            LogisticRegressionCV(penalty="l2", max_iter=1000, n_jobs=None,
-                verbose=0, cv=KFold(n_splits=5, shuffle=True, random_state=0),
-                tol=1e-8,)
+
+        *Configuration example:*
+
+        | LassoCV(alphas=alphas, n_jobs=None, verbose=0, max_iter=1000,
+        | cv=KFold(n_splits=5, shuffle=True, random_state=0), tol=1e-8)
+
+        | LogisticRegressionCV(penalty="l1", max_iter=1000, solver="liblinear",
+        | cv=KFold(n_splits=5, shuffle=True, random_state=0), n_jobs=None,
+        | tol=1e-8)
+
+        | LogisticRegressionCV(penalty="l2", max_iter=1000, n_jobs=None,
+        | verbose=0, cv=KFold(n_splits=5, shuffle=True, random_state=0),
+        | tol=1e-8,)
 
     preconfigure_estimator : callable, default=preconfigure_estimator_LassoCV
         A function that configures the estimator for the Model-X knockoff procedure.
diff --git a/src/hidimstat/leave_one_covariate_out.py b/src/hidimstat/leave_one_covariate_out.py
index d15cbc68f..8813f4918 100644
--- a/src/hidimstat/leave_one_covariate_out.py
+++ b/src/hidimstat/leave_one_covariate_out.py
@@ -17,9 +17,10 @@ def __init__(
     ):
         """
         Leave-One-Covariate-Out (LOCO) as presented in
-        :footcite:t:`Williamson_General_2023`. The model is re-fitted for each variable/
-        group of variables. The importance is then computed as the difference between
-        the loss of the full model and the loss of the model without the variable/group.
+        :footcite:t:`lei2018distribution` and :footcite:t:`verdinelli2024feature`.
+        The model is re-fitted for each variable/group of variables. The importance is
+        then computed as the difference between the loss of the full model and the loss
+        of the model without the variable/group.
 
         Parameters
         ----------
@@ -36,6 +37,11 @@ def __init__(
             The number of jobs to run in parallel. Parallelization is done over the
             variables or groups of variables.
 
+        Notes
+        -----
+        :footcite:t:`Williamson_General_2023` also presented a LOCO method with an
+        additional data splitting strategy.
+
         References
         ----------
         .. footbibliography::
diff --git a/src/hidimstat/multi_sample_split.py b/src/hidimstat/multi_sample_split.py
index a4eb24642..19214fa5f 100644
--- a/src/hidimstat/multi_sample_split.py
+++ b/src/hidimstat/multi_sample_split.py
@@ -4,6 +4,8 @@
 def aggregate_medians(list_one_sided_pval):
     """Aggregation of survival function values taking twice the median
 
+    For me details, see:footcite:t:`meinshausen2009pvalues`.
+
     Parameters
     ----------
     list_one_sided_pval : ndarray, shape (n_iter, n_features)
@@ -16,9 +18,7 @@ def aggregate_medians(list_one_sided_pval):
 
     References
     ----------
-    .. [1] Meinshausen, N., Meier, L., & Bühlmann, P. (2009). P-values for
-           high-dimensional regression. Journal of the American Statistical
-           Association, 104(488), 1671-1681.
+    .. footbibliography::
     """
 
     n_iter, n_features = list_one_sided_pval.shape
@@ -37,6 +37,8 @@ def aggregate_medians(list_one_sided_pval):
 def aggregate_quantiles(list_one_sided_pval, gamma_min=0.2):
     """Aggregation of survival function values by adaptive quantile procedure
 
+    For more details, see :footcite:t:`meinshausen2009pvalues`
+
     Parameters
     ----------
     list_one_sided_pval : ndarray, shape (n_iter, n_features)
@@ -44,7 +46,7 @@ def aggregate_quantiles(list_one_sided_pval, gamma_min=0.2):
 
     gamma_min : float, optional (default=0.2)
         Lowest gamma-quantile being considered to compute the adaptive
-        quantile aggregation formula (cf. [1]_).
+        quantile aggregation formula.
 
     Returns
     -------
@@ -53,9 +55,7 @@ def aggregate_quantiles(list_one_sided_pval, gamma_min=0.2):
 
     References
     ----------
-    .. [1] Meinshausen, N., Meier, L., & Bühlmann, P. (2009). P-values for
-           high-dimensional regression. Journal of the American Statistical
-           Association, 104(488), 1671-1681.
+    .. footbibliography::
     """
 
     n_iter, n_features = list_one_sided_pval.shape
diff --git a/src/hidimstat/noise_std.py b/src/hidimstat/noise_std.py
index bce146e23..765cd839c 100644
--- a/src/hidimstat/noise_std.py
+++ b/src/hidimstat/noise_std.py
@@ -24,12 +24,12 @@ def reid(
     estimation.
 
     This implementation follows the procedure described in
-    :footcite:`fan2012variance` and :cite:`reid2016study`. It uses Lasso with
+    :footcite:t:`fan2012variance` and :footcite:t:`reid2016study`. It uses Lasso with
     cross-validation to estimate both the noise standard deviation and model
     coefficients.
 
     For group, the implementation is based on the procedure
-    from :footcite:`chevalier2020statistical`.
+    from :footcite:t:`chevalier2020statistical`.
 
     Parameters
     ----------
diff --git a/src/hidimstat/permutation_importance.py b/src/hidimstat/permutation_importance.py
index d0c16e902..efe24b95c 100644
--- a/src/hidimstat/permutation_importance.py
+++ b/src/hidimstat/permutation_importance.py
@@ -20,6 +20,7 @@ def __init__(
         :footcite:t:`breimanRandomForests2001`. For each variable/group of variables,
         the importance is computed as the difference between the loss of the initial
         model and the loss of the model with the variable/group permuted.
+        The method was also used in :footcite:t:`mi2021permutation`
 
         Parameters
         ----------
diff --git a/src/hidimstat/utils.py b/src/hidimstat/utils.py
index 4ce33d9f9..750ad378d 100644
--- a/src/hidimstat/utils.py
+++ b/src/hidimstat/utils.py
@@ -4,7 +4,9 @@
 ########################## quantile aggregation method ##########################
 def quantile_aggregation(pvals, gamma=0.05, n_grid=20, adaptive=False):
     """
-    Implements the quantile aggregation method for p-values based on :cite:meinshausen2009p.
+    Implements the quantile aggregation method for p-values.
+
+    This method is based on :footcite:t:meinshausen2009pvalues.
 
     The function aggregates multiple p-values into a single p-value while controlling
     the family-wise error rate. It supports both fixed and adaptive quantile aggregation.
@@ -50,7 +52,9 @@ def quantile_aggregation(pvals, gamma=0.05, n_grid=20, adaptive=False):
 
 def _fixed_quantile_aggregation(pvals, gamma=0.5):
     """
-    Quantile aggregation function based on :cite:meinshausen2009p
+    Quantile aggregation function
+
+    For more details, see footcite:t:meinshausen2009pvalues
 
     Parameters
     ----------
@@ -70,14 +74,16 @@ def _fixed_quantile_aggregation(pvals, gamma=0.5):
     .. footbibliography::
     """
     assert gamma > 0 and gamma <= 1, "gamma should be between O and 1"
-    # equation 2.2 of meinshausen2009p
+    # equation 2.2 of meinshausen2009pvalues
     converted_score = (1 / gamma) * (np.percentile(pvals, q=100 * gamma, axis=0))
     return np.minimum(1, converted_score)
 
 
 def _adaptive_quantile_aggregation(pvals, gamma_min=0.05, n_grid=20):
     """
-    Adaptive version of quantile aggregation method based on :cite:meinshausen2009p
+    Adaptive version of quantile aggregation method
+
+    For more details, see footcite:t:meinshausen2009pvalues
 
     Parameters
     ----------


Reviews:
user: login: lionelkusch
body: some unnecessary modifications. 
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-08T17:55:40Z
user: login: jpaillard
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-09T07:33:54Z
user: login: lionelkusch
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-09T07:59:05Z
user: login: lionelkusch
body: thank you for all ordering the bib file and deleted the additional reference. 
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-09T09:36:30Z
user: login: bthirion
body: Apart from a small glitch, LGTM
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-09T19:18:40Z
user: login: jpaillard
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-10T07:35:02Z

Review comments:
diff_hunk: @@ -1,4 +1,5 @@
 import warnings
+
path: src/hidimstat/gaussian_knockoff.py
user: login: lionelkusch
body: ```suggestion
```
created_at: 2025-04-08T17:54:49Z
author_association: COLLABORATOR
diff_hunk: @@ -188,3 +189,4 @@ def _s_equi(sigma, tol=1e-14):
     s = s * (1 - s_eps)
 
     return s * np.diag(sigma)
+    return s * np.diag(sigma)
path: src/hidimstat/gaussian_knockoff.py
user: login: lionelkusch
body: ```suggestion
```
created_at: 2025-04-08T17:55:06Z
author_association: COLLABORATOR
diff_hunk: @@ -1,4 +1,5 @@
 import warnings
+
path: src/hidimstat/gaussian_knockoff.py
user: login: jpaillard
body: warning is standard library, numpy is not and my formater automatically adds the space. isn't it surprising that it didn't trigger the linter in the CI ? 
Can we keep this change?
created_at: 2025-04-09T07:33:54Z
author_association: COLLABORATOR
diff_hunk: @@ -1,4 +1,5 @@
 import warnings
+
path: src/hidimstat/gaussian_knockoff.py
user: login: lionelkusch
body: Your linter has more formatting than the one we use.
We use black, which doesn't care about it.
created_at: 2025-04-09T07:59:05Z
author_association: COLLABORATOR
diff_hunk: @@ -654,3 +656,4 @@ def _fit_lasso(
         )
         clf.fit(X, y)
     return clf, alpha
+    return clf, alpha
path: src/hidimstat/dcrt.py
user: login: bthirion
body: ?
created_at: 2025-04-09T19:17:42Z
author_association: COLLABORATOR
diff_hunk: @@ -654,3 +656,4 @@ def _fit_lasso(
         )
         clf.fit(X, y)
     return clf, alpha
+    return clf, alpha
path: src/hidimstat/dcrt.py
user: login: jpaillard
body: strange, happened to me for the 2nd time 🤷 
created_at: 2025-04-10T07:35:01Z
author_association: COLLABORATOR

PR comments:
user: login: lionelkusch
created_at: 2025-04-08T17:53:35Z
body: There are these errors in the building the documentation:
```
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Too many autonumbered footnote references: only 0 corresponding footnotes available. [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-meinshausen-2008". [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-chevalier2021decoding". [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-chevalier2021decoding". [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/auto_examples/plot_knockoff_aggregation.rst:24: WARNING: could not find bibtex key "Candes_2018" [bibtex.key_not_found]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/multi_sample_split.py:docstring of hidimstat.multi_sample_split.aggregate_quantiles:12: ERROR: Unknown target name: "1". [docutils]
WARNING: Failed to get a function signature for hidimstat.data_simulation: <module 'hidimstat.data_simulation' from '/home/runner/work/hidimstat/hidimstat/src/hidimstat/data_simulation.py'> is not a callable object
/home/runner/work/hidimstat/hidimstat/doc_conf/generated/hidimstat.data_simulation.rst:8: CRITICAL: Problems with "include" directive path:
InputError: [Errno 2] No such file or directory: 'doc_conf/generated/hidimstat.data_simulation.hidimstat.data_simulation.examples'. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso:62: ERROR: Unexpected indentation. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso:63: WARNING: Block quote ends without a blank line; unexpected unindent. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso_pvalue:9: ERROR: Unexpected indentation. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso_pvalue:10: WARNING: Block quote ends without a blank line; unexpected unindent. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso_pvalue:23: WARNING: Definition list ends without a blank line; unexpected unindent. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/knockoffs.py:docstring of hidimstat.knockoffs.model_x_knockoff:28: ERROR: Unexpected indentation. [docutils]
```

Do you have time to look at it?
author_association: COLLABORATOR
user: login: jpaillard
created_at: 2025-04-09T07:34:25Z
body: should solve #225 
author_association: COLLABORATOR
user: login: lionelkusch
created_at: 2025-04-09T09:38:45Z
body: There are still these errors:
```
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Too many autonumbered footnote references: only 0 corresponding footnotes available. [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-meinshausen2009pvalues". [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-chevalier2021decoding". [docutils]
/home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-chevalier2021decoding". [docutils]
WARNING: Failed to get a function signature for hidimstat.data_simulation: <module 'hidimstat.data_simulation' from '/home/runner/work/hidimstat/hidimstat/src/hidimstat/data_simulation.py'> is not a callable object
/home/runner/work/hidimstat/hidimstat/doc_conf/generated/hidimstat.data_simulation.rst:8: CRITICAL: Problems with "include" directive path:
InputError: [Errno 2] No such file or directory: 'doc_conf/generated/hidimstat.data_simulation.hidimstat.data_simulation.examples'. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso:62: ERROR: Unexpected indentation. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso:63: WARNING: Block quote ends without a blank line; unexpected unindent. [docutils]
/home/runner/work/hidimstat/hidimstat/src/hidimstat/knockoffs.py:docstring of hidimstat.knockoffs.model_x_knockoff:28: ERROR: Unexpected indentation. [docutils]
```
Do plan to solve in this PR or in another one?
author_association: COLLABORATOR
user: login: jpaillard
created_at: 2025-04-09T10:22:16Z
body: I don't currently see how to fix them
author_association: COLLABORATOR
user: login: lionelkusch
created_at: 2025-04-09T13:24:51Z
body: [Tips](https://groups.google.com/g/sphinx-users/c/Xa-73qn-6Bo):
"You might try to copy the docstring (without the quotes!) to a text file and run Docutil's rst2html.py on it to get more info."
author_association: COLLABORATOR
user: login: lionelkusch
created_at: 2025-04-09T15:08:12Z
body: I fix the issue me

> There are still these errors:
> 
> ```
> /home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Too many autonumbered footnote references: only 0 corresponding footnotes available. [docutils]
> /home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-meinshausen2009pvalues". [docutils]
> /home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-chevalier2021decoding". [docutils]
> /home/runner/work/hidimstat/hidimstat/doc_conf/api.rst:34:<autosummary>:1: ERROR: Unknown target name: "footcite-chevalier2021decoding". [docutils]
> WARNING: Failed to get a function signature for hidimstat.data_simulation: <module 'hidimstat.data_simulation' from '/home/runner/work/hidimstat/hidimstat/src/hidimstat/data_simulation.py'> is not a callable object
> /home/runner/work/hidimstat/hidimstat/doc_conf/generated/hidimstat.data_simulation.rst:8: CRITICAL: Problems with "include" directive path:
> InputError: [Errno 2] No such file or directory: 'doc_conf/generated/hidimstat.data_simulation.hidimstat.data_simulation.examples'. [docutils]
> /home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso:62: ERROR: Unexpected indentation. [docutils]
> /home/runner/work/hidimstat/hidimstat/src/hidimstat/desparsified_lasso.py:docstring of hidimstat.desparsified_lasso.desparsified_lasso:63: WARNING: Block quote ends without a blank line; unexpected unindent. [docutils]
> /home/runner/work/hidimstat/hidimstat/src/hidimstat/knockoffs.py:docstring of hidimstat.knockoffs.model_x_knockoff:28: ERROR: Unexpected indentation. [docutils]
> ```

I fixed the issues:
-  Unknown target name: "footcite-...."  is due to foot citation in the short title
- data_simulation.py is a module and not a function. I removed it from the api
- ERROR: Unexpected indentation. [docutils] is due to an error of indexation in the subsection of parameters. (Use the rst2html to debug it.)
- Fix undefined reference in 2D example.

author_association: COLLABORATOR
user: login: jpaillard
created_at: 2025-04-10T07:52:21Z
body: It's all good on my side
author_association: COLLABORATOR