相關(guān)性分析 | R語言 -- 兩個變量的相關(guān)性分析

獲取代碼和更佳閱讀體驗獲取,請移步:相關(guān)性分析 | R語言 -- 兩個變量的相關(guān)性分析


http://www.sthda.com/english/wiki/correlation-test-between-two-variables-in-r

目錄

什么是相關(guān)性檢驗*?

相關(guān)檢驗用于評估兩個或多個變量之間的關(guān)聯(lián)。

例如,如果我們想知道父親和兒子的身高之間是否存在關(guān)系,可以計算相關(guān)系數(shù)來回答這個問題。

如果兩個變量(父親和兒子的身高)之間沒有關(guān)系,則兒子的平均身高應(yīng)該相同,而與父親的身高無關(guān),反之亦然。

在這里,我們將描述不同的相關(guān)方法,并使用R軟件提供一些實用的示例。

安裝并加載所需的R軟件包

我們將使用ggpubr R軟件包進行基于ggplot2的簡單數(shù)據(jù)可視化

  • 按照以下說明從GitHub安裝最新版本(推薦):
if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/ggpubr")
  • 或者,從CRAN安裝如下:
install.packages("ggpubr")
  • 加載ggpubr如下:
library("ggpubr")

相關(guān)分析方法

有多種執(zhí)行相關(guān)分析的方法:

  • 皮爾遜相關(guān)(r),它測量兩個變量(x和y)之間的線性相關(guān)性。這也稱為參數(shù)相關(guān)檢驗,因為它取決于數(shù)據(jù)的分布。僅當x和y來自 正態(tài)分布時 才可以使用它。y = f(x)的圖稱為 線性回歸曲線

  • Kendall tauSpearman rho,它們是基于秩的相關(guān)系數(shù)(非參數(shù))

最常用的方法是Pearson相關(guān)方法。

相關(guān)公式

在下面的公式中

  • xy 是長度為 n 的兩個向量
  • m_xm_y 分別對應(yīng)于 xy 的均值。

皮爾遜相關(guān)公式

相關(guān)性的p值(顯著性水平)可以確定:

  1. 通過將相關(guān)系數(shù)表用于自由度: 通過使用自由度的相關(guān)系數(shù)表:df=n?2,其中n是 x 和 y 變量中的觀測數(shù)。

  2. 或通過如下計算 t值

在情況2)中,使用df=n?2t分布表 確定相應(yīng)的p

如果 p < 5%,則x和y之間的相關(guān)性很顯著。

Spearman相關(guān)公式

Spearman相關(guān) 方法計算x的秩和y變量的秩之間的相關(guān)性。

其中:x′=rank(x) , y′=rank(y)。

肯德爾相關(guān)公式

Kendall相關(guān)法測量x和y變量的排序之間的對應(yīng)關(guān)系。x與y觀測值的可能配對總數(shù)為n(n?1)/2,其中 n 是x和y的大小。

程序如下:

  • 首先按x值對這些對進行排序。如果x和y是相關(guān)的,那么它們的相對秩是相同的。

  • 現(xiàn)在,對于每個yi,計算yj>yi(一致對(c))和yj<yi(不一致對(d))的數(shù)量。
    Kendall相關(guān)距離定義如下:

肯德爾相關(guān)距離定義如下:

其中:

nc:一致對的總數(shù)
nd:不一致對的總數(shù)
n: x和y的大小

在R中的計算相關(guān)性

R函數(shù)

可以使用函數(shù)cor()cor.test()計算相關(guān)系數(shù):

  • cor()計算相關(guān)系數(shù)
  • cor.test()測試配對樣本之間的關(guān)聯(lián)/相關(guān)性。它同時返回相關(guān)系數(shù)相關(guān)顯著性水平(或p值)。

簡化格式為:

