日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一行代码添加P值的可视化技巧分享~~

發布時間:2025/3/15 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一行代码添加P值的可视化技巧分享~~ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“DataCharm”,選擇“星標”公眾號

在一些常見的統計圖表中經常需要在一些圖表中添加P值,那么今天小編給大家匯總一下關于統計圖表中P值的添加方法。今天推文的主要內容如下:

  • P值簡單介紹

  • 可視化繪制中P值繪制

P值簡單介紹

P值是指在一個概率模型中,統計摘要(如兩組樣本均值差)與實際觀測數據相同,或甚至更大這一事件發生的概率。換言之,是檢驗假設零假設成立或表現更嚴重的可能性。P值若與選定顯著性水平(0.05或0.01) 相比更小,則零假設會被否定而不可接受。然而這并不直接表明原假設正確。P值是一個服從正態分布的隨機變量,在實際使用中因樣本等各種因素存在不確定性.在許多研究領域,0.05的P值通常被認為是可接受錯誤的邊界水平。(內容來源于網絡,本來小編想自己寫來著,可是,小編機會忘完啦,詳細的內容,小伙伴們可自行搜索哈~~)

可視化繪制中P值繪制

作為本期推文的重點介紹,如何在我們的可視化圖表中添加P值,使其更好的表現圖表含義是在繪制圖表是需要考慮的。本次,小編就使用R-ggpubr和R-ggsignif包進行P值添加及定制化操作。直接上干貨~~

R-ggpubr 添加P值

在使用ggpubr包進行P值添加之前,我們需導入R-rstatix包進行必要的統計操作(T檢驗等),這里我們直接通過例子進行解釋說明。

「簡單例子」

#?導入必要的包 library(tidyverse) library(ggtext) library(hrbrthemes) library(ggpubr) library(rstatix) library(ggsci)#?導入數據 df?<-?ToothGrowth df$dose?<-?as.factor(df$dose)#?進行T-test stat.test?<-?df?%>%?rstatix::t_test(len?~?supp)?%>%?rstatix::add_significance()#?進行可視化繪制 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

「分組數據例子」:如果我們面對分組數據時,我么可通過如下代碼進行組與組數據直接的顯著性比較,我們還是使用上面的數據,只不過使用group_by進行分組操作:

#?分組計算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包的顏色配色,我們可以使用黑灰色系進行顏色設置,修改成如下代碼即可:

ggboxplot(df,?x?=?"supp",?y?=?"len",?fill?=?"supp",palette?=?c("gray80","gray20"),facet.by?=?"dose",ggtheme=?hrbrthemes::theme_ipsum(base_family?=?"Roboto?Condensed"))

設置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

設置P值位科學計數法:

#?添加科學計數法一列 + 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

還可以繪制如下可視化結果:

#?計算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值添加」:統計計算如下:

#?統計計算 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包進行完成,下面小編就介紹一種更簡單的繪制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.)

設置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

設置P值顯示樣式和樣式(粗細、位置等)。

是不是覺得使用R-ggsignif包繪制P值更加方便些呢,更多屬性設置和其他用法,小伙伴們可去ggsigni包官網進行查閱。

總結

今天這篇推文小編匯總了常見P值的可視化繪制方法,希望對大家有所幫助。更多詳細內容,小伙伴們可自行探索哈~~

往期精品(點擊圖片直達文字對應教程)

機器學習

后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

總結

以上是生活随笔為你收集整理的一行代码添加P值的可视化技巧分享~~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。