计算matrix-R和Python之间的相关性返回不同的结果



让我们假设矩阵X和Y的大小分别为2x3和2x2。R中的函数"cor"返回一个3x2矩阵,而Python中的函数numpy.corrcove返回一个5x5矩阵。以下示例:

R:

X<-matrix(c(0.2,0.5,0.1,0.7,0.5,0.3), nrow=2, ncol=3)
Y<-matrix(c(0.2,0.3,0.6,0.7), nrow=2)
cor(X,Y)
[,1] [,2]
[1,]    1    1
[2,]    1    1
[3,]   -1   -1

Python:

X = np.array([[0.2,0.5], [0.1, 0.7], [0.5,0.3]], ndmin=2).T
Y = np.array([[0.2,0.3],[0.6,0.7]], ndmin=2).T
corr = np.corrcoef(X, Y, rowvar=False)
array([[ 1.,  1., -1.,  1.,  1.],
[ 1.,  1., -1.,  1.,  1.],
[-1., -1.,  1., -1., -1.],
[ 1.,  1., -1.,  1.,  1.],
[ 1.,  1., -1.,  1.,  1.]])

如何让python返回像R中那样的3x2矩阵?或者,我应该如何在Python的5x5矩阵中选择正确的值,使其与R的结果相匹配?

在R中,当xy是矩阵时,cor(x,y)将返回x(n=3(的列与y(n=2(的列的相关性。在python中,可以使用正确的索引对np.corrcoef()的结果进行切片,在本例中,对于结果的x(行(和y(列(,索引分别为3和2。

np.corrcoef(X,Y)[0:3,0:2]
array([[ 1.,  1.],
[ 1.,  1.],
[-1., -1.]])

最新更新