cor(x, y, method = c("pearson", "kendall", "spearman"))
cor.test(x, y, method=c("pearson", "kendall", "spearman"))
  • x,y:具有相同長度的數(shù)值向量
  • 方法:相關(guān)方法

如果您的數(shù)據(jù)包含缺失值,請使用以下R代碼通過按大小寫刪除來處理缺失值。

cor(x, y,  method = "pearson", use = "complete.obs")

如果x中存在NA值,則把x中的NA及y中對應(yīng)的數(shù)字刪除以保證x和y長度相等

將數(shù)據(jù)導(dǎo)入R

  1. 準備好你的數(shù)據(jù)如下規(guī)定:最佳實踐為您準備的數(shù)據(jù)集的R

  2. 將數(shù)據(jù)保存在外部.txt標簽或.csv文件中

  3. 如下將數(shù)據(jù)導(dǎo)入R

# If .txt tab file, use this
my_data <- read.delim(file.choose())
# Or, if .csv file, use this
my_data <- read.csv(file.choose())

在這里,我們以內(nèi)置的R數(shù)據(jù)集mtcars為例。

下面的R代碼計算mtcars數(shù)據(jù)集中mpg和wt變量之間的相關(guān)性:

my_data <- mtcars
head(my_data, 6)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

我們要計算mpg和wt變量之間的相關(guān)性。

使用散點圖可視化數(shù)據(jù)

要使用R基本圖,請單擊此鏈接:散點圖-R基本圖。在這里,我們將使用 ggpubr R包。

library("ggpubr")
ggscatter(my_data, x = "mpg", y = "wt", 
          add = "reg.line", conf.int = TRUE, 
          cor.coef = TRUE, cor.method = "pearson",
          xlab = "Miles/(US) gallon", ylab = "Weight (1000 lbs)")
R軟件中兩個變量之間的相關(guān)性檢驗

初步測試以檢查測試假設(shè)

  1. 協(xié)方差是線性的嗎?是的,形成上面的圖,關(guān)系是線性的。在散點圖顯示彎曲模式的情況下,我們正在處理兩個變量之間的非線性關(guān)聯(lián)。

  2. 來自兩個變量(x,y)中每個變量的數(shù)據(jù)是否服從正態(tài)分布?

    • 使用Shapiro-Wilk正態(tài)性檢驗–> R函數(shù):shapiro.test()
    • 并查看正態(tài)圖—> R函數(shù):ggpubr :: ggqqplot()
  • Shapiro-Wilk測試可以執(zhí)行以下操作:
    • 空假設(shè):數(shù)據(jù)呈正態(tài)分布
    • 替代假設(shè):數(shù)據(jù)不是正態(tài)分布
# Shapiro-Wilk normality test for mpg
shapiro.test(my_data$mpg) # => p = 0.1229
# Shapiro-Wilk normality test for wt
shapiro.test(my_data$wt) # => p = 0.09

從輸出中,兩個p值大于顯著性水平0.05,這意味著數(shù)據(jù)的分布與正態(tài)分布沒有顯著差異。換句話說,我們可以假設(shè)正常性。

  • 使用QQ圖(分位數(shù)-分位數(shù)圖)對數(shù)據(jù)正態(tài)性進行外觀****檢查。QQ圖繪制給定樣本與正態(tài)分布之間的相關(guān)性。
library("ggpubr")
# mpg
ggqqplot(my_data$mpg, ylab = "MPG")
# wt
ggqqplot(my_data$wt, ylab = "WT")
R軟件中兩個變量之間的相關(guān)性檢驗
R軟件中兩個變量之間的相關(guān)性檢驗

從正態(tài)分布圖中,我們得出結(jié)論,兩個總體都可能來自正態(tài)分布。

請注意,如果數(shù)據(jù)不是正態(tài)分布的,建議使用非參數(shù)相關(guān),包括Spearman和Kendall基于秩的相關(guān)測試。

皮爾遜相關(guān)檢驗

mpg和wt變量之間的相關(guān)性測試:

