簡體   English   中英

R中的手動梨森相關

[英]Manual pearson correlation in r

您如何創建一個函數來手動計算r中的皮爾遜相關性。 我知道有一個稱為cor的本機函數,但是如果我想將R中的以下等式應用於數據幀中列的每個組合,該怎么辦?

在此處輸入圖片說明

我希望我知道如何做,但是我相信它需要許多for循環,嵌套的for循環等才能實現,而且我在編程方面還不那么強。 我希望有人會嘗試讓像我這樣的新手學習。 謝謝

例:

  set.seed(1)
  DF = data.frame(V1 = rnorm(10), V2=rnorm(10), V3=rnorm(10), V4=rnorm(10))

  #     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

首先編寫一個輔助函數來計算協方差:

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

好。 您不需要“手動”執行此操作,只需使用...即可。

cor(DF)

...計算所有列組合的r。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM