R語言從入門到精通:Day11

文章推薦指數: 80 %
投票人數:10人

ANOVA和回歸方法(下一次推文的主要內容)雖然都是獨立發展而來,但是從函數形式上看,它們都是廣義線性模型的特例。

用學習繪圖時用到的函數lm()也能分析 ... R語言從入門到精通:Day11 2019年10月6日 筆記 來源:「科研貓」 在上一次推文中,我們已經介紹了兩組獨立樣本的t檢驗,今天我們來介紹用於常見實驗設計的方差分析大全。

在上一次推文中,我們已經介紹了兩組獨立樣本的t檢驗,那麼多組(大於兩組)樣本的比較就要用到這次推文中介紹的方差分析(ANOVA)了。

方差分析在各種實驗和准實驗設計的分析中都有廣泛應用,接下來將要介紹用於常見研究設計分析的R函數。

在開始閱讀之前,我建議大家能回頭去複習一下方差分析的基礎知識,特別是一些基本術語,對接下來的學習會有很大幫助。

溫馨提示 1、本節內容重點內容較多, 務必緊跟紅色標記。

2、測試數據及程式碼 見文末客服小姐姐二維碼。

1、基礎方差分析 ANOVA和回歸方法(下一次推文的主要內容)雖然都是獨立發展而來,但是從函數形式上看,它們都是廣義線性模型的特例。

用學習繪圖時用到的函數lm()也能分析ANOVA模型。

不過,這裡我們基本都使用函數aov()。

兩個函數的結果是等同的,但函數aov()函數展示結果的格式更容易理解。

為保證完整性,最後會提供一個使用函數lm()的例子供大家參考。

函數aov()的用法和之前接觸過的函數略有不同,語法為aov(formula,data=dataframe),參數formula代表了方差分析實驗設計中將要研究的變數之間的關係。

表1和表2分別列舉了表達式中常見的符號和常見的表達式。

表1:表達式中常見符號 表2:常見表達式及對應實驗設計。

重點:表達式右邊的式子並不符合「交換律」,即式子右邊的變數順序很重要。

變數順序在以下兩種情況下會造成影響:(1)因子不止一個,並且是非平衡設計;(2)存在協變數。

例如,對於雙因素方差分析,若不同處理方式中的觀測數不同,那麼模型y~A*B與模型y~B*A的結果不同。

此外,以表達式y~A+B+A:B為例,R會默認這樣理解它(序貫型):(1)A對y的影響;(2)控制A時,B對y的影響;(3)控制A和B的主效應時,A與B的交互效應。

(對於任意表達式而言,有三種理解方式,分別是序貫型、分層型、邊界型。

其中R默認調用序貫型,而有些統計軟體(如SPSS)默認調用邊界型。

也不用擔心必須應用其它兩種理解方式的情形,R中提供了很多函數包來應對(如包car中的函數Anova())。

) 2、單因素方差分析 從最簡單的情況出發,單因素方差分析中,你感興趣的是比較分類因子定義的兩個或多個組別中的因變數均值。

以multcomp包中的cholesterol數據集為例(實驗設計為:50個患者均接受降低膽固醇藥物治療(trt)五種療法中的一種療法。

其中三種治療條件使用藥物3相同,分別是20mg一天一次(1time)、10mg一天兩次(2times)和5mg一天四次(4times)。

剩下的兩種方式(drugD和drugE)代表候選藥物。

哪種藥物療法降低膽固醇(響應變數)最多呢?)。

利用單因素方差分析對不同療法做F檢驗,結果非常顯著(p<0.0001)的說明五種療法的效果不同。

(利用包gplot中的函數plotmeans()繪製了組均值圖形,圖中也可以清楚的看到它們之間的差異。

程式碼見文末找胖雨小姐姐。

) 圖1:單因素方差分析,五種療法的均值差異 上面的分析之後,你肯定會對究竟哪種療法與其他療法不同感興趣。

多重比較可以解決這個問題。

函數TukeyHSD()可以回答你的疑問。

利用函數plot()將多重比較結果繪製為圖形,圖形中置信區間包含0的療法說明差異不顯著(p>0.5)。

圖2:多重比較示例1 包multcomp中的函數glht()函數提供了多重均值比較更為全面的方法,下面是圖形化的分析結果。

程式碼中,函數cld()中的參數level設置了使用的顯著水平(0.05,即本例中的95%的置信區間)。

有相同字母的組(用箱線圖表示)說明均值差異不顯著。

