R語言作圖實例之qqplot

2021-01-14 TranslationalSurgery


小編上期分享了一種boxplot的作圖方法之後,收到群友的反饋,反映良好,應廣大同學的要求,我們這期繼續分享Q-Q plot的作圖方法。當然作為R語言的一個toolkit,Q-Q plot也有多種形式,我們選取了一種比較實用的style介紹給大家。





Q-Q圖或分位數曲線是一種圖形工具,它可以幫助我們評估一組數據是否合理地來自某種理論分布(例如正態或指數)。


例如,如果我們運行統計分析,假設我們的因變量是正態分布的,則可以使用正態Q-Q圖來檢查該假設。這只是外觀檢查,而不是嚴格的證明,因此有些主觀。但是,這使我們能夠一目了然地了解我們的假設是否合理,如果不是,則如何違反該假設以及哪些數據點會導致違反。Q-Q圖是通過將兩組分位數相互繪製而創建的散點圖。如果兩組分位數都來自同一分布,則應該看到這些點形成了一條大致筆直的線。以下是一個正態Q-Q圖的示例,前提是假定兩組分位數都滿足正態分布。






那麼,如何生成比較直觀的Q-Q圖呢?在R語言作該類圖的過程中,我們需要注意哪些事項。下面我們就通過一個具體的實例,給大家講解一下。希望大家在實際操作和驗證過程中有所收穫。





首先,我們看一下生成的目標圖的具體效果:





在統計分析中,我們通常會用R2(介於0~1)來檢驗目標數據和實際數據之間的差別。如果R2越大(越接近1),說明數據的擬合度越大;反之,則相關性較小。常用的統計測試方法有Spearman,KS檢測等。


在獲得了擬合度數據R2之後,我們需要比較不同方法之間的差別,比如我們有兩組R2:



可以看出,我們分別用兩種方法檢測不同基因數據與目標數據(比如基因表達量)的相關性,得到了兩組不同的R2。我們先把一組R2的Q-Q圖做出來:



以下是具體實現:


# 定義函數,用Q-Q圖描畫R2

qqplot_R2<-function(corvec,nn)
{
  set.seed(12345)
  ## nn is the sample size, number of individuals used to compute correlation.
  ## needs correlation vector as input.
  mm <- length(corvec)

# null correlation vector 

nullcorvec = tanh(rnorm(mm)/sqrt(nn-3))
  qqplot(nullcorvec^2,corvec^2, xlab=expression("Expected R"^"2"), ylab=expression("Observed predictive R"^"2"),ylim=c(0,0.825),cex=0.5); abline(0,1); 

grid()
  data<-data.frame(cbind(sort(corvec^2),sort(nullcorvec^2)))
  colnames(data)<-c("obs","exp")
  return(data)
}


# 調用上面的函數進行作圖
qqplot_R2(sqrt(exR2_1$R2),length(exR2_1$R2))






上面給出了畫出一個Q-Q圖的程序,下面我們實現同時生成兩個Q-Q plot的程序:



# 定義函數,描畫兩個Q-Q圖
qqplot_two_R2<-function(corvec1,nn1,corvec2,nn2) )
{ set.seed(12345)
  corvec2=corvec2[!is.na(corvec2)]
  corvec1=corvec1[!is.na(corvec1)]
    mm1 <- length(corvec1)

## null correlation vector 

nullcorvec1 = tanh(rnorm(mm1)/sqrt(nn1-3))

  mm2 <- length(corvec2)

## null correlation vector

  nullcorvec2 = tanh(rnorm(mm2)/sqrt(nn2-3))
 
  qqplot(nullcorvec1^2,corvec1^2, xlab=expression("Expected  R"^"2"), ylab=expression("Observed  R"^"2 "),ylim=c(0,0.85),xlim=c(0,0.003),pch = 8,bty="n",cex = 0.5,col = rgb(29,29,29,220,maxColorValue=255)); abline(0,1,col='grey',lty=1)


  points(sort(nullcorvec2^2),sort(corvec2^2),xlab=expression("Expected R"^"2"), ylab=expression("Observed  R"^"2 "),ylim=c(0,0.85),xlim=c(0,0.003),pch = 8,bty="n",cex = 0.5,col = rgb(230,27,50,210,maxColorValue=255))
 
  legend(x = "bottomright" , bty="n",legend = c("Test 1 result", "Test 2 result"), pch = 8, col = c(rgb(29,29,29,220,maxColorValue=255),rgb(230,27,50,210,maxColorValue=255)))
}

 qqplot_two_R2(sqrt(exR2_1$R2),length(exR2_1$R2),

                            sqrt(exR2_2$R2),length(exR2_2$R2))



