概要:给定一组时间序列(例如通过上篇博客中提到的方法在一群人的fmri数据中提取的时间序列集),功能连接组是表示不同的大脑区域之间的相互作用的连接。今天分享的是利用稀疏逆协方差去获取功能连接组,重点放在脑区之间的直接连接。 1. 用于功能连接组的稀疏逆协方差 静息状态功能连接可以通过估测不同脑区之间的信号的协方差(或者相关性)矩阵的方法得到,相同的信息可以表示为赋权图,图的节点是不同的脑区,边的权重代表协方差(高斯图形模型)。协方差矩阵的系数反应的是直接或者间接连接,如果协方差矩阵来自非常稠密的脑连接组,所以很难提取出两个脑区之间的直接连接。 现在更多的研究者对使用逆协方差矩(精度矩阵)阵更感兴趣,它只能给出脑区之间的直接连接,因为它只包含局部的协方差。 为了很好的得到脑区之间的结构连接,构建一个稀疏逆协方差估计器是很有必要的。应用在scikit-learn库中的GraphLasso估计器就是很好的选择。 代码:
代码语言:javascript复制from fatchData import FatchData
fMRIData = FatchData(r'E:homefMRIData_973NC_01_0001rs6_f8dGR_w3_rabrat_4D.nii')
TimeSeries = fMRIData.GetTimeSeries('altas').TimeSeries
RegionLabels = fMRIData.GetTimeSeries('altas').Labels
Atlas = fMRIData.GetTimeSeries('altas').Atlas
print(TimeSeries.shape)
print(RegionLabels)
from sklearn.covariance import GraphLassoCV
Estimator = GraphLassoCV()
Estimator.fit(TimeSeries)
Estimator.precision_
# Display the correlation matrix
import numpy as np
from matplotlib import pyplot as plt
plt.figure(figsize=(10, 10))
# Mask out the major diagonal
np.fill_diagonal(Estimator.precision_, 0)
plt.imshow(Estimator.precision_, interpolation="nearest", cmap="RdBu_r",
vmax=0.8, vmin=-0.8)
plt.colorbar()
# And display the RegionLabels
x_ticks = plt.xticks(range(len(RegionLabels)), RegionLabels, rotation=90)
y_ticks = plt.yticks(range(len(RegionLabels)), RegionLabels)
############################################################################
# And now display the corresponding graph
from nilearn import plotting
coords = Atlas
# We threshold to keep only the 20% of edges with the highest value
# because the graph is very dense
plotting.plot_connectome(Estimator.precision_, coords,
edge_threshold="80%", colorbar=True)
plotting.show()
运行结果: (1)利用精度矩阵(协方差逆矩阵)得到的结果:
(2)利用协方差矩阵得到的结果:
对比两个图像可以发现,利用精度矩阵得到的连接更少.
3.2 群体层面的稀疏逆协方差 为了能够提取群体被试的稀疏逆协方差矩阵,我们可能更关心多个连接组中的一个,不同的被试的稀疏逆协方差矩阵的结构一样,但是连接值不一样。 对于这个问题,nilearn提供了群体估计器:nilearn.connectome.GroupSparseCovarianceCV estimator. 它的用法如下:
代码语言:javascript复制Estimator =nilearn.connectome.GroupSparseCovarianceCV
Estimator.fit([timeseries1,timeseries2,…])
估计器的输入参数是每个被试的时间序列(在1中已得到)的列表,计算结束后估计器为每个时间序列得到一个协方差矩阵和精度矩阵,例如第一个时间序列对应的稀疏协方差矩阵和稀疏逆协方差矩阵:
代码语言:javascript复制estimator.covariances_[0]
estimator.precisions_[0]
现在更多的焦点放在多被试的群体数据分析,在实际应用中,在对连接矩阵系数进行统计学分析的时候遇到的挑战是系数的数量随着脑区数量的增长而增多,导致对多个比较的校正对统计效率造成负担。 这种情况下,使用 GroupSparseCovariance作为估计器并且设置很高的alpha值,这种玄真人将会对每个被试者的精度矩阵执行更强的稀疏性,由于稀疏度对于每个被试都是常见的,因此可以仅对非零系数进行群体分析。