獲取代碼和更佳閱讀體驗(yàn)獲取,請(qǐng)移步:相關(guān)性分析 | R語言 -- 兩個(gè)變量的相關(guān)性分析
http://www.sthda.com/english/wiki/correlation-test-between-two-variables-in-r
目錄
什么是相關(guān)性檢驗(yàn)*疹味?
相關(guān)檢驗(yàn)用于評(píng)估兩個(gè)或多個(gè)變量之間的關(guān)聯(lián)仅叫。
例如,如果我們想知道父親和兒子的身高之間是否存在關(guān)系糙捺,可以計(jì)算相關(guān)系數(shù)來回答這個(gè)問題诫咱。
如果兩個(gè)變量(父親和兒子的身高)之間沒有關(guān)系,則兒子的平均身高應(yīng)該相同洪灯,而與父親的身高無關(guān)坎缭,反之亦然。
在這里签钩,我們將描述不同的相關(guān)方法掏呼,并使用R軟件提供一些實(shí)用的示例。
安裝并加載所需的R軟件包
我們將使用ggpubr R軟件包進(jìn)行基于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)憎夷,它測量兩個(gè)變量(x和y)之間的線性相關(guān)性。這也稱為參數(shù)相關(guān)檢驗(yàn)昧旨,因?yàn)樗Q于數(shù)據(jù)的分布拾给。僅當(dāng)x和y來自 正態(tài)分布時(shí) 才可以使用它。y = f(x)的圖稱為 線性回歸曲線兔沃。
Kendall tau和Spearman rho鸣戴,它們是基于秩的相關(guān)系數(shù)(非參數(shù))
最常用的方法是Pearson相關(guān)方法。
相關(guān)公式
在下面的公式中
- 和 是長度為 n 的兩個(gè)向量
- 和 分別對(duì)應(yīng)于 和 的均值粘拾。
皮爾遜相關(guān)公式
相關(guān)性的p值(顯著性水平)可以確定:
通過將相關(guān)系數(shù)表用于自由度: 通過使用自由度的相關(guān)系數(shù)表:窄锅,其中是 x 和 y 變量中的觀測數(shù)。
或通過如下計(jì)算 t值:
在情況2)中缰雇,使用的 t分布表 確定相應(yīng)的值
如果 p < 5%入偷,則x和y之間的相關(guān)性很顯著。
Spearman相關(guān)公式
Spearman相關(guān) 方法計(jì)算x的秩和y變量的秩之間的相關(guān)性械哟。
其中:。
肯德爾相關(guān)公式
Kendall相關(guān)法測量x和y變量的排序之間的對(duì)應(yīng)關(guān)系暇咆。x與y觀測值的可能配對(duì)總數(shù)為锋爪,其中 n 是x和y的大小丙曙。
程序如下:
首先按x值對(duì)這些對(duì)進(jìn)行排序。如果x和y是相關(guān)的其骄,那么它們的相對(duì)秩是相同的亏镰。
現(xiàn)在,對(duì)于每個(gè)yi拯爽,計(jì)算yj>yi(一致對(duì)(c))和yj<yi(不一致對(duì)(d))的數(shù)量索抓。
Kendall相關(guān)距離定義如下:
肯德爾相關(guān)距離定義如下:
其中:
nc:一致對(duì)的總數(shù)
nd:不一致對(duì)的總數(shù)
n: x和y的大小
在R中的計(jì)算相關(guān)性
R函數(shù)
可以使用函數(shù)cor()或cor.test()計(jì)算相關(guān)系數(shù):
- cor()計(jì)算相關(guān)系數(shù)
- cor.test()測試配對(duì)樣本之間的關(guān)聯(lián)/相關(guān)性。它同時(shí)返回相關(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ù)包含缺失值,請(qǐng)使用以下R代碼通過按大小寫刪除來處理缺失值桃煎。
cor(x, y, method = "pearson", use = "complete.obs")
如果x中存在NA值篮幢,則把x中的NA及y中對(duì)應(yīng)的數(shù)字刪除以保證x和y長度相等
將數(shù)據(jù)導(dǎo)入R
準(zhǔn)備好你的數(shù)據(jù)如下規(guī)定:最佳實(shí)踐為您準(zhǔn)備的數(shù)據(jù)集的R
將數(shù)據(jù)保存在外部.txt標(biāo)簽或.csv文件中
如下將數(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代碼計(jì)算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
我們要計(jì)算mpg和wt變量之間的相關(guān)性三椿。
使用散點(diǎn)圖可視化數(shù)據(jù)
要使用R基本圖,請(qǐng)單擊此鏈接:散點(diǎn)圖-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)")
初步測試以檢查測試假設(shè)
協(xié)方差是線性的嗎另患?是的,形成上面的圖蛾绎,關(guān)系是線性的昆箕。在散點(diǎn)圖顯示彎曲模式的情況下,我們正在處理兩個(gè)變量之間的非線性關(guān)聯(lián)租冠。
-
來自兩個(gè)變量(x鹏倘,y)中每個(gè)變量的數(shù)據(jù)是否服從正態(tài)分布?
- 使用Shapiro-Wilk正態(tài)性檢驗(yàn)–> 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
從輸出中顽爹,兩個(gè)p值大于顯著性水平0.05纤泵,這意味著數(shù)據(jù)的分布與正態(tài)分布沒有顯著差異。換句話說镜粤,我們可以假設(shè)正常性捏题。
- 使用QQ圖(分位數(shù)-分位數(shù)圖)對(duì)數(shù)據(jù)正態(tài)性進(jìn)行外觀****檢查。QQ圖繪制給定樣本與正態(tài)分布之間的相關(guān)性肉渴。
library("ggpubr")
# mpg
ggqqplot(my_data$mpg, ylab = "MPG")
# wt
ggqqplot(my_data$wt, ylab = "WT")
從正態(tài)分布圖中公荧,我們得出結(jié)論,兩個(gè)總體都可能來自正態(tài)分布同规。
請(qǐng)注意循狰,如果數(shù)據(jù)不是正態(tài)分布的窟社,建議使用非參數(shù)相關(guān),包括Spearman和Kendall基于秩的相關(guān)測試绪钥。
皮爾遜相關(guān)檢驗(yà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é)果中:
- t是t檢驗(yàn)統(tǒng)計(jì)值(t = -9.559)灿里,
- df是自由度(df = 30),
- p值是t檢驗(yàn)的顯著性水平(p值= 1.29410 ^ {-10})昧识。
- conf.int是相關(guān)系數(shù)在95%時(shí)的置信區(qū)間(conf.int = [-0.9338钠四,-0.7441]);
- 樣本估計(jì)值是相關(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)檢驗(yàn)
的肯德爾秩相關(guān)系數(shù)或Kendall的tau統(tǒng)計(jì)來估計(jì)關(guān)聯(lián)的基于排名的度量咏雌。如果數(shù)據(jù)不一定來自二元正態(tài)分布,則可以使用此檢驗(yàn)校焦。
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)檢驗(yàn)
Spearman的rho統(tǒng)計(jì)量也用于估計(jì)基于秩的關(guān)聯(lián)度氛雪。如果數(shù)據(jù)不是來自二元正態(tài)分布,則可以使用此檢驗(yàn)耸成。
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
rho是Spearman的相關(guān)系數(shù)报亩。
x和y之間的相關(guān)系數(shù)為-0.8864,p值為1.48810 ^ {-11}井氢。
解釋相關(guān)系數(shù)
相關(guān)系數(shù)介于-1和1之間:
- -1表示很強(qiáng)的負(fù)相關(guān)性:這意味著x每次增加弦追,y減少(左圖)
- 0表示兩個(gè)變量(x和y)之間沒有關(guān)聯(lián)(中間圖)
- 1表示強(qiáng)正相關(guān):這意味著y隨著x****增大(右圖)
在線相關(guān)系數(shù)計(jì)算器
您可以通過單擊以下鏈接在線計(jì)算兩個(gè)變量之間的相關(guān)性,而無需進(jìn)行任何安裝:
概要
- 使用函數(shù)cor.test(x花竞,y)分析兩個(gè)變量之間的相關(guān)系數(shù)并獲得相關(guān)的顯著性水平劲件。
- 使用函數(shù)cor.test(x,y)的三種可能的相關(guān)方法:pearson约急,kendall零远,spearman
覺得有用的老鐵麻煩點(diǎn)個(gè)小愛心~??