(做完上面這些工作並不意味著分析結束了,必須要檢查數據是否滿足統計檢驗的假設條件的程度,單因素方差分析中,我們假設因變數服從正態分布,各組方差相等。

可以使用Q-Q圖(函數qqPlot())來檢驗正態性假設,用函數bartlett.test()檢查方差齊性。

後台程式碼已提供示例。

) 圖3:多重比較示例2 3、單因素協方差分析 單因素協方差分析(ANCOVA)擴展了單因素方差分析(ANOVA),包含一個或多個定量的協變數。

下面的例子來自於包multcomp中的litter數據集。

懷孕小鼠被分為四個小組,每個小組接受不同劑量(0、5、50或500)的藥物處理。

產下幼崽的體重均值為因變數,懷孕時間為協變數。

ANCOVA的F檢驗表明:(1)懷孕時間與幼崽出生體重相關;(2)控制懷孕時間,藥物劑量與出生體重相關。

控制懷孕時間,確實發現每種藥物劑量下幼崽出生體重均值不同。

(由於使用了協變數,你可能想要獲取調整的組均值,即去除協變數效應後的組均值。

可使用effects包中的effects()函數來計算調整的均值。

) 圖4:單因素協方差分析示例 與單因素方差分析類似,劑量的F檢驗雖然表明了不同的處理方式幼崽的體重均值不同,但無法告知我們哪種處理方式與其他方式不同。

用multcomp包來對所有均值進行成對比較或者對你感興趣的對照進行比較分析(程式碼中提供了未用藥與用藥條件之間的比較)。

單因素協方差分析也需要正態性和方差齊性假設,檢查方法與單因素方差分析中一樣,此外,單因素協方差分析還需要假定回歸斜率相同,示例如下。

圖5:單因素協方差分析的斜率相同檢查 圖5中,可以看到交互效應不顯著,支援了斜率相等的假設。

若假設不成立,可以嘗試變換協變數或因變數,或使用能對每個斜率獨立解釋的模型,或使用不需要假設回歸斜率同質性的非參數ANCOVA方法。

包sm中的函數sm.ancova()為後者提供了一個例子。

還可以用包HH中的函數ancova()對單因素協方差分析的結果進行可視化。

從圖6中可以看出,用懷孕時間來預測出生體重的回歸線相互平行,只是截距項不同。

隨著懷孕時間增加,幼崽出生體重也會增加。

另外,還可以看到0劑量組截距項最大,5劑量組截距項最小。

(不妨嘗試一下將程式碼中ancova(weight~gesttime+dose)改為ancova(weight~gesttime*dose),圖片出現了什麼變化呢?) 圖6:單因素協方差分析可視化 4、雙因素方差分析 討論完單因素方差分析,我們來看一下更複雜的情形:雙因素方差分析和重複測量方差分析。

在雙因素方差分析中,受試者被分配到兩因子的交叉類別組中。

以基礎安裝中的ToothGrowth數據集為例,隨機分配60隻豚鼠,分別採用兩種餵食方法(橙汁或維生素C),各餵食方法中抗壞血酸含量有三種水平(0.5mg、1mg或2mg),每種處理方式組合都被分配10隻豚鼠。

其中,牙齒長度為因變數。

分析結果可以採用函數interaction.plot()、包gplots中的函數plotmeans()或者包HH中的函數interaction2wt()來可視化,下面展示一下函數interaction2wt()的例子。

(三種方法中,更推薦包HH中的函數interaction2wt(),因為它能展示任意複雜度設計(雙因素方差分析、三因素方差分析等)的主效應(箱線圖)和交互效應。

程式碼中提供了三種方法的示例,大家可以自己選擇偏好的方式。

) 圖7:函數interaction2wt()示例 5、重複測量方差分析 而所謂重複測量方差分析,即受試者被測量不止一次。

示例來源於基礎安裝包中的CO2數據集,包含了北方和南方牧草類植物Echinochloacrus-galli的寒冷容忍度研究結果,在某濃度二氧化碳的環境中,對寒帶植物與非寒帶植物的光合作用率進行了比較。

因變數是二氧化碳吸收量(uptake),自變數是植物類型Type和七種水平的二氧化碳濃度(conc)。

另外,Type是組間因子,conc是組內因子。

Type已經被存儲為一個因子變數,還需要將conc轉換為因子變數。

方差分析表表明在0.01的水平下,主效應類型和濃度以及交叉效應類型×濃度都非常顯著,圖8中通過函數boxplot()展示了交互效應。

程式碼找文末客服小姐姐。

圖8:函數boxplot()的結果可視化 6、多元方差分析 前面我們討論都是單個因變數的情形,當因變數(結果變數)不止一個時,可用多元方差分析(MANOVA)對它們同時進行分析。

