R繪圖應用實例:單因素方差分析ANOVA及繪圖

2021-03-02 生物空間站

本文主要是利用日常實驗數據,嘗試用R進行單因素方差分析並繪製柱形圖。

ANOVA原理參考:單因素方差分析(One-way Anova)
實驗數據:
在隨機劃分的試驗田中,施加三種複合肥(B,C,D),飼料填充物做空白對照(A),一段時間後,測定試驗田內植株高度,比較數據有無不同,差異性是否具有統計學意義。
計算結果錄入Excel,如下:

圖片.png

(一):數據準備

rm(list = ls())
# prepare the data
data <- data.frame(A=c(47,65,44,59,62,37,51),
B=c(68,55,49,62,70,59,63),
C=c(78,76,72,81,76,71,83),
D=c(85,65,81,98,75,92,79))
head(data)

# convert data from a wide format to a long format.
library(reshape2)
data_long <- melt(data, measure.vars= c("A","B","C","D"))
head(data_long)

(二):方差分析(條件適用檢驗及方差分析)

# 單因素方差分析(One-way Anova)前提假設的檢驗:
# 1. 正態性檢驗(對4個水平下的每組數據都做一次正態檢驗)
shapiro.test(data$A) #或shapiro.test(data_long$value[1:7])
shapiro.test(data$B) #或shapiro.test(data_long$value[8:14])
shapiro.test(data$C) #或shapiro.test(data_long$value[15:21])
shapiro.test(data$D) #或shapiro.test(data_long$value[22:28])
############################################################################
#split:拆分為list數據集; #
#lapply:對數據集進行shapiro.test檢驗循環; #
#unlist():向量的原樣返回 #
group_data <- split(data_long[,2], data_long[,1]) #
group_data #
unlist(lapply(group_data, function(x){ #
shapiro.test(x)$p.value #
})) #
############################################################################
# 使用Q-Q圖來檢驗正態性
library(car)
qqPlot(group_data[[1]]) #或qqPlot(data$A)
qqPlot(group_data[[2]]) #或qqPlot(data$A)
qqPlot(group_data[[3]]) #或qqPlot(data$A)
qqPlot(group_data[[4]]) #或qqPlot(data$D)

# 2. 方差齊性檢驗,使用car包的leveneTest()
leveneTest(value~variable, data = data_long)

# 3. 離群點檢驗:
outlierTest(lm(value~variable, data = data_long))

Q-Q圖示例

# 4. 單因素方差分析ANOVA
aov1 <- aov(value~variable, data = data_long)
summary(aov1)
Df Sum Sq Mean Sq F value Pr(>F)
variable 3 4049 1349.7 18.2 2.25e-06 ***
Residuals 24 1780 74.2
---
Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1

# Show the means
model.tables(aov1, "means")

# Tukey HSD post-hoc test
TukeyHSD(aov1)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = value ~ variable, data = data_long)
$variable
diff lwr upr p adj
B-A 8.714286 -3.984450 21.41302 0.2574525
C-A 24.571429 11.872693 37.27016 0.0000986
D-A 30.000000 17.301265 42.69874 0.0000055
C-B 15.857143 3.158407 28.55588 0.0106071
D-B 21.285714 8.586979 33.98445 0.0005874
D-C 5.428571 -7.270164 18.12731 0.6453377

# Alternative: Multiple comparisons using multcomp package
library(multcomp)
e <- glht(aov1, linfct = mcp(variable = "Tukey"))
summary(e)
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Tukey Contrast
Fit: aov(formula = value ~ variable, data = data_long)
Linear Hypotheses:
Estimate Std. Error t value Pr(>|t|)
B - A == 0 8.714 4.603 1.893 0.2573
C - A == 0 24.571 4.603 5.338 <0.001 ***
D - A == 0 30.000 4.603 6.517 <0.001 ***
C - B == 0 15.857 4.603 3.445 0.0106 *
D - B == 0 21.286 4.603 4.624 <0.001 ***
D - C == 0 5.429 4.603 1.179 0.6453
---
Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1
(Adjusted p values reported -- single-step method)

(三):統計分析

# summarySE 函數提供了標準差、標準誤以及95%的置信區間
library(Rmisc)
data_long_count <- summarySE(data_long, measurevar="value",
groupvars= "variable")
data_long_count

(四):繪圖

繪圖應用1

# 繪製帶有顯著性標記的條形圖
marker <- c("", "", "***", "***")
library(ggplot2)
ggplot(data_long_count, aes(x=variable, y=value,fill=variable)) +
geom_bar(stat="identity", color="black",size=.3) +
geom_errorbar(aes(ymin=value-se, ymax=value+se),
size=.3, width=.2) +
geom_text(aes(y = value + 1.5 * se, label = marker),
size = 5, fontface = "bold") +
scale_color_brewer("Set1") +
ggtitle("Effects of Three Compound Fertilizers on Plant Height") +
xlab("Different compound fertilizer treatments") +
ylab("Plant height")

