两个矩阵之间的行相关
Row-wise correlation between two matrices
我有以下矩阵:
并且:
我想计算它们的逐行皮尔逊相关系数,我试过这些代码:
RowCor<- sapply(1:21, function(i) cor(EurodistCL.scl[i,], EurodistM.scl[i,], method = "pearson"))
并且:
cA <- EurodistCL.scl - rowMeans(EurodistCL.scl)
cB <- EurodistM.scl- rowMeans(EurodistM.scl)
sA <- sqrt(rowMeans(cA^2))
sB <- sqrt(rowMeans(cB^2))
rowMeans(cA * cB) / (sA * sB)
两者都给出相同的输出,一个 21 的相关向量。
虽然矩阵显然高度相关,但它们并非完全相关,因此我预计相关系数为 0.99 或 0.98
为什么我只得到一个?代码或理论有问题吗?
这是因为您只有两个值连续。即使是随机值也会给出 (+ 或 -) 1。试试这个
a <- runif(2)
b <- runif(2)
cor(a, b)
所以,这个理论是不正确的。虽然可以得到两个样本的相关系数,但是用处不大
要估计相关系数,需要两个以上的对应样本。
我有以下矩阵:
并且:
我想计算它们的逐行皮尔逊相关系数,我试过这些代码:
RowCor<- sapply(1:21, function(i) cor(EurodistCL.scl[i,], EurodistM.scl[i,], method = "pearson"))
并且:
cA <- EurodistCL.scl - rowMeans(EurodistCL.scl)
cB <- EurodistM.scl- rowMeans(EurodistM.scl)
sA <- sqrt(rowMeans(cA^2))
sB <- sqrt(rowMeans(cB^2))
rowMeans(cA * cB) / (sA * sB)
两者都给出相同的输出,一个 21 的相关向量。
虽然矩阵显然高度相关,但它们并非完全相关,因此我预计相关系数为 0.99 或 0.98
为什么我只得到一个?代码或理论有问题吗?
这是因为您只有两个值连续。即使是随机值也会给出 (+ 或 -) 1。试试这个
a <- runif(2)
b <- runif(2)
cor(a, b)
所以,这个理论是不正确的。虽然可以得到两个样本的相关系数,但是用处不大
要估计相关系数,需要两个以上的对应样本。