R语言基础 | 方差分析(2):多因素方差分析(上)
專注系列化、高質(zhì)量的R語言教程
推文索引 | 聯(lián)系小編 | 付費(fèi)合集
當(dāng)存在兩個(gè)及以上的分組變量時(shí),可以使用多因素方差分析(N-way ?ANOVA、Multifactor ANOVA)檢驗(yàn)各組的樣本均值是否存在顯著差異。本篇主要以雙因素方差分析(Two-way ?ANOVA)為例介紹相關(guān)內(nèi)容。
本篇的目錄如下:
2 多因素方差分析
2.1 示例數(shù)據(jù)
2.2 平衡試驗(yàn)設(shè)計(jì)
2.3 I型方差分析
2.4 交互效應(yīng)
2.5 多因素方差分析
未完待續(xù)
2 多因素方差分析
2.1 示例數(shù)據(jù)
本篇使用兩個(gè)示例數(shù)據(jù)。
第一個(gè)示例數(shù)據(jù)是來自基礎(chǔ)包datasets的npk:
npk ##????block?N?P?K?yield ##?1??????1?0?1?1??49.5 ##?2??????1?1?1?0??62.8 ##?3??????1?0?0?0??46.8 ##?4??????1?1?0?1??57.0 ##?5??????2?1?0?0??59.8 ##?6??????2?1?1?1??58.5 ##?7??????2?0?0?1??55.5 ##?...npk共有5個(gè)變量:yield表示產(chǎn)量,為觀測值;block為土地編號(hào),取值為1-6,因子類型;N、P、K分別表示氮、磷、鉀的使用情況,均為二分變量。
第二個(gè)示例數(shù)據(jù)是由mtcars數(shù)據(jù)集的四個(gè)變量組成,記為mpg:
library(dplyr)? mpg?<-?mtcars?%>%select(mpg,?cyl,?gear,?carb)?%>%mutate(cyl?=?factor(cyl),gear?=?factor(gear),carb?=?factor(carb)) mpg ##??????????????????????mpg?cyl?gear?carb ##?Mazda?RX4???????????21.0???6????4????4 ##?Mazda?RX4?Wag???????21.0???6????4????4 ##?Datsun?710??????????22.8???4????4????1 ##?Hornet?4?Drive??????21.4???6????3????1 ##?Hornet?Sportabout???18.7???8????3????2 ##?Valiant?????????????18.1???6????3????1 ##?Duster?360??????????14.3???8????3????4 ##?...以mpg為觀測變量,cyl、gear、gear為分組變量,它們分別將樣本分為3、3、6組。
當(dāng)分組數(shù)量在三個(gè)及以上時(shí),分組變量應(yīng)為因子類型。
2.2 平衡試驗(yàn)設(shè)計(jì)
參照單因素方差分析的模型形式,可以很自然地推測雙因素方差分析的模型形式。
例2.1:觀察并比較如下兩組模型的結(jié)果
##?npk aov(yield?~?N?+?P,?npk) ##????????????????????????N????????P?Residuals ##?Sum?of?Squares??189.2817???8.4017??678.6817 ##?Deg.?of?Freedom????????1????????1????????21 aov(yield?~?P?+?N,?npk)? ##?Terms: ##????????????????????????P????????N?Residuals ##?Sum?of?Squares????8.4017?189.2817??678.6817 ##?Deg.?of?Freedom????????1????????1????????21##?mpg aov(mpg?~?cyl?+?gear,?mpg)? ##?Terms: ##??????????????????????cyl?????gear?Residuals ##?Sum?of?Squares??824.7846???8.2519??293.0107 ##?Deg.?of?Freedom????????2????????2????????27 aov(mpg?~?gear?+?cyl,?mpg)? ##?Terms: ##?????????????????????gear??????cyl?Residuals ##?Sum?of?Squares??483.2432?349.7933??293.0107 ##?Deg.?of?Freedom????????2????????2????????27上述兩組模型各包含兩個(gè)方差分析,模型形式的區(qū)別僅在于分組變量的順序不同:
對(duì)于第一組模型(npk)來說,兩個(gè)方差分析的結(jié)果完全相同;
對(duì)于第二組模型(mpg)來說,cyl和gear變量所對(duì)應(yīng)的離差平方和在兩個(gè)方差分析中是不同的,但二者之和仍然相同(824.7846 + 8.2519 = 483.2432 + 349.7933 = 833.0365),自由度和組內(nèi)離差平方和(Residuals)也相同。
以上結(jié)果意味著多因素方差分析可能與分組變量順序有關(guān)。實(shí)際上,這與樣本分組是否符合平衡試驗(yàn)設(shè)計(jì)(balanced design)有關(guān)。平衡設(shè)計(jì)是指,由多個(gè)分組變量形成的交叉組所對(duì)應(yīng)的樣本數(shù)量完全一致。
對(duì)于平衡設(shè)計(jì)來說,多因素方差分析的結(jié)果與變量順序無關(guān);而對(duì)于非平衡設(shè)計(jì)來說,存在三種類型的多因素方差分析:I型、II型和III型,而aov()函數(shù)使用的是I型方差分析,它的結(jié)果與變量順序有關(guān)。
在aov()函數(shù)的幫助文檔中作者寫道:aov()函數(shù)是為平衡設(shè)計(jì)準(zhǔn)備的,對(duì)于非平衡設(shè)計(jì)它的結(jié)果很難解釋。
統(tǒng)計(jì)兩個(gè)示例數(shù)據(jù)的交叉組樣本數(shù)量:
with(npk,?{tapply(yield,?list(N,?P),?length)}) ##???0?1 ##?0?6?6 ##?1?6?6with(mpg,?{tapply(mpg,?list(cyl,?gear),?length)}) ##????3??4?5 ##?4??1??8?2 ##?6??2??4?1 ##?8?12?NA?2可以看出,npk數(shù)據(jù)的4個(gè)交叉組的樣本均為6,屬于平衡設(shè)計(jì);而mpg數(shù)據(jù)的9個(gè)交叉組的樣本并不完全一致,并且有一個(gè)交叉組沒有樣本(NA),屬于非平衡設(shè)計(jì)。
2.3 I型方差分析
對(duì)于平衡設(shè)計(jì)來說,三種類型的方差分析的結(jié)果一致,因此下文僅針對(duì)非平衡設(shè)計(jì)的方差分析,示例數(shù)據(jù)為mpg。
例2.2:aov()函數(shù)執(zhí)行的是I型方差分析,使用它運(yùn)行如下模型
aov(mpg?~?cyl,?mpg) aov(mpg?~?gear,?mpg) aov(mpg?~?cyl?+?gear,?mpg) aov(mpg?~?gear?+?cyl,?mpg)為了方便比較,我們將模型的離差平方和匯總?cè)缦?#xff1a;
| cyl | 824.7846 | - | 301.2626 |
| gear | - | 483.2432 | 642.8040 |
| cyl + gear | 824.7846 | 8.2519 | 293.0107 |
| gear + cyl | 349.7933 | 483.2432 | 293.0107 |
SS表示離差平方和(Sum of Squares)。
通過比較可以得到如下結(jié)論:
所有模型的離差平方和之和(即總離差平方和)是相等的;
在雙因素方差分析中,分組變量的離差平方和與它的順序有關(guān),其中第一個(gè)分組變量的離差平方和與它對(duì)應(yīng)的單因素方差分析的結(jié)果相同;
在雙因素方差分析中,cyl和gear的離差平方和與順序無關(guān)。
總離差平方和():
只與觀察變量有關(guān),而與分組變量無關(guān),其計(jì)算方法和單因素方差分析完全一致。使用表示樣本標(biāo)識(shí),表示全體樣本的均值,有
組間離差平方和(和):
這里組間離差平方和由兩部分組成,分別對(duì)應(yīng)兩個(gè)分組變量的離差平方和,記為、。使用、表示兩個(gè)分組變量的水平數(shù),、表示分組標(biāo)識(shí)。
假設(shè)對(duì)應(yīng)的是第一個(gè)分組變量的離差平方和,我們已經(jīng)知道它和單因素方差分析的結(jié)果一樣:
其中,表示第組的樣本均值。
不易直接計(jì)算,但是我們知道它與之和為定值:
因此只要計(jì)算出即可反推出。
組內(nèi)離差平方和():
相當(dāng)于“剩余”部分,在輸出結(jié)果中也使用Residuals標(biāo)識(shí)。方差分析與線性回歸存在內(nèi)在聯(lián)系聯(lián)系,實(shí)際就等于線性回歸的殘差平方和。
fit.lm?<-?lm(mpg?~?cyl?+?gear,?mpg) sum(residuals(fit.lm)^2) ##?[1]?293.0107自由度和F統(tǒng)計(jì)量:
的自由度為(為樣本總量),、的自由度分別為和,的自由度為。
2.4 交互效應(yīng)
分組變量之間可能存在交互效應(yīng)。
例2.3:比較不含和含有交互項(xiàng)的雙因素方差分析
aov(mpg?~?cyl?+?gear,?mpg)? ##?Terms: ##??????????????????????cyl?????gear?Residuals ##?Sum?of?Squares??824.7846???8.2519??293.0107 ##?Deg.?of?Freedom????????2????????2????????27aov(mpg?~?cyl*gear,?mpg) ##?Terms: ##??????????????????????cyl?????gear?cyl:gear?Residuals ##?Sum?of?Squares??824.7846???8.2519??23.8907??269.1200 ##?Deg.?of?Freedom????????2????????2????????3????????24在有交互項(xiàng)的情況下,組間離差平方和由三部分組成:、、,其中表示交互項(xiàng)的離差平方和。
可以看出,交互項(xiàng)的出現(xiàn)不影響、、的值。那的值和自由度應(yīng)如何確定呢?
我們依然可以先使用線性回歸求出再反推:
fit2.lm?<-?lm(mpg?~?cyl*gear,?mpg) sum(residuals(fit2.lm)^2) ##?[1]?269.12不過也可以直接求出、、的和:
其中,表示交叉組的樣本均值。
將交叉組看作是由單個(gè)變量分組形成的,也可以使用類似單因素方差分析的方法直接計(jì)算:
假設(shè)交叉組的個(gè)數(shù)為,則、、的自由度之和為,因此的自由度為。
顯然,交叉組的最大數(shù)目為,在此情況下:
前文已經(jīng)提到,mpg數(shù)據(jù)中有一個(gè)交叉組不存在,因此,而對(duì)于平衡設(shè)計(jì)來說,總是成立的。
例2.4:手動(dòng)計(jì)算和
data?<-?mpg?%>%mutate(mean?=?mean(mpg))?%>%group_by(cyl,?gear)?%>%mutate(mean2?=?mean(mpg))?%>%ungroup()?%>%mutate(SSAB?=?(mean2?-?mean)^2,SSE?=?(mpg?-?mean2)^2)sum(data$SSAB)?-?824.7846?-?8.2519? ##?[1]?23.89069 sum(data$SSE) ##?[1]?269.122.5 多因素方差分析
從前文可以看出,即使只有兩個(gè)分組變量,I型方差分析的都很難直接計(jì)算。那對(duì)于多因素方差分析來說該如何計(jì)算各個(gè)離差平方和呢?下面通過兩個(gè)例子進(jìn)行說明。
例2.5:運(yùn)行形式最簡單的三因素方差分析
aov(mpg?~?cyl?+?gear?+?carb,?mpg) ##?Terms: ##??????????????????????cyl?????gear?????carb?Residuals ##?Sum?of?Squares??824.7846???8.2519??88.5199??204.4908 ##?Deg.?of?Freedom????????2????????2????????5????????22cyl的離差平方和:
fit1?<-?lm(mpg?~?cyl,?mpg)? sum((fitted(fit1)?-?mean(mpg$mpg))^2) ##?[1]?824.7846gear的離差平方和:
fit2?<-?lm(mpg?~?cyl?+?gear,?mpg)? sum((fitted(fit2)?-?mean(mpg$mpg))^2)?-?sum((fitted(fit1)?-?mean(mpg$mpg))^2) ##?[1]?8.251855carb的離差平方和:
fit3?<-?lm(mpg?~?cyl?+?gear?+?carb,?mpg)? sum((fitted(fit3)?-?mean(mpg$mpg))^2)?-?sum((fitted(fit2)?-?mean(mpg$mpg))^2) ##?[1]?88.5199Residuals的離差平方和:
sum(residuals(fit3)^2) ##?[1]?204.4908因此,I型方差分析可以使用逐步回歸的方法計(jì)算離差平方和。I型平方和又稱為順序平方和。
例2.6:運(yùn)行含有交互項(xiàng)的三因素方差分析
aov(mpg?~?cyl*gear?+?carb,?mpg) ##?Terms: ##??????????????????????cyl?????gear?????carb?cyl:gear?Residuals ##?Sum?of?Squares??824.7846???8.2519??88.5199??25.3878??179.1030 ##?Deg.?of?Freedom????????2????????2????????5????????2????????20aov(terms(mpg?~?cyl*gear?+?carb,?keep.order?=?T),?mpg) ##?Terms: ##??????????????????????cyl?????gear?cyl:gear?????carb?Residuals ##?Sum?of?Squares??824.7846???8.2519??23.8907??90.0170??179.1030 ##?Deg.?of?Freedom????????2????????2????????3????????4????????20默認(rèn)情況下,交互項(xiàng)會(huì)排在所有主效應(yīng)變量之后;而使用terms()函數(shù)可以更改設(shè)置。位置不同會(huì)導(dǎo)致離差平方和發(fā)生變化。
兩種情況下cyl:gear的離差平方和:
##?默認(rèn)情況 fit11?<-?lm(mpg?~?cyl?+?gear?+?carb,?mpg)? fit22?<-?lm(mpg?~?cyl*gear?+?carb,?mpg)? sum((fitted(fit22)?-?mean(mpg$mpg))^2)?-?sum((fitted(fit11)?-?mean(mpg$mpg))^2)? ##?[1]?25.38784##?更改后的情況 fit33?<-?lm(mpg?~?cyl?+?gear,?mpg)? fit44?<-?lm(mpg?~?cyl*gear,?mpg)? sum((fitted(fit44)?-?mean(mpg$mpg))^2)?-?sum((fitted(fit33)?-?mean(mpg$mpg))^2)? ##?[1]?23.89074正如aov()函數(shù)的幫助文檔所言,非平衡設(shè)計(jì)的I型方差分析的結(jié)果很難解釋。學(xué)堂君注意到<醫(yī)學(xué)方>公眾號(hào)的一篇推文對(duì)其做了非常直觀的解釋,有興趣的讀者可以閱讀:
關(guān)于方差分析,您必須知道的四種類型平方和
總結(jié)
以上是生活随笔為你收集整理的R语言基础 | 方差分析(2):多因素方差分析(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硬件nat关闭还是开启_潜在的NAT加速
- 下一篇: zabbix添加微信报警