運行上面的程序,就可以得到一開始看到的圖形了!




以上就是關於這個q-q plot的作圖方法,希望對大家有所幫助。本文我們給出了同時製作兩個Q-Qplot的示例,類似的,大家也可以在一幅圖中描畫多個Q-Qplot,如果需要相關的code,歡迎聯繫小編。

 


相關焦點

  • 學R語言太難?薦你一款heatmap作圖神器
    答案非R語言莫屬了。在CNS等頂級雜誌發表的諸多文章中,不管是複雜的統計分析還是"高大上"的制表繪圖,methods裡面總少不了R語言的身影。通過R語言輕鬆完成各種繪圖,例如:韋恩圖,熱圖,線性回歸,小提琴圖,GWAS相關曼哈頓圖,乃至三維圖,地圖,circos圈圖等等。但是R語言學起來有點難怎麼辦?今天冬至兄就是來告訴你一個熱圖神器的。
  • Python數據可視化實例之繪製圖表
    Python數據可視化實例之繪製圖表原創 蟲蟲安全 2018-09-05 17:41:57得利於語言的簡單明了、豐富的數據結構、豐富的類和模塊,Python如今成了數據科學中的香餑餑,成了matlab、R語言之外又一強大的數據分析工具。拋開其他方面的、今天蟲蟲帶大家一起來探索Python在數據可視化方面的應用。
  • R臨床科研作圖-4-色彩斑斕與黑白肅穆
    1. ggsci-發表級快速配色對於ggplot2作圖來說,有一個神奇的package 「ggsci」:Scientific Journal and Sci-Fi Themed Color Palettes for ggplot2。
  • R語言做主成分分析實例
    今天就用一個實例來講解一下在R語言中如何實現PCA分析:數據準備:一個表達矩陣:testPCA,行為基因,列為樣本我們使用princomp()函數來做主成分分析,使用的格式為:princomp(formula,data = NULL,subset,na.action,...)
  • 【R語言】相關性分析、相關係數的顯著性檢驗及可視化
    本篇文章介紹基於R語言的相關性分析、相關係數的顯著性檢驗及可視化,該教程為個人筆記,大家也可參考學習,不足之處也歡迎大家批評指正!相關性分析用於評估兩個或多個變量之間的關聯,能通過定量指標描述變量之間的強弱、直接或間接聯繫。
  • r語言的p值檢驗 - CSDN
    輸入1: rdata = matrix(rnorm(1000* 6, 0, 3), 6) rvar = apply(rdata, 2, var) mean(rvar)結果1: [1] 8輸入2: var(rvar)結果2: [1] 32=2*81/5輸入3:
  • R與生物專題 |第九講 R作圖-多個圖形的組合排版
    第一個fig=設置了散點圖,在x軸上從0到0.8,在y軸上從0到0.8。頂部的箱式圖在x軸上從0到0.8,在y軸上從0.55到1。我選擇了0.55而不是0.8,以便使頂部圖形更接近散點圖。右側箱式圖在x軸上從0.65變為1,在y軸上從0變為0.8。同樣,我選擇一個值將右側的箱形圖拉近散點圖。
  • 帶你從生信小白到精通R語言!所有難點一一攻破!限時免費送
    資料內容:從零開始學習測序轉錄組和長非編碼RNA測序1、轉錄組實戰講解第三講之測序質量評估和Reads回貼2、轉錄組實戰講解第四講之轉錄本構建和長非編碼RNA鑑定3、轉錄組實戰講解第五講之表達定量和差異及功能分析4、轉錄組與長非編碼RNA測序分析七講名校生物信息學公開課視頻課程1、清華大學
  • 醫學統計與R語言:GiViTI Calibration Belt
    https://cran.r-project.org/web/packages/givitiR/vignettes/givitiR.htmlNattino, G., Finazzi, S., & Bertolini, G. (2016).
  • 初一數學平行線的概念及平行公理的理解,常用的作圖語言總結
    平行的判定及性質(互通)尺規作圖常用語言尺規作圖中直尺的功能是:(1)在兩點間連接一條線段;(2)將線段向兩方延長。尺規作圖中圓規的功能是:(1)以任意一點為圓心,任意長為半徑作一個圓;(2)以任意一點為圓心,任意長為半徑畫一段弧;尺規作圖常用語言:(1)作射線××;(2)在射線上截取××=××;(3)在射線××上依次截取××=××=××;(4)以點×為圓心,××為半徑畫弧,交××於點×;(5)分別以點×、點×為圓心
  • 硬體描述語言Verilog HDL設計進階之: 典型實例-狀態機應用
    本文引用地址:http://www.eepw.com.cn/article/201706/348829.htm4.6典型實例6:狀態機應用4.6.1實例的內容及目標1.實例的主要內容狀態機設計是HDL設計裡面的精華,幾乎所有的設計裡面都或多或少地使用了狀態機的思想。
  • 進化樹作圖專題:進化樹的幾種分類
    本期承接上期進化樹作圖專題1的內容,和大家分享一下關於進化樹圖的幾種分類。 依據不同規則,樹的分類可以有很多種。由於本專題主要針對於作圖,所以這裡主要的原則就是——樹的外形。所謂「根」,就是一棵樹上的所有基因或物種的最近共同祖先(most recent common ancestor,MRCA)。
  • R語言-stringr-字符串處理
    單雙引號R語言中字符串輸入時,可以使用單引號,也可以使用雙引號。,不用轉義路徑複製和直接可用charchar <- r"(我是一名'R語言'學習者)"cat(char)常用函數截取字符串,匹配字符串,添加指定字符籌齊長度,去除左右兩邊空格,分割字符串,
  • R與生物專題 |第十一講 R作圖-ggplot2軟體包快速入門-qplot()函數
    qplot(weight,data=mydata,geom= "histogram", fill=sex)#基本密度圖qplot(weight,data=mydata,geom= "density")#根據組別更改密度圖顏色#根據組別更改線條樣式qplot(weight,data=mydata
  • 作圖詳解 | 利用R繪製馬賽克圖
    採用R篩選申請人國別為"德國","韓國","美國","日本","中國"並繪製該馬賽克圖的程序如下(可以採用改變fill = rev(grey.colors(2))改變顏色,參見作圖詳解)    猜你喜歡[圖表介紹]千變萬化條形圖(第一輯)[圖表介紹]千變萬化條形圖(第二輯)作圖詳解
  • 三等分角,阿基米德:尺規作圖不可能?
    相信大家都了解過尺規作圖吧,何謂尺規作圖呢?尺規作圖在數學的學習上有什麼作用呢?
  • R與生物專題 | 第三講 R作圖-基礎-圖形參數設置:線條、軸、刻度線、符號
    x<-c(2.2, 3, 3.8, 4.5, 7, 8.5, 6.7, 5.5)y<-c(4, 5.5, 4.5, 9, 11, 15.2, 13.3, 10.5)plot(x, y, pch=19, col="blue")plot(x, y, pch=18, col="red")plot(x, y, pch=
  • R語言 | 繪製環圖示例
    本篇白魚小編將使用R語言ggplot2包,通過幾個示例分享這類圓環圖的繪製方法。    本文使用的作圖數據的網盤連結(提取碼jk1f):    https://pan.baidu.com/s/1vgxkVnOw-nv5TphMdZiooA    文件「phylum_top10.txt」由16S高通量測序所得的物種豐度錶轉化而來,展示了主要細菌類別(行)在各樣本(列)中的豐度信息。我們將通過圓環圖,展示各樣本中各細菌類別的豐度組成。
  • r語言work_r語言work函數 - CSDN
    R的源起R是S語言的一種實現。S語言是由 AT&T貝爾實驗室開發的一種用來進行數據探索、統計分析、作圖的解釋型語言。最初S語言的實現版本主要是S-PLUS。S-PLUS是一個商業 軟體,它基於S語言,並由MathSoft公司的統計科學部進一步完善。
  • r語言有什麼優劣勢及R語言的未來發展趨勢_R語言在現實中的應用
    r語言有什麼優劣勢分析 R語言擁有強大的軟體包生態系統與圖表優勢「龐大的軟體包生態系統無疑是R語言最為突出的優勢之一——如果某項統計技術已經存在,那麼幾乎必然存在著一款R軟體包與之對應,」Adams指出。 「其中內置有大量專門面向統計人員的實用功能,」Peng表示。R語言具備可擴展能力且擁有豐富的功能選項,幫助開發人員構建自己的工具及方法,從而順利實現數據分析,他進一步解釋稱。