2021-10-08
大家好,今天主要向大家分享下誤差(cha)柱形圖的(de)三種可視化方法,先(xian)上個示例圖:
正式介紹實現(xian)方(fang)法之前,我們先來了解下誤差柱形圖上的帽子涉(she)及(ji)的三(san)個統計概念。
1、三個概念
標(biao)準偏差(Standard Deviation,SD)
標準偏差(簡稱標準差)是樣本平均數方差的開平方。它反映組內個體間的離散程度。標準差通常是相對于樣本數據的平均值而定的,通常用M±SD來表示樣本數據觀察值和平均值的差距。從公式可以看出,標準差會受到極值的影響。標準差越小,表明數據越聚集;標準差越大,表明數據越離散。Excel中如何用函數實現,請參考【Excel實現】部分:
# R 語言實現函數 sd <- sd(vec) sd <- sqrt(var(vec))
標準誤(wu)差(Standard Error,SE)
標(biao)(biao)準(zhun)誤(wu)(wu)(wu)(wu)差(cha)(cha)(簡稱(cheng)標(biao)(biao)準(zhun)誤(wu)(wu)(wu)(wu))表示的(de)是(shi)(shi)抽樣(yang)(yang)的(de)誤(wu)(wu)(wu)(wu)差(cha)(cha)。因為從(cong)一個總(zong)體(ti)中可以抽取出無數(shu)多(duo)種樣(yang)(yang)本(ben)(ben)(ben)(ben),每(mei)一種樣(yang)(yang)本(ben)(ben)(ben)(ben)的(de)數(shu)據都(dou)是(shi)(shi)對總(zong)體(ti)的(de)數(shu)據的(de)估(gu)計。標(biao)(biao)準(zhun)誤(wu)(wu)(wu)(wu)代表的(de)就是(shi)(shi)當前的(de)樣(yang)(yang)本(ben)(ben)(ben)(ben)對總(zong)體(ti)數(shu)據的(de)估(gu)計,標(biao)(biao)準(zhun)誤(wu)(wu)(wu)(wu)是(shi)(shi)由(you)樣(yang)(yang)本(ben)(ben)(ben)(ben)的(de)標(biao)(biao)準(zhun)差(cha)(cha)除以樣(yang)(yang)本(ben)(ben)(ben)(ben)容量(liang)的(de)開平方來計算的(de)。從(cong)公式可以看(kan)到(dao),標(biao)(biao)準(zhun)誤(wu)(wu)(wu)(wu)更(geng)大的(de)是(shi)(shi)受到(dao)樣(yang)(yang)本(ben)(ben)(ben)(ben)容量(liang)的(de)影(ying)響(xiang)。樣(yang)(yang)本(ben)(ben)(ben)(ben)容量(liang)越(yue)大,標(biao)(biao)準(zhun)誤(wu)(wu)(wu)(wu)越(yue)小(xiao),那么抽樣(yang)(yang)誤(wu)(wu)(wu)(wu)差(cha)(cha)就越(yue)小(xiao),就表明所(suo)抽取的(de)樣(yang)(yang)本(ben)(ben)(ben)(ben)能夠較好(hao)地代表總(zong)體(ti)。
se = sd(vec) / sqrt(length(vec))
置(zhi)信(xin)區間(Confidence Interval,CI)
所(suo)謂置信區(qu)間(jian)就是分別以統計量的(de)置信上(shang)限(xian)和(he)置信下(xia)限(xian)為上(shang)下(xia)界構(gou)成的(de)區(qu)間(jian),是這個(ge)參數的(de)真實值(zhi)在(zai)一定概(gai)率條件(jian)下(xia)落在(zai)測量結(jie)果(guo)周圍的(de)程度(du)。
# R 語言實現 alpha=0.05 t=qt((1-alpha)/2 + .5, length(vec)-1) # tend to 1.96 if sample size is big enough CI=t*se
2、Excel 實現
本實例所示(shi)數(shu)據(ju)如下,依次為處理(li)方案(an)(Treat)、分組類別(Group)、平均(jun)值(zhi)(Mean)和標準偏差(SD)。
標準(zhun)偏差可以參照下圖(tu)所(suo)示函數(shu)(STDEV.S())進行計算(suan):
繪圖步驟:
選(xuan)中(zhong)前(qian)三列數據(ju),依次選(xuan)擇【插入(ru)→柱狀(zhuang)圖】,生成柱狀(zhuang)圖后(hou)點擊右上(shang)圖標添加按鈕(niu),添加誤(wu)差線(xian)。在彈出的(de)參數框中(zhong),選(xuan)擇【更多(duo)選(xuan)項→誤(wu)差量→自定義】,選(xuan)擇第四列的(de)SD值,即可繪制誤(wu)差線(xian)。另外根據(ju)需要,還(huan)可以在誤(wu)差線(xian)里面選(xuan)擇只(zhi)顯示“正偏差”。
3、R 語言實現
# 加載需要的包
library(plyr)
library(ggplot2)
# 讀取數據(ju)
dat <- read.delim("data.txt")
# 定義計算平均(jun)值和標準差函數
dat_sd <- function(data, varname, groupnames){
sum_func <- function(x, col){
c(Mean = mean(x[[col]], na.rm=TRUE),
SD = sd(x[[col]], na.rm=TRUE))
}
data_sum<-ddply(data, groupnames, .fun=sum_func,varname)
#data_sum <- rename(data_sum, c("mean" = varname))
return(data_sum)
}
# 計算標準偏差
df <- dat_sd(dat,varname="Value", groupnames=c("Treat","Group"))
# 作圖(tu)
p<- ggplot(df, aes(x=Treat, y=Mean, fill=Group)) +
geom_bar(stat="identity", color="black",
position=position_dodge()) +
geom_errorbar(aes(ymin=Mean-SD, ymax=Mean+SD), width=.5,
position=position_dodge(.9))
4、python實現
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
size = 3
x = np.arange(size)
a = [5, 10, 23]
a_SD = [1.1, 0.6, 1.4]
b = [6, 9, 10]
b_SD = [0.4, 1.2, 2.5]
total_width, n = 0.6, 2
width = total_width / n
x = x - (total_width - width) / 2
labels = ['Treat1', 'Treat2', 'Treat3']
plt.bar(x, a, width=width, yerr = a_SD, tick_label=labels, label='Control')
plt.bar(x + width, b, width=width, yerr = b_SD, tick_label=labels ,label='Experimental')
plt.legend()
plt.show()
sns.set_theme(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.barplot(x="day", y="tip", data=tips, capsize=.2)
ax
5、云平臺實現
進入基因云平臺【云圖匯→誤差柱狀圖】工具,在【圖表數據→文件上傳】頁面選擇數據文件后,點擊“提交繪圖”,即可生成誤差柱狀圖。進入【圖表調整】頁面,可以實現顏色填充、圖案填充等多種類型圖表的隨意切換,分組/樣品的任意刪減和排序,以及近百種樣式的自由調整。