gpt4 book ai didi

r - 我如何计算两个矩阵的相应列之间的相关性而不将其他相关性作为输出

转载 作者:行者123 更新时间:2023-12-04 10:29:40 25 4
gpt4 key购买 nike

我有这些数据

> a
a b c
1 1 -1 4
2 2 -2 6
3 3 -3 9
4 4 -4 12
5 5 -5 6

> b
d e f
1 6 -5 7
2 7 -4 4
3 8 -3 3
4 9 -2 3
5 10 -1 9

> cor(a,b)
d e f
a 1.0000000 1.0000000 0.1767767
b -1.0000000 -1.000000 -0.1767767
c 0.5050763 0.5050763 -0.6964286

我想要的结果只是:
cor(a,d) = 1
cor(b,e) = -1
cor(c,f) = -0.6964286

最佳答案

上面的第一个答案计算所有成对相关性,除非矩阵很大,否则这很好,而第二个答案不起作用。据我所知,必须直接进行高效计算,例如从 arrayMagic Bioconductor 包中借来的这段代码,对于大型矩阵有效:

> colCors = function(x, y) { 
+ sqr = function(x) x*x
+ if(!is.matrix(x)||!is.matrix(y)||any(dim(x)!=dim(y)))
+ stop("Please supply two matrices of equal size.")
+ x = sweep(x, 2, colMeans(x))
+ y = sweep(y, 2, colMeans(y))
+ cor = colSums(x*y) / sqrt(colSums(sqr(x))*colSums(sqr(y)))
+ return(cor)
+ }

> set.seed(1)
> a=matrix(rnorm(15),nrow=5)
> b=matrix(rnorm(15),nrow=5)
> diag(cor(a,b))
[1] 0.2491625 -0.5313192 0.5594564
> mapply(cor,a,b)
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
> colCors(a,b)
[1] 0.2491625 -0.5313192 0.5594564

关于r - 我如何计算两个矩阵的相应列之间的相关性而不将其他相关性作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6713973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com