Matlab GUI小程序:对FC矩阵进行单因素方差分析

一、背景

在2022年的一个帖子中,我写了一个Matlab脚本对功能连接(FC)矩阵进行单因素方差分析和事后检验。由于没有图形界面,这个脚本对于不会使用Matlab编程的人来说没啥用处。现在有了大语言模型(Large Language Models, LLMs),编程变得更容易,所以我借助LLM试着写了一个简单的图形界面程序(Graphical User Interface, GUI)来实现相同的功能。

二、程序的使用和输入输出

  1. 在附件的压缩文件中,包含两个名为FC_ANOVA_GUI.mFC_ANOVA_Core.m的文件,前者用来生成一个图形界面,后者用来进行ANOVA分析。还包含一个名为ExampleData文件夹,在该文件夹下有三个子文件夹,命名为G1/G2/G3,分别存放着每一组被试的FC矩阵。这个样例数据来自于NBS工具包。

  2. 整个程序的分析过程是:读入每个被试的FC矩阵(矩阵中的每个元素表示任意两个脑区的皮尔逊相关系数)、提取下三角矩阵、对FC进行Fisher’s Z变换、对每个FC(也称为边)使用Matlab自带的anova1函数进行分析方差分析、使用Matlab自带的mafdr函数对方差分析的P值进行BH-FDR校正、对每个FC使用Matlab自带的ttest2函数进行(独立样本)双样本T检验。

  3. 在Matlab中,将当前路径切换到GUI程序所在目录(或者把GUI程序目录添加到搜索路径中),在命令行窗口中输入FC_ANOVA_GUI,会弹出如下图所示的界面,分别选择每组被试的FC文件以及保存分析结果的输出目录,然后选择Run ANOVA开始分析。

fig01.png

  1. 程序运行结束后,在指定的输出目录中,包含如下图所示的结果,其中ANOVA_Fmat.txtANOVA_pmat.txtANOVA_pmat_FDR.txtANOVA_sigmat.txt分别表示单因素方差分析中主效应的F值、P值、FDR校正后的P值、校正后P值是否显著的矩阵。G1G2_Tmat.txtG1G2_pmat.txt分别表示事后检验中组1和组2双样本T检验的T值和P值的矩阵。G1G3*.txtG2G3*.txt分别表示组1和组3、组2和组3比较的结果。

fig02.png
三、其他

这个程序我是在Linux系统下测试的,不确定在Windows下是否有问题。我对Matlab编程了解很少,所以很多地方需要优化,比如只能进行3组被试的分析、缺少对输入文件的检查(矩阵中可能包含缺失值)、缺少对结果的可视化等。为了确保结果的准确性,我在更为熟悉的R环境下进行了相同的分析,确保结果是一致的。尽管如此,这个程序仅用于学习交流,对于可能存在的错误,我不能负责。
FC_ANOVA.zip (320 KB)

我更新了一个版本,改变了输入文件的方式(如下图所示),通过输入一个组别标签文件,实现对任意多组的比较。如果是两组,那么ANOVA和T检验结果是一样的。

fig01.png

此外,对输出文件命名进行了调整(如下图所示),其中ANOVA_Smat.txt表示是否显著的矩阵(0表示不显著,1表示显著)。

fig02.png
FC_ANOVA.zip (319 KB)