您好,登錄后才能下訂單哦!
今天小編給大家分享一下R語言如何實現方差分析及其可視化的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
方差分析(Analysis of Variance,簡稱ANOVA),又稱“變異數分析”,是R.A.Fisher發明的,用于兩個及兩個以上樣本均數差別的顯著性檢驗。 由于各種因素的影響,研究所得的數據呈現波動狀。 造成波動的原因可分成兩類,一是不可控的隨機因素,另一是研究中施加的對結果形成影響的可控因素。
方差分析常用的為單因素方差分析和雙因素方差分析,而多因素方差分析比較復雜用的不多,這里主要介紹前兩種方差分析。
單因素方差分析比較的是分類因子定義的兩個或多個組別中的因變量均值。與t檢驗區別:t檢驗適用于兩列數據的均值比較。單因素方差分析適用于兩列或更多列數據的均值比較。但對于兩列數據的均值比較,單因素方差分析=等方差假設的雙尾t檢驗。
以R中內置數據PlantGrowth集為例。不同地塊( ‘ctrl’, ‘trt1’, and ‘trt2’)種植的植物的產量(weight)數據;解決的問題如下
1.不同地塊產量是否存在差異
2.trt1與trt2是哪塊差異更大
##正態性檢驗 my_data <- PlantGrowth shapiro.test(my_data$weight) #結果表明,p=0.8915 >0.05,接受原假設,說明數據在多個水平下都是正態分布的。 ##方差齊性檢驗 bartlett.test(weight~group,data=my_data) #結果表明,p=0.2371 >0.05,接受原假設,說明數據在不同水平下是等方差的。 ##單因素方差分析 fit<-aov(weight~group,data=my_data) summary(fit) # Df Sum Sq Mean Sq F value Pr(>F) #group 2 3.766 1.8832 4.846 0.0159 * #Residuals 27 10.492 0.3886 #--- #Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #結果表明,不同地塊見產量差異非常顯著。 #如果用非參數檢驗法 Kruskal-Wallis test kruskal.test(weight ~ group, data = my_data) ##多重比較(多重T檢驗),哪塊差異更明顯 #R語言中TukeyHSD()函數提供了對各組均值差異的成對檢驗。 TukeyHSD(fit) #如果用KW檢驗多重比較, pairwise.wilcox.test(PlantGrowth$weight, PlantGrowth$group, p.adjust.method = "BH")
利用ggpubr包做方差分析,并可視化分析結果:
library("ggpubr") compare_means(weight ~ group, data = PlantGrowth,method="anova") compare_means(weight ~ group, data = PlantGrowth,method="kruskal.test") my_comparisons <- list(c("ctrl","trt1"), c("ctrl", "trt2"), c("trt1", "trt2")) ggboxplot(my_data, x = "group", y = "weight", color = "group", palette = "jco", order = c("ctrl", "trt1", "trt2"), ylab = "Weight", xlab = "Treatment")+ stat_compare_means(label.y = 11,method = "anova")+ stat_compare_means(comparisons = my_comparisons,label.y = c(7,9,8))
或者小提琴圖
ggviolin(my_data, x = "group", y = "weight", fill = "group", palette = "jco", order = c("ctrl", "trt1", "trt2"), ylab = "Weight", xlab = "Treatment",add = "boxplot", add.params = list(fill="white"))+ stat_compare_means(label.y = 11,method = "anova")+ # Global p-value stat_compare_means(comparisons = my_comparisons,label.y = c(7,9,8))
ggbarplot(PlantGrowth, x = "group", y = "weight", add = "mean_se", color = "group",fill="group", palette = "jco")+ stat_compare_means(label.y = 11,method = "anova") + # Global p-value stat_compare_means(comparisons = my_comparisons,label.y = c(7,9, 8),method="t.test")+ scale_y_continuous(expand=c(0,0))
或者線圖
ggline(my_data, x = "group", y = "weight", add = c("mean_se", "jitter"), order = c("ctrl", "trt1", "trt2"), ylab = "Weight", xlab = "Treatment")+ stat_compare_means(label.y = 11,method = "anova")+ # Global p-value stat_compare_means(comparisons = my_comparisons,label.y = c(7,9,8))
以上就是“R語言如何實現方差分析及其可視化”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。