r中的手动皮尔逊相关

时间:2016-04-19 21:52:13

标签: r functional-programming correlation

如何创建一个在r中手动计算pearson相关性的函数。我知道有一个名为 cor 的原生函数,但如果我想将R中的下面的等式应用于数据框中的每个列组合,我该怎么做呢?

enter image description here

我希望我知道如何,但我相信它需要许多for循环,嵌套for-loops等才能实现它,而且我在编程方面还不是很强大。我希望有人会尝试像我这样的新手可以学习。感谢

示例:

$(SUBMIT BUTTON ID).click(function() {
    var htag = $(SEARCH INPUT ID).val();
    $("twitter-timeline").prop("href", "https://twitter.com/hashtag/"+htag);
});

2 个答案:

答案 0 :(得分:4)

首先编写辅助函数来计算协方差:

v <- function(x,y=x) mean(x*y) - mean(x)*mean(y)

然后用它来计算相关性:

my_corr <- function(x,y) v(x,y) / sqrt(v(x) * v(y))

这是一个快速检查它是否正常工作:

> my_corr(DF$V1, DF$V2)
[1] -0.3767034
> cor(DF$V1, DF$V2)
[1] -0.3767034

请注意,以这种方式计算相关性在数值上是不稳定的。

编辑:

要将其应用于所有列组合,请使用outer

> outer(DF, DF, Vectorize(my_corr))

                  V1    V2    V3    V4
            # V1  1.00 -0.38 -0.72 -0.24
            # V2 -0.38  1.00  0.60  0.18
            # V3 -0.72  0.60  1.00  0.08
            # V4 -0.24  0.18  0.08  1.00

答案 1 :(得分:0)

好。您不需要“手动”执行此操作,只需使用....

cor(DF)

...计算所有列组合的r。