电竞比分网-中国电竞赛事及体育赛事平台

分享

R語言相關(guān)性分析(上)

 生物_醫(yī)藥_科研 2019-07-10

接觸組學(xué)數(shù)據(jù)這么久了,大家一定少不了分析各種相關(guān)性,譬如大到幾個(gè)轉(zhuǎn)錄組樣本的整體相關(guān)性分析,小到挑選了一些候選基因看它們?cè)诓煌瑯颖局械谋磉_(dá)模式相關(guān)性。今天這篇文章給大家講講如何利用R語言進(jìn)行相關(guān)性分析。


1
前言

組學(xué)數(shù)據(jù)分析主要有兩類,一類是基于被研究對(duì)象的位置和序列。一類是基于算法。前者比如說lncRNA與mRNA的antisense和cis的作用關(guān)系,miRNA和piRNA的靶向基因預(yù)測(cè)等。后者就比如說機(jī)器學(xué)習(xí)、降維、聚類等算法。

其中機(jī)器學(xué)習(xí)是通過程序不斷迭代來尋找合適的模型。

降維就是將高維數(shù)據(jù)通過計(jì)算,在盡量保證數(shù)據(jù)原始分布特征的情況下,將數(shù)據(jù)映射在低維的刻度。

聚類方法很多,常用的是計(jì)算歐式距離后,用K-mean聚類算法進(jìn)行聚類。

K-mean聚類算法就是先隨機(jī)挑選k個(gè)中心,按照距離遠(yuǎn)近分別聚在一起,然后在聚類的簇里重新選擇平均值作為中心點(diǎn),重新聚類,再不斷迭代設(shè)置的次數(shù),最后的結(jié)果就是聚類結(jié)果。

當(dāng)然如果畫樹,還涉及分類樹的算法。簡(jiǎn)而言之,麻煩,不詳細(xì)說了。

相關(guān)性分析,這就是本文要詳細(xì)說的了。

2
相關(guān)性分析

相關(guān)性分析是一種統(tǒng)計(jì)技術(shù)。

相關(guān)性分析,就是衡量?jī)蓚€(gè)變量之間的依賴性強(qiáng)弱

相關(guān)性:可以顯示兩個(gè)變量是否相關(guān)以及如何相關(guān)。例如,身高和體重是相關(guān)的; 較高的人往往有更大的體重。那么這種關(guān)系就是正相關(guān)。那么再例如汽車排量與每升汽油的里程,是負(fù)相關(guān)的,汽車排量越大,每升汽油跑的里程就越短。

盡管這種相關(guān)性非常明顯,但您的數(shù)據(jù)可能包含未預(yù)料到的相關(guān)性。您可能還會(huì)產(chǎn)生懷疑,懷疑兩個(gè)變量之間是否存在相關(guān)性,或者不知道兩者之間的依賴和聯(lián)系程度。這個(gè)時(shí)候,就需要一種可以量化的指數(shù)分析。相關(guān)分析可以幫助我們更好地理解數(shù)據(jù)。

但是,使用相關(guān)性分析的時(shí)候,我們需要記住的一個(gè)關(guān)鍵事項(xiàng)是:永遠(yuǎn)不要假設(shè)相關(guān)性就一定意味著A變量的變化會(huì)導(dǎo)致B變量的變化。

多年來個(gè)人電腦和運(yùn)動(dòng)鞋的銷售都急劇增長(zhǎng),并且它們之間存在高度相關(guān)性,但你不能認(rèn)為購買電腦會(huì)導(dǎo)致人們購買運(yùn)動(dòng)鞋(反之亦然)。但可能還是可能存在相同的調(diào)節(jié)因素,比如社會(huì)生產(chǎn)力的提高和經(jīng)濟(jì)狀況的改善。

1

正負(fù)相關(guān)性

當(dāng)兩個(gè)變量之間存在非常強(qiáng)烈的相互依賴關(guān)系的時(shí)候,我們就可以說兩個(gè)變量之間的存在高度相關(guān)性。

若兩組的值一起增大,我們稱之為正相關(guān),若一組的值增大時(shí),另一組的值減小,我們稱之為負(fù)相關(guān)。

本次我們用R來進(jìn)行計(jì)算和繪圖,所用的數(shù)據(jù)是R自帶的mtcars數(shù)據(jù)。

> mtcars
> head(mtcars)
                   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

行名我們知道是汽車的型號(hào)。那么列名呢?

mpgcyldisphpwt
英里/加侖氣缸數(shù)量排量總馬力重量

從上述列名中,我們可以簡(jiǎn)單得到排量(disp)與馬力(hp)呈現(xiàn)正相關(guān)性,而與每加侖汽油行駛的里程是負(fù)相關(guān)性。

那么我們就可以用R的cor函數(shù)來計(jì)算兩個(gè)變量之間的相關(guān)性。

library(ggplot2)

r <- cor(mtcars$disp,mtcars$mpg,method = 'pearson')

p1 <- ggplot(data = mtcars, aes(x = disp, y = mpg)) +

geom_point(color = '#d7191c') +

