天天看点

关于Pearson相关系数是否要事先标准化数据的问题

博主写论文的时候,整理代码,突然发现以前预处理大脑Fmri时间序列的代码好像没有标准化数据。

而博主的训练模型所使用的特征都是以Pearson的值为基础的。吓得博主惊出了一声冷汗。赶快看一下有无影响。

但是根据Pearson的公式来看,应该是影响不大的,协方差除以两个数据的标准差之积,感觉已经包含了标准化的过程。

关于Pearson相关系数是否要事先标准化数据的问题

​​皮尔森相关系数(Pearson correlation coefficient)​​,这篇文章介绍得比较详细

但是为了让自己安心,还是试验一下。

我们先对大脑ROI的时间序列数据直接计算Pearson相关系数。

在神经科学领域,对两个大脑ROI的时间序列计算Pearson视为两个大脑的功能连接程度。

第一条ROI的时间序列数据:X

关于Pearson相关系数是否要事先标准化数据的问题

第二条ROI的时间序列数据:Y

关于Pearson相关系数是否要事先标准化数据的问题

​​数据规范化(归一化)、及Z-score标准化​​ 我们这里使用Z-score标准化,减去均值后除以标准差

X_mean = np.mean(X,axis=0)
 Y_mean = np.mean(Y,axis=0)
 X_std =  np.std(X,axis=0)
 Y_std = np.std(Y,axis=0)

 X_zscore = (X-X_mean)/X_std
 Y_zscore = (Y-Y_mean)/Y_std      

标准化后的第一个ROI的时间序列:

关于Pearson相关系数是否要事先标准化数据的问题

标准化后的第二个ROI的时间序列:

关于Pearson相关系数是否要事先标准化数据的问题

经过Z_score标准化之后,均值为0,标准差为1

使用pandas计算相关系数

cc = np.array([X, Y])
 cc_pd = pd.DataFrame(cc.T, columns=['c1', 'c2'])
 cc_corr = cc_pd.corr(method='pearson')  # 相关系数矩阵
 val =cc_corr.iloc[0,1]      
关于Pearson相关系数是否要事先标准化数据的问题

两次结果相差6e-16次方,看来影响是不大的。然后一个功能连接肯定不能说明全部,然后我就对所有功能连接都试验了一下

关于Pearson相关系数是否要事先标准化数据的问题

继续阅读