一行代码添加P值的可视化技巧分享~~
點擊上方“DataCharm”,選擇“星標(biāo)”公眾號
在一些常見的統(tǒng)計圖表中經(jīng)常需要在一些圖表中添加P值,那么今天小編給大家匯總一下關(guān)于統(tǒng)計圖表中P值的添加方法。今天推文的主要內(nèi)容如下:
P值簡單介紹
可視化繪制中P值繪制
P值簡單介紹
P值是指在一個概率模型中,統(tǒng)計摘要(如兩組樣本均值差)與實際觀測數(shù)據(jù)相同,或甚至更大這一事件發(fā)生的概率。換言之,是檢驗假設(shè)零假設(shè)成立或表現(xiàn)更嚴(yán)重的可能性。P值若與選定顯著性水平(0.05或0.01) 相比更小,則零假設(shè)會被否定而不可接受。然而這并不直接表明原假設(shè)正確。P值是一個服從正態(tài)分布的隨機(jī)變量,在實際使用中因樣本等各種因素存在不確定性.在許多研究領(lǐng)域,0.05的P值通常被認(rèn)為是可接受錯誤的邊界水平。(內(nèi)容來源于網(wǎng)絡(luò),本來小編想自己寫來著,可是,小編機(jī)會忘完啦,詳細(xì)的內(nèi)容,小伙伴們可自行搜索哈~~)
可視化繪制中P值繪制
作為本期推文的重點介紹,如何在我們的可視化圖表中添加P值,使其更好的表現(xiàn)圖表含義是在繪制圖表是需要考慮的。本次,小編就使用R-ggpubr和R-ggsignif包進(jìn)行P值添加及定制化操作。直接上干貨~~
R-ggpubr 添加P值
在使用ggpubr包進(jìn)行P值添加之前,我們需導(dǎo)入R-rstatix包進(jìn)行必要的統(tǒng)計操作(T檢驗等),這里我們直接通過例子進(jìn)行解釋說明。
「簡單例子」:
#?導(dǎo)入必要的包 library(tidyverse) library(ggtext) library(hrbrthemes) library(ggpubr) library(rstatix) library(ggsci)#?導(dǎo)入數(shù)據(jù) df?<-?ToothGrowth df$dose?<-?as.factor(df$dose)#?進(jìn)行T-test stat.test?<-?df?%>%?rstatix::t_test(len?~?supp)?%>%?rstatix::add_significance()#?進(jìn)行可視化繪制 stat.test?<-?stat.test?%>%?rstatix::add_xy_position(x?=?"supp") bxp?<-?ggpubr::ggboxplot(df,?x?=?"supp",?y?=?"len",?fill?=?"supp",palette="jco",ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))?+labs(title?=?"Example?of?<span style='color:#D20F26'>?add?P?values?in?ggpubr</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>ggpubr::ggboxplot?+?rstatix::t_test</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")+#?添加P值stat_pvalue_manual(stat.test,?label?=?"p")?+scale_y_continuous(expand?=?expansion(mult?=?c(0.05,?0.1)))+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))boxplot with P value此外,你還可以通過顯示P值的顯著性水平(p.signif)
+ stat_pvalue_manual(stat.test,?label?=?"p.signif") +boxplot with P value in different form「分組數(shù)據(jù)例子」:如果我們面對分組數(shù)據(jù)時,我么可通過如下代碼進(jìn)行組與組數(shù)據(jù)直接的顯著性比較,我們還是使用上面的數(shù)據(jù),只不過使用group_by進(jìn)行分組操作:
#?分組計算P值 stat.test?<-?df?%>%?group_by(dose)?%>%rstatix::t_test(len?~?supp)?%>%?rstatix::adjust_pvalue()?%>%rstatix::add_significance("p.adj")#可視化繪制 stat.test?<-?stat.test?%>%?add_xy_position(x?=?"supp") bxp2?<-?ggboxplot(df,?x?=?"supp",?y?=?"len",?fill?=?"supp",palette?=?"jco",facet.by?=?"dose",ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))?+labs(title?=?"Example?of?<span style='color:#D20F26'>?add?P.adj?values?in?ggpubr</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>ggpubr::ggboxplot?+?rstatix::t_test</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")+stat_pvalue_manual(stat.test,?label?=?"p.adj")?+scale_y_continuous(expand?=?expansion(mult?=?c(0.05,?0.10)))?+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Add P Values in group data不喜歡ggsci包的顏色配色,我們可以使用黑灰色系進(jìn)行顏色設(shè)置,修改成如下代碼即可:
ggboxplot(df,?x?=?"supp",?y?=?"len",?fill?=?"supp",palette?=?c("gray80","gray20"),facet.by?=?"dose",ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))設(shè)置palette = c("gray80","gray20") 即可。
「定義P值樣式」:
如果覺得P值的樣式比較單一,也可以自定義P值樣式:
#定義P值顯示條件 stat.test$custom.label?<-?ifelse(stat.test$p.adj?<=.05,stat.test$p.adj,"ns") #?可視化繪制stat.test?<-?stat.test?%>%?add_xy_position(x?=?"supp") bxp4?<-?ggboxplot(df,?x?=?"supp",?y?=?"len",?fill?=?"supp",palette?=?"jco",facet.by?=?"dose",ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))?+labs(title?=?"Example?of?<span style='color:#D20F26'>?add?P.custom?values?in?ggpubr</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>ggpubr::ggboxplot?+?rstatix::t_test</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")+stat_pvalue_manual(stat.test,?label?=?"custom.label")?+scale_y_continuous(expand?=?expansion(mult?=?c(0.05,?0.10)))?+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Set P Value form設(shè)置P值位科學(xué)計數(shù)法:
#?添加科學(xué)計數(shù)法一列 + stat.test$p.scient?<-?format(stat.test$p.adj,?scientific?=?TRUE) +?···· stat_pvalue_manual(stat.test,?label?=?"p.scient")+ #?其他同上Add P Value in scientific form還可以繪制如下可視化結(jié)果:
#?計算P值 stat.test?<-?df?%>%t_test(len?~?supp,?paired?=?TRUE)?%>%add_significance() #?可視化繪制 stat.test?<-?stat.test?%>%?add_xy_position(x?=?"supp")?ggpaired(df,?x?=?"supp",?y?=?"len",?fill?=?"supp",palette?=?"jco",line.color?=?"gray",?line.size?=?0.4,ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))?+labs(title?=?"Example?of?<span style='color:#D20F26'>?add?P.signif?values?in?ggpubr</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>ggpubr::ggpaired?+?rstatix::t_test</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")+stat_pvalue_manual(stat.test,?label?=?"{p}{p.signif}")?+scale_y_continuous(expand?=?expansion(mult?=?c(0.05,?0.10)))?+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Add P Value in ggpaired example「柱形圖P值添加」:統(tǒng)計計算如下:
#?統(tǒng)計計算 stat.test?<-?df?%>%?t_test(len?~?dose)%>%?add_xy_position(fun?=?"mean_sd",?x?=?"dose") #可視化繪制 bp_p?<-?ggbarplot(df,?x?=?"dose",?y?=?"len",?add?=?"mean_sd",?fill?=?"dose",?palette?=?"jco",ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))?+stat_pvalue_manual(stat.test,?label?=?"p.adj.signif",?tip.length?=?0.01)+labs(title?=?"Example?of?<span style='color:#D20F26'>?ggpubr::ggbarplot?with?p.adj.signif</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>ggpubr::ggbarplot?+?rstatix::t_test</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Add P Values in ggbarplot具體的P值樣式修改可參看上面代碼。以上就是使用R-ggpubr包快速繪制P值的方法介紹,借助了R-rstatix包進(jìn)行完成,下面小編就介紹一種更簡單的繪制P值的方法。
R-ggsignif添加P值
R-ggsignif 包可是專門為繪制P值的第三方包,其實用也較為簡單,接下來通過三個小例子解釋一下:
「樣例一」:
ggplot(mpg,?aes(class,?hwy))?+geom_boxplot()?+geom_signif(comparisons?=?list(c("2seater",?"midsize"),?c("minivan",?"suv")),textsize?=?6,map_signif_level?=?function(p)?sprintf("P?=?%.2g",?p))?+ylim(NA,?48)?+labs(title?=?"Example?of?<span style='color:#D20F26'>ggsignif::geom_signif?function</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>geom_signif()</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")?+hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed")??+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Add and Custom P Values in geom_signif()注意:
geom_signif(comparisons?=?list(c("2seater",?"midsize"),?c("minivan",?"suv")),textsize?=?6,map_signif_level?=?function(p)?sprintf("P?=?%.2g",?p))添加P值并修改P值樣式。
「樣例二」:
ggplot(iris,?aes(Species,?Sepal.Width))?+geom_boxplot(aes(fill=Species))?+geom_signif(comparisons?=?list(c("versicolor",?"setosa"),c("versicolor","virginica")),textsize?=?6,map_signif_level?=?function(p)?sprintf("P?=?%.3g",?p),y_position?=?c(4.5,?4.))+scale_fill_jco()+ylim(NA,?5)?+labs(title?=?"Example?of?<span style='color:#D20F26'>ggsignif::geom_signif?function</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>geom_signif()</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")?+hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed")??+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Add and Custom P Values in geom_signif()通過:
y_position?=?c(4.5,?4.)設(shè)置P值的具體添加位置。
「樣例三」:
test_data<-?data.frame(Group?=?c("S1",?"S1",?"S2",?"S2"),Sub?=?c("A",?"B",?"A",?"B"),Value?=?c(2,?5,?7,?8) ) #?可視化繪制 ggplot(test_data,?aes(x?=?Group,?y?=?Value))?+geom_bar(aes(fill?=?Sub),?stat?=?"identity",?position?=?"dodge",?width?=?.6)?+geom_signif(y_position?=?c(5.3,?8.3),?xmin?=?c(0.8,?1.8),?xmax?=?c(1.2,?2.2),annotation?=?c("**",?"NS"))?+geom_signif(comparisons?=?list(c("S1",?"S2")),size=.7,y_position?=?9.3,?vjust?=?0.2)+?scale_fill_grey()?+labs(title?=?"Example?of?<span style='color:#D20F26'>ggsignif::geom_signif?function</span>",subtitle?=?"processed?charts?with?<span style='color:#1A73E8'>geom_signif()?in?geom_bar</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</span>")?+hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed")?+theme(plot.title?=?element_markdown(hjust?=?0.5,vjust?=?.5,color?=?"black",size?=?20,?margin?=?margin(t?=?1,?b?=?12)),plot.subtitle?=?element_markdown(hjust?=?0,vjust?=?.5,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12))Add P Vlaus on geom_bar() in geom_signif()通過:
y_position?=?c(5.3,?8.3),?xmin?=?c(0.8,?1.8),?xmax?=?c(1.2,?2.2),annotation?=?c("**",?"NS")comparisons?=?list(c("S1",?"S2")),size=.7,y_position?=?9.3,?vjust?=?0.2設(shè)置P值顯示樣式和樣式(粗細(xì)、位置等)。
是不是覺得使用R-ggsignif包繪制P值更加方便些呢,更多屬性設(shè)置和其他用法,小伙伴們可去ggsigni包官網(wǎng)進(jìn)行查閱。
總結(jié)
今天這篇推文小編匯總了常見P值的可視化繪制方法,希望對大家有所幫助。更多詳細(xì)內(nèi)容,小伙伴們可自行探索哈~~
往期精品(點擊圖片直達(dá)文字對應(yīng)教程)
機(jī)器學(xué)習(xí)
后臺回復(fù)“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結(jié)
以上是生活随笔為你收集整理的一行代码添加P值的可视化技巧分享~~的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科学计算:Python VS. MATL
- 下一篇: Anaconda3的安装