R之方差分析
方差分析是用於分析組間差異以及他們相互關係(如組間方差)的數據模型。ANOVA分析不同組間的均值是否相同,因此將t檢驗推廣到兩個以上的組。ANOVA可用於比較(測試)三種或更多的均值(組或變數)。方差分析在概念上很像多個雙樣本t檢驗。但它更保守(導致更少的I型誤差),因此適用於廣泛的實際問題。
不同於R中也很重要的一章回歸,方差分析和 t檢驗都是用來分析組間差異的,只是方差分析可以用於多組均值的比較。
What Is ANOVA? And Who Drinks the Most Beer? | Minitabby Michelle Paret
方差分析的作用?
ANOVA最簡單的形式——單因素方差分析——你用一個連續的變數和一組類別(因子)變數來檢驗零假設:所有組的均值相同 。更多時候我們使用anova討論至少三組類別,因為如果你有兩組的話就可以用雙樣本 t 檢驗。
我們來看看世界上三個地區人均喝啤酒的量,亞洲,歐洲和美洲。
H0: 三個地區喝同樣多的酒 (μAsia = μEurope = μAmerica)
H1: 三個地區喝不同多的酒
根據圖上的點,歐洲似乎喝更多酒。但是,這種差異顯著嗎?或者圖上的差別僅僅歸因於隨機變化?
方差分析的原理:
ANOVA假定,組內變化僅僅是由隨機誤差引起的。
如果組間方差類似於組內方差,則各組之間的不同僅由於隨機誤差的不同(就是說可以認為是各組之間沒有顯著差異的,用規範的語言說就是不能拒絕各組均值相同的假設)。 (圖1)
如果組間方差相對於組內方差較大,則各組之間可能存在差異。 (圖2)在啤酒這個例子中,組間方差代表三個地區喝酒消耗量的差異,組內方差代表各組內部的成員啤酒消耗量的差異。拿歐洲來說吧,捷克喝酒最多,達到人均148.6升,但義大利人均只有29升。這就是歐洲這個組的組內變化,亞洲美洲也是這樣來看。
ANOVA就是對比了組間方差(亞洲、歐洲、美洲)和組內方差(各洲內部),他們兩者的比例(組間方差/組內方差)越大,p值越小,各組的均值越大(差異越大)。叫方差分析的原因也在於此,我們用方差來分析各組均值的差異。
我們以multcomp包中d的cholesterol為例做下單因素方差分析:
> library(multcomp)> attach(cholesterol)> head(cholesterol) trt response1 1time 3.86122 1time 10.38683 1time 5.90594 1time 3.06095 1time 7.72046 1time 2.7139> table(trt)trt 1time 2times 4times drugD drugE 10 10 10 10 10 > fit <- aov(response~ trt)> summary(fit) Df Sum Sq Mean Sq F value Pr(>F) trt 4 1351.4 337.8 32.43 9.82e-13 ***Residuals 45 468.8 10.4 ---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1> library(gplots)載入程輯包:『gplots』The following object is masked from 『package:stats』: lowess> plotmeans(response~trt, xlab = "Treatment", ylab = "Response", main = "Mean Plot with 95%CI")
協方差分析:
協變數的含義:
在設計者的研究中,收集一組代表每個觀察單位特徵的變數並不罕見。 這些變數中的一些是調查的核心,而其他變數反映了觀察單位的預先存在的差異,本身並不感興趣。 後者稱為並發變數,也稱為協變數。 經常在實踐中,這些附帶的變數是影響因變數的不利變異來源,並且與主要感興趣的操縱(獨立)變數的影響無關。這也引出了單因素協方差分析。舉個例子:
懷孕小鼠被分為四個組,每個小組接受不同劑量(0,5,50,500)的藥物處理,我們想研究小鼠體重是否因劑量而顯著不同。可以看到下面的表,dose是不同的劑量,weight體重均值為因變數,gesttime為懷孕時間,是預先存在的變數,影響著體重的大小,但本身不是此次研究的核心,我們對它不敢興趣,所以為協變數。
> data(litter, package = "multcomp")> head(litter) dose weight gesttime number1 0 28.05 22.5 152 0 33.33 22.5 143 0 36.37 22.0 144 0 35.52 22.0 135 0 36.77 21.5 156 0 29.60 23.0 5
含單個協變數的單因素分析ancova: y~x+A, x是協變數,A是主效應。表達式的順序很重要,一般來說,越基礎性的效應越需要放在表達式前面。具體來講,首先是協變數,然後是主效應,接著是雙因素的交互項,再接著是三因素的交互項,以此類推。
> fit <- aov(weight ~ gesttime + dose)> summary(fit) Df Sum Sq Mean Sq F value Pr(>F) gesttime 1 134.3 134.30 8.049 0.00597 **dose 3 137.1 45.71 2.739 0.04988 * Residuals 69 1151.3 16.69 ---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1
重複測量方差分析:
——Repeated Measures ANOVA
我們可以將重複測量方差分析用於兩種類型的研究設計。研究調查:
(1)三個或更多時間點的平均分數變化,或
(2)三個或更多不同條件下平均得分的差異。
例如,對於(1),您可能會調查6個月的運動訓練計劃對血壓的影響,並希望在3個不同的時間點(前,中期和運動後干預)測量血壓,以此得到一張關於訓練影響的時間表。對於(2),您可能會讓相同的人來吃不同類型的蛋糕(巧克力,焦糖和檸檬),並評價每個蛋糕的味道,而不是讓不同的人品嘗不同的蛋糕。這兩個研究設計的重點在於,同一個人在相同的因變數上被多次測量(即為什麼稱為重複測量)。
在重複測量方差分析中,自變數具有稱為類別或組別。如果隨著時間的推移重複測量,例如當測量運動訓練引起的血壓變化時,自變數是時間。每個類別(或組別)都是一個特定的時間點。每一組的人都是相同的,也就是說那一堆人都進行了三個時間點血壓的測量。
在不同條件下進行測量,條件是自變數的水平(或組)(例如,蛋糕的類型是具有巧克力,焦糖和檸檬餅,這三種獨立變數作為自變數的水平)。下面顯示了不同條件重複測量設計的示意圖。同一組人進行了三種蛋糕的品嘗。
我們來看一下某濃度二氧化碳的環境中(這是該例子中的不同condition),比較不類型的寒帶植物的光合作用率(Type,組間因子)。
> head(co2)Grouped Data: uptake ~ conc | Plant Plant Type Treatment conc uptake22 Qc1 Quebec chilled 95 14.223 Qc1 Quebec chilled 175 24.124 Qc1 Quebec chilled 250 30.325 Qc1 Quebec chilled 350 34.626 Qc1 Quebec chilled 500 32.527 Qc1 Quebec chilled 675 35.4> fit <- aov(uptake ~ Type*conc + Error(Plant/conc), data = co2)> summary(fit)Error: Plant Df Sum Sq Mean Sq F value Pr(>F) Type 1 2667.2 2667.2 60.41 0.00148 **Residuals 4 176.6 44.1 ---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1Error: Plant:conc Df Sum Sq Mean Sq F value Pr(>F) conc 6 1472.4 245.40 52.52 1.26e-12 ***Type:conc 6 428.8 71.47 15.30 3.75e-07 ***Residuals 24 112.1 4.67 ---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1> attach(co2)> interaction.plot(conc,Type, uptake, type = "b", col = c("red","blue"),main = "CO2 uptake for chilled plants")
治療1:含治療藥物的溶液治療2:僅載體溶液(無藥物)治療3:鹽水溶液
不同的治療方法是組間因子,同一動物的耳朵在三個時間點測量溫度,所以溫度是組內因子。
推薦閱讀:
※玩點好玩的--使用馬爾可夫模型自動生成文章
※RStudio | R語言應用及發展峰會(精華分享)
※購物籃關聯分析——R挖掘Apriori演算法
※用R語言分析我和男友的聊天記錄
※【資源收藏】想學AI和數據挖掘,關注這些號就夠了!