單因素方差分析 第十五講 R單因素方差分析(2)

2021-10-12 07:45:58 字數 4396 閱讀 9970

上一講,我們講了方差分析的原理和r實現(r-單因素方差分析(1)),但是,在發現至少存在一組與其他組之間存在差異以後,我們如何知道具體是哪兩組間存在差異。方差分析需要滿足幾個條件,他們的假設檢驗條件的檢驗方法是什麼?如果資料不滿足假設條件,要怎麼辦?

1. 兩兩成對比較

方差分析

各組均值之間的

兩兩成 對比較

首先,如第十四講,我們已經完成了如下操作,發現方差分析p值 < 0.05。

# 匯入r內自帶的plantgrowth資料集library(datasets)data(plantgrowth)# 將資料儲存在變數my_data中my_data # 計算方差分析res.aov data = my_data)# 總結分析結果summary(res.aov) #p = 0.016
在單因素方差分析中,顯著的p值表示某些組均值不同,但我們不知道具體哪些組之間不同。這時,可以執行多個成對比較,以確定特定組對之間的平均差異是否具有統計顯著性。我們可以計算tukey hsd(tukey honest significant differences,r函式:tukeyhsd()可以實現),以在組均值之間進行多次成對比較。函式tukeyhd()將之前擬合生成的anova函式作為引數:

tukeyhsd(res.aov)
輸出結果
tukey multiple comparisons of means95% family-wise confidence levelfit: aov(formula = weight ~ group, data = my_data)$groupdiff        lwr       upr     p adjtrt1-ctrl -0.371 -1.0622161 0.3202161 0.3908711trt2-ctrl  0.494 -0.1972161 1.1852161 0.1979960trt2-trt1  0.865  0.1737839 1.5562161 0.0120064
從輸出中可以看出,只有trt2與trt1之間的差異顯著,調整後的p值為0.012。2. 檢查方差分析的假設檢驗的條件

如開頭講到,anova需要滿足一定的條件

我們需要對假設資料是正態分佈的,並且各組之間的方差是均勻的進行驗證。

我們可以通過如下方法來檢驗。

2.1檢查方差假設的同質性(方差齊性)

2.1.1 殘差與擬合曲線圖來檢查方差齊性在下面的圖中,殘差和擬合值(每組的平均值)之間沒有明顯的關係, 因此,我們可以假設方差是同質的。

# 方差齊性檢驗plot(res.aov, 1)

該圖會自動標出明顯的異常值。途中點17、15、4被檢測為異常值,這會嚴重影響方差的正態性和同質性。如果此時出現方差不齊, 會建議刪除異常值以滿足假設成立。

2.1.2 levene 檢驗

也可以使用bartlett檢驗levene檢驗來檢驗方差齊性。

我們建議使用levene檢驗,該檢驗對偏離正態分佈不敏感。可以使用函式levenetest()[在car包裝中]:

library(car)levenetest(weight ~ group, data = my_data)
輸出結果

levene's test for homogeneity of variance (center = median)df f value pr(>f)group  2  1.1192 0.341227
從上面的輸出中,我們可以看到p值》0.05的顯著性水平。這意味著沒有證據表明各組之間的差異在統計學上有顯著差異。因此,我們可以假設不同**組中方差同質。

2.2 放寬方差假設的同質性

經典的單因素方差分析要求所有組的方差均等。

在我們的示例中,方差假設的同質性滿足:levene檢驗不顯著。

在方差齊性被違反的情況下,我們如何繼續方差分析呢?

另乙個統計學方法(即:welch one-way test),它不需要滿足方差齊性的假說。函式oneway.test()可以實現。

oneway.test(weight ~ group, data = my_data)
pairwise.t.test(my_data$weight, my_data$group,p.adjust.method = "bh", pool.sd = false)
2.3 檢查正態性假設

2.3.1 殘差的正態圖

在下面的圖中,相對於正態分佈的分位數繪製了殘差的qq圖,並且還繪製了45度參考線。

殘差的正態概率圖用於檢查殘差呈正態分佈的假設。如果它滿足正態性,應該要大致分布在45度參考線上。

當所有點都大致沿著該參考線落下時,我們可以假定為正態。

2.3.2 shapiro-wilk檢驗

此外,我們可以使用shapiro-wilk檢驗檢查殘差是否符合正態分佈

# 提取殘差aov_residuals object = res.aov )# shapiro-wilk 檢驗shapiro.test(x = aov_residuals )
輸出結果

shapiro-wilk normality testdata:  aov_residualsw = 0.96607, p-value = 0.4379
以上結論顯示p > 0.05, 殘差符合正態分佈( p = 0.6),沒有發現違反正態性的跡象。

3. 非引數替代單因素方差分析

注意,單因素anova的非引數替代方法是kruskal-wallis 秩和檢驗,當資料不滿足anova假設條件時,我們可以使用該檢驗

3.1 kruskal-wallis 秩和檢驗

kruskal.test(weight ~ group, data = my_data)
輸出結果

kruskal-wallis rank sum testdata:  weight by groupkruskal-wallis chi-squared = 7.9882, df = 2, p-value = 0.01842
3.2 多組之間的兩兩成對比較

從kruskal-wallis檢驗的輸出中,我們知道組之間存在顯著差異,但我們不知道具體哪些組是不同的。

可這時,以使用pairwise.wilcox.test()函式對組別之間進行成對比較,並進行多重檢驗的更正。

pairwise.wilcox.test(plantgrowth$weight, plantgrowth$group,p.adjust.method = "bh")
輸出結果

pairwise comparisons using wilcoxon rank sum testdata:  plantgrowth$weight and plantgrowth$groupctrl  trt1trt1 0.199 -trt2 0.095 0.027p value adjustment method: bh
成對比較顯示,只有trt1和trt2顯著不同(p <0.05)。

好了,本期講解就先到這裡。小夥伴們趕緊試起來吧。提前打個預告,下一期我們將學習「雙向方差分析及其在r語言中的實現」。

單因素方差分析 one way ANOVA

單因素方差分析 一 單因素方差分析概念 是用來研究乙個控制變數的不同水平是否對觀測變數產生了顯著影響。這裡,由於僅研究單個因素對觀測變數的影響,因此稱為單因素方差分析。例如,分析不同施肥量是否給農作物產量帶來顯著影響,考察地區差異是否影響婦女的生育率,研究學歷對工資收入的影響等。這些問題都可以通過單...

雙因素方差分析 多因素方差分析

在前面我們講過簡單的單因素方差分析,這一篇我們講講雙因素方差分析以及多因素方差分析,雙因素方差分析是最簡單的多因素方差分析。單因素分析就是只考慮乙個因素會對要比較的均值產生影響,而多因素分析是有多個因素會對均值產生影響。需要注意的是乙個因素可能會有不同的水平值,即不同的取值。比如要判斷某一款藥對某種...

單因素方差分析(ANOVA)的多重比較校正

如果anova結果顯示至少有兩組的均值不相等,那麼接下來要確定是哪兩組或哪些組的均值不相等,對差異的這個結果進行後續檢驗就叫做post hoc test,又叫做multiple comparison anlaysis test。1,the tukey method 優點是對所有組進行兩兩比較,計算簡...