Rplot04.png


繪圖應用2

# 最終繪圖效果
library(ggsignif)
library(ggplot2)
ggplot(data_long_count, aes(x=variable, y=value,fill=variable)) +
geom_bar(stat="identity", color="black",size=.3) +
# 添加誤差棒
geom_errorbar(aes(ymin=value-se, ymax=value+se), size=.3, width=.2) +
# 手動添加顯著性
geom_signif(annotations = c("***","***"), y_position = c(83, 90),
xmin = c(1, 1), xmax = c(3, 4),
tip_length = c(c(0.65, 0.05),c(0.7, 0.05)), vjust = 0 ) +
# 設置色板
scale_color_brewer(palette = "Set1") +
# 更改主標題
ggtitle("Effects of Three Compound Fertilizers on Plant Height") +
xlab("Different compound fertilizer treatments") +
ylab("Plant height") +
# 更改軸標籤的外觀
theme(plot.title = element_text(color="red", size=14, face="bold.italic"),
axis.title.x = element_text(color="blue", size=14, face="bold"),
axis.title.y = element_text(color="#993333", size=14, face="bold")) +
# 更改圖例標籤
labs(fill="Treated")

Rplot05.png



相關焦點

  • R統計繪圖-混合方差分析[Translation]
    圖8|雙因素、單因素方差分析結果及多重比較結果。上:雙因素混合方差分析結果。p<0.05,心理練習程度(group)與時間(time)在焦慮評分上存在顯著的交互作用。 tests## 如果三因素的交互作用效應是顯著,可以分解為:###1) Simple two-way interaction:對第三個因素的每一個水平進行雙因素方差分析###2) Simple simple main effect:對第二個因素的每一個水平進行單因素方差分析###3) simple simple pairwise comparisons:如有必要採用配對或其它多重比較方法進行兩兩比較
  • 生物統計(4)-單因素方差分析
    方差分析的應用條件多個樣本均數比較的方差分析其應用條件為:①各樣本是相互獨立的隨機樣本,均來自**正態分布總體;②相互比較的各樣本的總體方差相等,即具有等方差齊性。mark單因素方差分析單因素方差分析(one-way ANOVA)是指對單因素試驗結果進行分析,檢驗因素對試驗結果有無顯著性影響的方法。
  • 方差分析(二): ANOVA過程單因素方差分析
    >「朝陽35處」可查看「說人話的大數據」系列合輯在方差分析中,最簡單的情形為單因素。在SAS中進行單因素方差分析可以使用ANOVA過程和GLM過程,本文先對ANOVA過程進行方差分析進行介紹,下面一篇將文章介紹SLM過程進行方差分析。在方差分析中,最簡單的情形為單因素,熟練掌握單因素的方差分析對理解、解決多因素方差問題很有幫助。在SAS中,方差分析可以通過PROC TTEST、PROC ANOVA與PROC GLM實現。
  • 數學建模培訓26_數據分析基礎(3)_單因素方差分析
    方差分析就是一種分析、處理多組實驗數據間均值差異的顯著性的統計方法。其主要任務是,通過對數據的分析處理,搞清楚各實驗條件對實驗結果的影響,以便更有效地指導實踐,提高經濟效益或者科研水平。在統計中,人們稱受控制的條件為因素,因素所處的狀態稱為水平。
  • R編程與R繪圖
    在詳細了解了R軟體的一些基本情況後,我們從以下兩個方面去研究軟體的應用,分別是R編程與R繪圖。
  • R語言在醫學統計中的應用-基礎教程
    歡迎關注小號:醫學統計數據分析,今天我們來介紹一下醫學統計學中常用統計學方法的R語言基本操作。       R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、原始碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。
  • Python數據分析應用
    應用實例Part-2 Python科學計算第四講數據處理與計算1. 常用模塊概覽與導入2. 數組的創建與生成3. 利用數組進行數據處理4. 用於數組的文件輸入輸出5. 線性代數6.應用實例7. 練習第五講數據描述與分析1. 匯總和計算描述統計2. 處理缺失數據3. 數據加載、存儲與文件格式4. 應用實例第六講繪圖與可視化1. 繪圖命令的基本架構2. Pandas描述性統計圖形概覽3.
  • R繪圖-heatmap
    其實,想要用R繪製好看的圖,還是要調整函數的參數,大家繪圖的時候多看函數的幫助信息,了解各個參數的含義,好自己進行修改。更多推薦R繪圖-RDA排序分析R中進行單因素方差分析並繪圖R統計-微生物群落結構差異分析及結果解讀
  • R統計繪圖-單因素非參數重複測量方差分析[Translation]
    2.3 Friedman testrstatix包中friedman_test()用於進行單因素非參數重複測量方差分析# Friedman testres.fried <- selfesteem %>% friedman_test
  • 123.R簡介和統計繪圖
    本文教程的原始碼見123R簡介和統計繪圖.Rmd,實戰代碼詳見R.Rmd。為什麼要學習R圖. R常用圖形 https://www.r-graph-gallery.com/為什麼選擇R?多領域的資源, CRAN收錄16170個R包 (20年9月1日),涵蓋了統計學、經濟學、生態學、進化生物學、生物信息學、物理、化學等多學科。
  • R語言之冗餘分析(RDA)及方差分解(VPA)
    第一軸長度<3,則進行RDA分析;第一軸長度>4,進行CCA分析;3<第一軸長度<4,兩者皆可。此處<3,進行RDA分析。)#檢驗各排序軸summary(rda)#查看結果vif.cca(rda) #檢驗共線性r2 <- RsquareAdj(rda)#提取R2,即方差解釋率rda_noadj <- r2$r.squared  #原始 R2rda_adj <- r2$adj.r.squared #校正後的 R2sp<- scores(rda,choices = 1:2, display
  • 機器學習中數據的方差分析
    之所以叫方差分析,因為雖然我們感興趣的是均值,但在判斷均值之間是否有差異時則需要藉助於方差基本思想: 隨機誤差: 因素的同一水平(總體)下,樣本各觀察值之間的差異比如,同一行業下不同企業被投訴次數是不同的這種差異可以看成是隨機因素的影響,稱為隨機誤差系統誤差: 組內方差: 因素的同一水平(同一個總體)下樣本數據的方差
  • 常用數據分析方法:方差分析及實現!
    方差分析是一種常用的數據分析方法,其目的是通過數據分析找出對該事物有顯著影響的因素、各因素之間的交互作用及顯著影響因素的最佳水平等。本文介紹了方差分析的基礎概念,詳細講解了單因素方差分析、雙因素方差分析的原理,並且給出了它們的python實踐代碼。
  • 一文讀懂SPSS單因素方差分析及方差分析(Analysis of Variance, ANOVA)——【醫學和生物統計】
    二、基本原理由於各種因素的影響,方差分析研究的數據呈現波動性。造成波動的原因可分為兩類:一是不可控的隨機因素;二是研究中施加的對結果形成影響的可控因素。方差分析若拒絕原假設,只能說明多個樣本總體均數不相等或不全相等。若要得到各組均數之間詳細信息,應在方差分析的基礎之上進行多個樣本均值的兩兩比較。
  • 方差分析(ANOVA)原理及其實現
    方差分析的基本原理    在一次實驗中,可以得到一系列不同的觀測值。造成觀測值不同的原因可能是由於處理因素不同引起的,即處理效應;也可能是由於實驗過程中偶然性因素的幹擾和測量誤差所致,即誤差效應。反應測量數據變異性的指標有多個,在方差分析中選用方差來度量資料的變異程度。要正確認識觀測值的便宜是由於處理效應還是誤差效應引起的,我們可以分別計算出處理效應的方差以及誤差小於的方差,在一定顯著水平下進行比較,如果二者相差不大,說明實驗處理對觀測值的影響不大;如果差異較大則說明實驗處理對於觀測的影響較大。    方差分析建立在三個基本假定的基礎上:一.
  • 教學視頻| 單因素方差分析(one-way ANOVA)及SPSS操作
    單因素方差分析(one-way ANOVA)也稱為F檢驗,是通過對數據變異的分析來推斷兩個或多個樣本均數所代表的總體均數是否有差別的一種統計推斷方法
  • SPSS統計:單因素方差分析與單變量方差分析
    在spss統計分析中,方差分析在比較均值菜單和一般線性模型菜單中都可以做,單因素方差分析一般稱為單因素
  • T檢驗、Z檢驗與ANOVA方差分析的應用比較
    三者的應用場景有何不同?如果自信能正確的回答上述問題,那麼不必往下看了。否則,往下看。關鍵來了:¢Z檢驗-方差已知的均值檢驗,考慮一個因素的影響,原假設H0:X1=X0(單樣本檢驗)或 H0:X1=X2(雙樣本檢驗)。
  • 乾貨|方差分析(ANOVA)系列之單因子方差分析
    方差分析的類別      主要有單因子方差分析(Minitab軟體路徑:統計>方差分析>單因子方差)、平衡方差分析(Minitab軟體路徑:統計>方差分析>平衡方差分析)及一般線性模型(Minitab軟體路徑:統計>方差分析>一般線性模型)等類別。
  • R與Python之基本統計分析(五) ---- 單因素方差分析
    圖 1 數據集基本信息展示首先,我們在 R 中通過 aov 進行單因素的方差分析,結果見圖 2。F value :40.88, P < 0.05。                   圖 2 R 單因素方差分析在 Python 中,我們有兩種方式可以處理單因素方差分析,大家可以看看喜歡哪一種方式。