res <- cor.test(my_data$wt, my_data$mpg, 
                    method = "pearson")
res

    Pearson's product-moment correlation
data:  my_data$wt and my_data$mpg
t = -9.559, df = 30, p-value = 1.294e-10
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.9338264 -0.7440872
sample estimates:
       cor 
-0.8676594 

在上面的結(jié)果中:

  • tt檢驗統(tǒng)計值(t = -9.559),
  • df是自由度(df = 30),
  • p值t檢驗的顯著性水平(p值= 1.29410 ^ {-10})。
  • conf.int是相關(guān)系數(shù)在95%時的置信區(qū)間(conf.int = [-0.9338,-0.7441]);
  • 樣本估計值是相關(guān)系數(shù)(Cor.coeff = -0.87)。

結(jié)果解釋

測試的p值為 1.294e-10,小于顯著性水平alpha = 0.05。我們可以得出結(jié)論,wt和mpg與顯著相關(guān),其相關(guān)系數(shù) -0.87,p值 1.294e-10。

訪問由 cor.test() 函數(shù)返回的值

函數(shù) cor.test() 返回包含以下組件的列表:

  • p.value:測試的p值
  • estimate:相關(guān)系數(shù)
# Extract the p.value
res$p.value
[1] 1.293959e-10
# Extract the correlation coefficient
res$estimate
       cor 
-0.8676594 

Kendall 秩相關(guān)檢驗

肯德爾秩相關(guān)系數(shù)Kendall的tau統(tǒng)計來估計關(guān)聯(lián)的基于排名的度量。如果數(shù)據(jù)不一定來自二元正態(tài)分布,則可以使用此檢驗。

res2 <- cor.test(my_data$wt, my_data$mpg,  method="kendall")
res2

    Kendall's rank correlation tau
data:  my_data$wt and my_data$mpg
z = -5.7981, p-value = 6.706e-09
alternative hypothesis: true tau is not equal to 0
sample estimates:
       tau 
-0.7278321 

tau肯德爾相關(guān)系數(shù)。

x和y之間的相關(guān)系數(shù)為-0.7278,p值為 6.70610e-9。

Spearman 秩相關(guān)檢驗

Spearman的rho統(tǒng)計量也用于估計基于秩的關(guān)聯(lián)度。如果數(shù)據(jù)不是來自二元正態(tài)分布,則可以使用此檢驗。

res2 <-cor.test(my_data$wt, my_data$mpg,  method = "spearman")
res2

    Spearman's rank correlation rho
data:  my_data$wt and my_data$mpg
S = 10292, p-value = 1.488e-11
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
-0.886422 

rhoSpearman的相關(guān)系數(shù)

x和y之間的相關(guān)系數(shù)為-0.8864,p值為1.48810 ^ {-11}。

解釋相關(guān)系數(shù)

相關(guān)系數(shù)介于-11之間:

  • -1表示很強的負相關(guān)性:這意味著x每次增加,y減少(左圖)
  • 0表示兩個變量(x和y)之間沒有關(guān)聯(lián)(中間圖)
  • 1表示強正相關(guān):這意味著y隨著x****增大(右圖)
R軟件中兩個變量之間的相關(guān)性檢驗
R軟件中兩個變量之間的相關(guān)性檢驗
R軟件中兩個變量之間的相關(guān)性檢驗

在線相關(guān)系數(shù)計算器

您可以通過單擊以下鏈接在線計算兩個變量之間的相關(guān)性,而無需進行任何安裝:

相關(guān)系數(shù)計算器

概要

  • 使用函數(shù)cor.test(x,y)分析兩個變量之間的相關(guān)系數(shù)并獲得相關(guān)的顯著性水平。
  • 使用函數(shù)cor.test(x,y)的三種可能的相關(guān)方法:pearson,kendall,spearman

覺得有用的老鐵麻煩點個小愛心~??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容