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

2021-01-18 生物空間站

本文主要是利用日常實驗數據,嘗試用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



相關焦點

  • SPSS——單因素方差分析
    單因素方差分析(one way anova),是一種較為常用的方差分析手段,主要目的是為了尋找多組數據總變異的真實來源,判斷總變異是來自於組內變異(Vin),還是來自於組間變異(Vbetween)。單因素方差分析的檢驗統計量F=Vbetween/Vin,表示組間變異與組內變異的比值。
  • 【實例講解】雙因素方差分析(Two-way Anova)
    本文作者:徐恩江前面的文章我們介紹了單因素的方差分析
  • SPSS醫學統計高能方法:單因素方差分析(One Way ANOVA)——【杏花開醫學統計】
    ——單因素方差分析(One Way ANOVA)①單因素方差分析的分組要求:三組或者三組以上的差異對比;②單因素方差分析的指標類型要求:連續數值型變量且服從正態分布(每一組數據都要服從正態分布) 請觀看下方視頻教程
  • SPSS之單因素方差分析ANOVA
    方差分析是對多個(兩個以上)處理平均數進行假設檢驗的方法。單因素是指該實驗中只有一個實驗因素,而單因素方差分析則是用來判斷這一實驗因素對各處理的優劣情況。簡單而言,如果實驗只有一種影響因素,但又有多個不同的處理水平,最後得到的數據就可以用單因素方差分析來分析數據。在方差分析的體系中,單因素方差分析,即F測驗通過對數據差異的分析來推斷兩個或多個樣本均數所代表的總體均數是否有差別,可用於檢測某項變異因素的效應或方差是否存在。F越大,說明組間方差是主要方差來源,處理的影響越顯著;F越小,越說明隨機方差是主要的方差來源,處理的影響越不顯著。
  • 單因素方差分析(one-way ANOVA)
    來源:網絡單因素方差分析 (一)單因素方差分析概念
  • 常用數據分析方法:方差分析及實現!
    方差分析是一種常用的數據分析方法,其目的是通過數據分析找出對該事物有顯著影響的因素、各因素之間的交互作用及顯著影響因素的最佳水平等。本文介紹了方差分析的基礎概念,詳細講解了單因素方差分析、雙因素方差分析的原理,並且給出了它們的python實踐代碼。
  • R繪圖:一文了解ggplot2顏色的設置
    R繪圖往期回顧:ggplot2繪圖學習 兩個連續性變量ggplot2繪圖學習:單變量+繪圖背景R繪圖
  • 教學視頻| 單因素方差分析(one-way ANOVA)及SPSS操作
    單因素方差分析(one-way ANOVA)也稱為F檢驗,是通過對數據變異的分析來推斷兩個或多個樣本均數所代表的總體均數是否有差別的一種統計推斷方法
  • 單因素方差分析
    (一)單因素方差分析概念理解步驟  是用來研究一個控制變量的不同水平是否對觀測變量產生了顯著影響。這裡,由於僅研究單個因素對觀測變量的影響,因此稱為單因素方差分析。  例如,分析不同施肥量是否給農作物產量帶來顯著影響,考察地區差異是否影響婦女的生育率,研究學歷對工資收入的影響等。這些問題都可以通過單因素方差分析得到答案。  單因素方差分析的第一步是明確觀測變量和控制變量。例如,上述問題中的觀測變量分別是農作物產量、婦女生育率、工資收入;控制變量分別為施肥量、地區、學歷。  單因素方差分析的第二步是剖析觀測變量的方差。
  • spss單因素方差分析的理論與實踐教程—— 【杏花開醫學統計】
    下面,我們來詳細了解單因素的方差分析(one-factor ANOVA)的基本原理、適用條件及其在SPSS中的具體操作。  二、應用條件   ①各處理水平組樣本總體方差相等,即方差齊性;   ②各處理組樣本是相互獨立的隨機樣本,均符合正態分布;   ③因變量為連續數值型變量;   ④樣本僅涉及一個處理因素,且處理因素至少有兩個處理水平。
  • T檢驗、Z檢驗與ANOVA方差分析的應用比較
    三者的應用場景有何不同?如果自信能正確的回答上述問題,那麼不必往下看了。否則,往下看。關鍵來了:¢Z檢驗-方差已知的均值檢驗,考慮一個因素的影響,原假設H0:X1=X0(單樣本檢驗)或 H0:X1=X2(雙樣本檢驗)。
  • R語言統計篇: 單因素協方差分析
    單因素
  • R語言中的t-test和ANOVA
    引起觀測值不同(波動)的原因主要有兩類:一類是試驗過程中隨機因素的幹擾或觀測誤差所引起不可控制的的波動;另一類則是由於試驗中處理方式不同或試驗條件不同引起的可以控制的波動。方差分析的主要工作就是將觀測數據的總變異(波動)按照變異的原因的不同分解為因子效應與試驗誤差,並對其作出數量分析,比較各種原因在總變異中所佔的重要程度,以此作為進一步統計推斷的依據。
  • 方差分析 (ANOVA)-29
    課程目標▶概念性認識「方差分析」和「ANOVA輸出表」▶能夠設計並實施一個「單因素」或「雙因素」實驗▶認識並解釋 交互作用▶充分了解ANOVA假設模型並知道如何驗證▶理解和應用多重對照法▶為學習更複雜的實驗設計打下堅實基礎個人學習意義▶用一個簡單的方法獲得有效了解過程知識的經驗▶知道如何設計並分析一個簡單的實驗▶提高從少量數據中獲得結論的能力▶進一步認識圖形工具對數據的應用
  • SPSS實操教程——單因素方差分析
    這個時候需要使用方差分析。那怎麼做呢?做分析之前需要思考幾個問題?是不是單因素?是不是獨立?各組應變量是不是符合正態分布?各組應變量是不是方差齊性?好,他這個研究是單因素的,只是分析了藥物一個因素,包括三種不同的藥物,分為三組。而且各組之間也是相互獨立的。
  • 【學習記·第31期】單因素、雙因素方差分析VS協方差分析
    方差分析的基本步驟方差分析的基本程序是:陳述假設、方差齊性檢驗、確定檢驗的自由度、變異量的計算、檢驗及顯著性水平的確定、事後檢驗、給出方差分析表。下面以單因素完全隨機設計的實驗為例說明方差分析的基本步驟。
  • 方差分析(ANOVA)原理
    方差分析(ANOVA)原理微信公眾號:生信小知識關注可了解更多的教程及單細胞知識。
  • 如何用SPSS做單因素和多因素方差分析
    前段時間明明同學推送了一篇「如何用Excel做方差分析」,今天就講講如何用SPSS為大家展示常用的3種分析方法使用技巧即:單因素方差分析、雙因素方差分析(無交互效應和有交互效應)。讓大家對方差分析有一個更深的了解。首先,我們來了解一下什麼是方差分析。方差分析是對多個樣本平均數差異顯著性檢驗的一種方法,也就是推斷對多個樣本均數是否相等的方法。
  • python的繪圖利器--海龜繪圖turtle
    這個語句是個固定格式,有這句話畫完圖,繪圖窗口還保留,如果沒有這句話,繪圖窗口就直接關閉了,所以初期都加上就好了。下面,我們就進入正題:公共設置公共設置的第一條import turtleimport是導入,turtle是海龜繪圖庫,所以這句話就是導入海龜會圖庫的意思,記住就可以了。
  • SPSS單因素方差分析——菜鳥篇
    很多小夥伴對科技論文或畢業論文的數據分析方法存在諸多疑惑,最多的問題就是:我該用什麼分析方法?SPSS怎麼操作?結果怎麼詮釋?關注我們並做好筆記,相信你從菜鳥到精通SPSS不會很慢。本次內容我們將帶大家認識單因素方差分析,一起來學習吧!