geom_smooth(method = 'lm',color = '#1a9641') +
       geom_text(aes(x = 400, y = 32,label = paste('R' ,'=',signif(r,3),seq = '')),color ='#fdae61') +
theme_bw()
r1 <- cor(mtcars$disp,mtcars$hp,method = 'pearson')
p2 <- ggplot(data = mtcars, aes(x = disp, y = hp)) +
geom_point(color = '#d7191c') + 
geom_smooth(method = 'lm',color = '#1a9641') +
geom_text(aes(x = 400, y = 32,label = paste('R' ,'=',signif(r1,3),seq = '')),color ='#fdae61') + 
theme_bw()
cowplot::plot_grid(p1,p2,nrow = 1,labels = c('p1','p2'),hjust = 0.05)


2

相關(guān)分析的局限

剛剛我們知道了,相關(guān)性分為正相關(guān)和負(fù)相關(guān)。但這里,我們之說的是線性相關(guān)。因?yàn)榉蔷€性相關(guān)的話,更適合建模擬合多元回歸。這個(gè)還是很牛的領(lǐng)域,只是我還沒涉及,上次去青島做生信培訓(xùn),就有老師想構(gòu)建四因素的多元回歸分析。這個(gè)領(lǐng)域我完全沒有了解。就不說了。

但是用R中cor函數(shù)來計(jì)算相關(guān)性也是有局限的。首先第一點(diǎn),不能計(jì)算非線性模型。

例如我們先看一組簡(jiǎn)化的數(shù)據(jù),icecream是冰激凌的銷售額。sunglass是太陽鏡的銷售額,tem是溫度。

sunglass <- c(213,233,296,345,645,644,492,691,790,667,645,546,506,524,434,383,282,181,30,50,30)

icecream <- c(215,236,300,350,651,651,500,700,800,678,657,559,520,539,450,400,300,200,50,30,50)

tem <- seq(30,40,0.5)
dat <- data.frame(sunglass, icecream, tem)

我們先看在溫度低于35時(shí)候的冰激凌銷售與溫度之間的關(guān)系。

require(magrittr)

dat_low <- dat %>% dplyr::filter(tem < 35)
r2 <- cor(dat_low$icecream, dat_low$tem)
p3 <- ggplot(data = dat_low, aes(x = tem, y = icecream)) +
          geom_point() + 
geom_smooth(method = 'lm', color = '#1a9641') +
           geom_text(aes(x = 34, y = 500,label = paste('R' ,'=',signif(r2,3),seq = '')),color ='#fdae61') + 
  theme_bw()

這個(gè)時(shí)候,我們可以看到當(dāng)溫度低于35度的時(shí)候,冰激凌銷量是和溫度正相關(guān)的。但是隨著天氣炎熱,大家都不愿出遠(yuǎn)門,這時(shí)候冰激凌的銷售就下來了。溫度在30度到40度之間的時(shí)候,溫度和冰淇淋銷量之間的相關(guān)性是怎么樣呢。

r3 <- cor(dat$icecream,dat$tem)

p4 <- ggplot(data = dat, aes(x = tem, y = icecream)) +

geom_point() +
         geom_smooth(method = 'lm',color = '#1a9641') +
geom_text(aes(x = 39, y = 500,label = paste('R' ,'=',signif(r3,3),seq = '')),color ='#fdae61') +
         theme_bw()

其實(shí)我們就可以發(fā)現(xiàn)問題,這里的溫度和冰激凌銷量是有很強(qiáng)的相關(guān)性的,我們甚至可以用腦子擬合出一個(gè)拋物曲線。雖然這個(gè)相關(guān)性不是線性的。但是如果我們繼續(xù)用R中cor函數(shù)來計(jì)算,用線性相關(guān)性分析顯然是不正確的,數(shù)值才-0.39。

另外,相關(guān)性強(qiáng),也不等于因果關(guān)系。例如我們可以看到太陽眼鏡的銷量和冰激凌的銷量之間的關(guān)系。

r4 <- cor(dat$icecream,dat$sunglass)

p5 <- ggplot(data = dat, aes(x = icecream, y = sunglass)) +

         geom_point() + 
geom_smooth(method = 'lm',color = '#1a9641') +
         geom_text(aes(x = 700, y = 500,label = paste('R' ,'=',signif(r4,3),seq = '')),color ='#fdae61') + 
theme_bw()

可以看到,就算太陽鏡和冰淇淋的銷量相關(guān)性是0.99,也不能體現(xiàn)兩者是因果關(guān)系。就是說,相關(guān)不代表一個(gè)現(xiàn)象導(dǎo)致另一個(gè)(相關(guān)可能有其他的原因,比如太陽的直射時(shí)間)。

今天的內(nèi)容就到這里啦~

參考資料:

[1] http://blog.sina.com.cn/s/blog_6aa3b1010102xkp5.html

[2] https://statistics./statistical-guides/spearmans-rank-order-correlation-statistical-guide.php

[3] http://www.hep.ph./~hallg/UG_2015/Pearsons.pdf

[4] http:///latex-and-statistics-formulas/

[5] https://www./data/correlation.html


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多