Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r中三个变量的相关系数_R_Correlation_Equation - Fatal编程技术网

r中三个变量的相关系数

r中三个变量的相关系数,r,correlation,equation,R,Correlation,Equation,对于三个n维非零方差变量a、b和c,n>2,如果 r(ab)、r(bc)和r(ac)分别是a和b之间、b和c之间以及a和c之间的皮尔逊相关系数,那么a、b和c之间的相关系数r(abc)定义为: r^2(abc)=(r^2(ab)+r^2(bc)+r^2(ac))-(2 x r(ab)x r(bc)x r(ac)) 我能够通过手动方式获得代码: a <- c(4, 6, 2, 7) b <- c(8, 1, 3, 5) c <- c(6, 3, 1, 9) al <- d

对于三个n维非零方差变量a、b和c,n>2,如果 r(ab)、r(bc)和r(ac)分别是a和b之间、b和c之间以及a和c之间的皮尔逊相关系数,那么a、b和c之间的相关系数r(abc)定义为:

r^2(abc)=(r^2(ab)+r^2(bc)+r^2(ac))-(2 x r(ab)x r(bc)x r(ac))

我能够通过手动方式获得代码:

a <- c(4, 6, 2, 7)
b <- c(8, 1, 3, 5)
c <- c(6, 3, 1, 9)

al <- data.frame(a, b, c)
al


ab_cor <- cor(al$a, al$b, method = c("pearson"))
bc_cor <- cor(al$b, al$c, method = c("pearson"))
ac_cor <- cor(al$a, al$c, method = c("pearson"))

abc_cor <- sqrt( ( (ab_cor)^2 + (bc_cor)^2 + (ac_cor)^2 ) - ( 2 * ab_cor * bc_cor * ac_cor) )
abc_cor

acor函数已经创建了相关矩阵。您只需要选择相关的,然后使用一些向量运算

cs <- cor(al, method = "pearson")

cs <- cs[upper.tri(cs)]

#sqrt(sum(cs^2)) - 2*prod(cs)
# apparently it's
sqrt(sum(cs^2) - 2*prod(cs))

cs对我来说,不清楚对于3个以上的变量,您希望计算结果是什么样子。如果你提供一个更一般化的例子(甚至仅仅是4个变量),那么这将是很有帮助的。方程式如下:r^2(abcd)=(r^2(ab)+r^2(ac)+r^2(ad)+r^2(bc)+r^2(bd)+r^2(cd))-(2xr(ab)xr(ac)xr(ad)xr(bc)xr(bd)xr(cd))你的意思是要有更多的变量吗?但是手动操作会很乏味,尤其是当我们开始添加越来越多的变量时。方程会以指数形式变长,但如果有一种方法我可以通过for循环来实现,它应该能够重复所有相关组合,并将值转储到列表中。公式基本上是所有相关组合的平方和减去所有相关组合的倍数的2倍。我可以添加一个图像链接,如果它更难看到时,写在text@IceCreamToucan谢谢你接电话