以MASS包中的UScereal數據集為例,研究穀物中的卡路里、脂肪和糖含量是否會因為儲存架位置的不同而發生變化。

卡路里、脂肪和糖含量是因變數,貨架是三水平(1、2、3)的自變數。

函數manova()能對組間差異進行多元檢驗。

方差分析表中F值顯著,說明三個組的營養成分測量值不同。

函數summary.aov()可以對每一個變數做單因素方差分析。

(單因素多元方差分析有兩個前提假設,一個是多元正態性,一個是方差協方差矩陣同質性,可以用Q-Q圖來檢驗假設條件。

還可以使用包mvoutlier中的函數ap.plot()來檢驗多元離群點。

方差分析及假設檢驗程式碼見後台。

) 每種方差分析後的評估假設檢驗都是很重要的,前面的例子都通過了檢查,可是現實中總會出現不符合假設條件的情況,那麼可以考慮用穩健或非參數版本的MANOVA檢驗。

穩健單因素MANOVA可通過包rrcov中的函數Wilks.test()實現。

包vegan中的函數adonis()則提供了非參數MANOVA的等同形式。

程式碼中提供函數Wilks.test()的例子。

最後,我們來兌現教程最開始的「諾言」,給大家介紹一個用回歸來做的方差分析。

實際上,ANOVA和回歸都是廣義線性模型的特例,前面所有的設計都可以用函數lm()來分析。

以單因素方差分析實例為例,即比較五種降低膽固醇藥物療法(trt)的影響。

結果如下: 圖9:函數lm()做方差分析 小結 本次教程內容比較多,包括了單因素ANOVA、單因素ANCOVA、雙因素ANOVA、重複測量ANOVA和多因素MANOVA。

除了這些基本分析,還介紹了模型的假設檢驗,以及應用多重比較過程來進行綜合檢驗的方法,對各種結果可視化方法也進行了探索。

下一次的重點將是回歸分析。

還在堅持學習的各位,要加油哦~ 分享此文:分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟)按一下以分享到Telegram(在新視窗中開啟)分享到Pinterest(在新視窗中開啟)更多點這裡列印(在新視窗中開啟)分享到LinkedIn(在新視窗中開啟)分享到Reddit(在新視窗中開啟)分享到Tumblr(在新視窗中開啟)分享到Pocket(在新視窗中開啟)分享到WhatsApp(在新視窗中開啟)按一下即可分享至Skype(在新視窗中開啟) RelatedPosts 2020年1月9日 第十五章Python多進程與多執行緒 2022年8月14日 pytest-fixture執行順序 作用域-scope作用域越大,越先執行,session>package>module>class&g&helli.. Previouspost雲桌面能否包打天下? Nextpost用SimpleHTMLDOM自動查高考分數與錄取情況 VirMach便宜VPS BlackFridayFlashSale (2021/9/14~) 1CoreCPU 1GBRam 20GBSSD 1年只要USD$5up!!! Tips:Offer10分鐘更新一次 Newcustomers,75%offfor2months. 1CoreCPU 1GBRam 25GBSSD 每月只要USD$1.75!!! VirMachVPSHosting VPSGamersVPSHosting VPSCraftVPSHosting VPSharedVPSHosting QNews 熱門文章 OpenCV電腦視覺學習(5)——形態學處理(腐蝕膨脹,開閉運算,禮帽黑帽,邊緣檢測) 深度學習|sklearn的train_test_split()各函數參數含義解釋(超級全) 微軟送福利:硬體不支援也能安裝Win11了!這是方法 玩遊戲顯示卡重要還是CPU重要?終於懂了 C#合併和拆分PDF文件 底氣十足!中芯國際硬實力曝光:甩掉三星 現在可以看到RTX3090的Hotspot溫度和顯示記憶體溫度了 大學四年,總結一套適合小白的Java自學路線和方法 Kubernetes入門,使用minikube搭建本地k8s環境 如何判斷電腦是否支援PCIe4.0?一文看懂 熱門搜尋.NET .NETCore 5G AMD c# CPU處理器 docker Intel iPhone手機 JAVA javascript linux MySQL NVIDIA PC遊戲 Python Redmi Windows10 Windows作業系統 三星 華為 小米 微信 微軟 新冠疫苗 新冠病毒 新冠肺炎 日本 顯示卡 智慧手機 比亞迪 汽車 遊戲 特斯拉 生科醫學 電動車 電影 筆記型電腦 演算法 網友熱議 美國 騰訊 晶片 蘋果 馬斯克 . 简体中文 大陆简体 港澳繁體 马新简体 马来西亚简体 繁體中文



請為這篇文章評分?