R語言統計篇: 單因素協方差分析

2021-03-02 R語言和統計



單因素方差分析(One-way ANCOVA)可以研究一個分類變量對一個連續變量的影響,同時校正其他變量的作用,這些變量也稱為協變量(Covariate)。也是單因素方差分析(One-way ANOVA,R語言統計篇:單因素方差分析)的一個延伸。比方說,我們現在想要研究不同BMI(偏輕,正常與超重)與空腹血糖的關係,同時校正血壓水平。在此研究中,BMI分組是一個分類變量(自變量),血糖是一個連續變量(因變量),血壓則是一個協變量(covariate)。c. 在各個組別中,因變量與協變量之間需呈線性關係;d. 在各個組別中,因變量與協變量所形成的回歸直線的斜率相等


協方差分析的理論知識較複雜,感興趣的讀者可以參考其他教材讀物。本公眾號更偏重實戰,直接分享代碼迅速帶你走起來。使用到的數據來自{datarium}裡面的「stress」,首先安裝{dataruim}。
# 安裝datarium
install.packages("datarium")
# 載入
library(datarium)
# 查看stress的基本信息
summary(stress)

 #      id            score        treatment     exercise       age       
#Min. : 1.00 Min. : 65.80 yes:30 low :20 Min. :52.00
#1st Qu.:15.75 1st Qu.: 80.40 no :30 moderate:20 1st Qu.:57.00
#Median :30.50 Median : 85.55 high :20 Median :60.00
#Mean :30.50 Mean : 84.58 Mean :59.95
#3rd Qu.:45.25 3rd Qu.: 90.80 3rd Qu.:62.00
#Max. :60.00 Max. :100.00 Max. :75.00

「stress」數據集記錄了幾個變量與壓力水平(stress)的關係。為了簡化上述的數據,小編只提取三個變量:score,exerciseage。於是,我們的研究問題變成了:校正協變量年齡(age)後,運動(exercise)是否與壓力水平(score)有關?下一步,提取三個變量(age, exercise與score): 
# 提取三個變量
mydata <- stress[, c("score", "exercise", "age")]
# 查看mydata
summary(mydata)

 #    score            exercise       age       
#Min. : 65.80 low :20 Min. :52.00
#1st Qu.: 80.40 moderate:20 1st Qu.:57.00
#Median : 85.55 high :20 Median :60.00
#Mean : 84.58 Mean :59.95
#3rd Qu.: 90.80 3rd Qu.:62.00
#Max. :100.00 Max. :75.00


其中,exercise包含三組:low, moderate與high,分別代表運動強度的低、中、高組。
# 載入car,需提前安裝
library(car)
# Levene檢驗
leveneTest(mydata$score, mydata$exercise)

#Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)
#group 2 0.9593 0.3893
# 57

其中,Pr(>F) 為0.3893,提示各組別間的方差沒有統計學差異,即違反方差齊性原則。
# 建立回歸模型,協變量age需在exercise前
myfit1 <- lm(score ~ age + exercise, data = mydata)
# 將殘差作直方圖
hist(residuals(myfit1))

2.3 在各個組別中,因變量與協變量之間需呈線性關係
library(ggplot2)
ggplot(mydata, aes(age, score, color = exercise)) +
geom_point() +
geom_smooth(method = "lm", se = F)

通過肉眼觀察,age與score在各組間大體上呈線性關係。在回歸方程中添加交互項,如果交互項存在顯著性,那麼就違反此原則;反之,則沒有違反。
# 含有交互項
myfit2 <- lm(score ~ age + exercise + age:exercise, data = mydata)
Anova(myfit2, type = "III")

#Anova Table (Type III tests)

#Response: score
# Sum Sq Df F value Pr(>F)
#(Intercept) 374.13 1 11.2246 0.001478 **
#age 65.62 1 1.9686 0.166319
#exercise 21.05 2 0.3158 0.730555
#age:exercise 13.70 2 0.2055 0.814867
#Residuals 1799.88 54
#---
#Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1


myfit2中的age:exercise即為交互項,從結果可知,交互項的p值為0.815,提示沒有統計學意義,即沒有違反此前提。由於我們沒有違反協方差分析的前提,接下來就可以進行協方差分析了,並且毫無後顧之憂
# 協方差分析
myfit1 <- lm(score ~ age + exercise, data = mydata)
Anova(myfit1, type = "III")

#Anova Table (Type III tests)

#Response: score
# Sum Sq Df F value Pr(>F)
#(Intercept) 670.77 1 20.7121 2.917e-05 ***
#age 298.42 1 9.2147 0.003639 **
#exercise 980.91 2 15.1444 5.528e-06 ***
#Residuals 1813.58 56
#---
#Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1

從上述結果中可以得出以下結論:在校正年齡後,運動與壓力水平有關,並且結果存在統計學意義(p = 5.528e-06)。
目前只知道運動與壓力水平有關,但不知道具體哪些組之間存在差異,因此需要進行多重比較來回答這個問題。
# 安裝所需R包
install.packages("emmeans")
install.packages("rstatix")

# 載入
library(emmeans)
library(rstatix)

# 兩兩比較
pwc <- emmeans_test(
score ~ exercise, covariate = age,
p.adjust.method = "bonferroni",
data = mydata
)
pwc

## A tibble: 3 x 9
# term .y. group1 group2 df statistic p p.adj p.adj.signif
#* <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr>
#1 age*exercise score low moderate 56 -0.105 0.917 1 ns
#2 age*exercise score low high 56 4.68 0.0000186 0.0000557 ****
#3 age*exercise score moderate high 56 5.02 0.00000558 0.0000167 ****


# A tibble: 3 x 8
age exercise emmean se df conf.low conf.high method
<dbl> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 60.0 low 87.6 1.32 56 85.0 90.3 Emmeans test
2 60.0 moderate 87.8 1.28 56 85.2 90.4 Emmeans test
3 60.0 high 78.3 1.36 56 75.6 81.0 Emmeans test

high組(78.3±1.36)的壓力水平要顯著低於low組(87.6± 1.32)與moderate組(87.8 ± 1.28),而low組與moderate組沒有統計學差異。

Discovering statistics using R, Andy Field.‍


▌聲明:本文由R語言和統計首發,轉載請註明

▌編輯:June

相關焦點

  • 【學習記·第31期】單因素、雙因素方差分析VS協方差分析
    方差分析的基本步驟方差分析的基本程序是:陳述假設、方差齊性檢驗、確定檢驗的自由度、變異量的計算、檢驗及顯著性水平的確定、事後檢驗、給出方差分析表。下面以單因素完全隨機設計的實驗為例說明方差分析的基本步驟。
  • R語言 | 方差分析(下)
    方差檢驗可以處理並分析兩組及其以上的樣本量之間均數差異的比較,它的H1是至少有一組均數與其他組不一樣。F統計量的計算是通過組間均方差與組內均方差的比值得到的。單因素方差分析使用aov( )函數、Anova( )函數(car包)、ezANOVA( )函數(ez包)均可。
  • SPSS統計:單因素方差分析與單變量方差分析
    在spss統計分析中,方差分析在比較均值菜單和一般線性模型菜單中都可以做,單因素方差分析一般稱為單因素
  • 生物統計(4)-單因素方差分析
    方差分析的基本思想在進行科學研究時,有時要按實驗設計將所研究的對象分為多個處理組進行不同的處理,其中處理因素(treatment)至少有兩個水平(level)。這類科研資料的統計分析,是通過所獲得的樣本信息來推斷各處理組均數間的差別是否有統計學意義,即處理是否有影響。
  • 協方差分析
    一、協方差分析基本思想  通過上述的分析可以看到,不論是單因素方差分析還是多因素方差分析,控制因素都是可控的,其各個水平可以通過人為的努力得到控制和確定。但在許多實際問題中,有些控制因素很難人為控制,但它們的不同水平確實對觀測變量產生了較為顯著的影響。
  • R語言實戰:方差分析
    均衡設計 vs 非均衡設計單因素方差分析 one-way ANOVA,單因素組間方差分析組內因子單因素組內方差分析,重複測量方差分析主效應 vs 交互效應因素方差分析設計混合模型方差分析混淆因素 confounding factor幹擾變數 nuisance variable
  • R與生物專題 | 第十四講 R-單因素方差分析1
    在「R與生物統計專題」中,我們會從介紹R的基本知識展開到生物統計原理及其在R中的實現。
  • 菜鳥也愛數據分析之SPSS篇 —單因素方差分析
    菜鳥也愛數據分析之SPSS篇—單因素方差分析一、   前言生活中會遇到各種各樣的問題,有些問題的解答是建立在一定量的數據基礎上的,這就使數據分析有了用武之地。或許你會問,數據分析和我有什麼關係呢,我又不是數據分析師。
  • SPSS單因素方差分析——菜鳥篇
    很多小夥伴對科技論文或畢業論文的數據分析方法存在諸多疑惑,最多的問題就是:我該用什麼分析方法?SPSS怎麼操作?結果怎麼詮釋?關注我們並做好筆記,相信你從菜鳥到精通SPSS不會很慢。本次內容我們將帶大家認識單因素方差分析,一起來學習吧!
  • SPSS教程:單因素多元方差分析(One-way MANOVA)
    (四) 檢驗假設4: 是否存在多因素離群值在SPSS中,有許多方法可以檢驗多因素離群值,但是在單因素多元方差分析中的多因素離群值,一般推薦用馬氏距離(Mahalanobis distance)來判斷是否存在多因素離群值。
  • 【視頻教學】SPSS中級統計--S02-5協方差分析
    小夥伴們,今天我們學習SPSS中級統計--協方差分析。
  • 方差分析(二): ANOVA過程單因素方差分析
    >「朝陽35處」可查看「說人話的大數據」系列合輯在方差分析中,最簡單的情形為單因素。在SAS中進行單因素方差分析可以使用ANOVA過程和GLM過程,本文先對ANOVA過程進行方差分析進行介紹,下面一篇將文章介紹SLM過程進行方差分析。在方差分析中,最簡單的情形為單因素,熟練掌握單因素的方差分析對理解、解決多因素方差問題很有幫助。在SAS中,方差分析可以通過PROC TTEST、PROC ANOVA與PROC GLM實現。
  • 數學建模培訓26_數據分析基礎(3)_單因素方差分析
    方差分析就是一種分析、處理多組實驗數據間均值差異的顯著性的統計方法。其主要任務是,通過對數據的分析處理,搞清楚各實驗條件對實驗結果的影響,以便更有效地指導實踐,提高經濟效益或者科研水平。在統計中,人們稱受控制的條件為因素,因素所處的狀態稱為水平。
  • 物理師科研小助手——SPSS統計軟體——連續變量統計推斷(單因素方差分析)
    t檢驗可以解決單樣本和兩樣本均數比較,對於兩組以上樣本進行比較則需要用到單因素方差分析。方差分析的基本理論:將總變異分解為研究因素所致的變異(組間變異)和抽樣誤差所致的變異(組內變異),通過比較不同來源的變異進行統計推斷。
  • 【科研加油站】SPSS操作之單因素多元方差分析(One-way MANOVA)
    上一期我們討論了協方差分析的SPSS詳細操作,本期「科研加油站」欄目,我們一起來探討單因素多元方差分析(One-way MANOVA)的SPSS操作。研究者想知道三所初中的學生學習成績是否不同,因此從A、B、C三所學校隨機選擇20名學生,並記錄了他們期末的英語成績和數學成績(英語成績記為English_Score,數學成績記為Math_Score)。
  • SPSS實操教程——單因素方差分析
    這個時候需要使用方差分析。那怎麼做呢?做分析之前需要思考幾個問題?是不是單因素?是不是獨立?各組應變量是不是符合正態分布?各組應變量是不是方差齊性?好,他這個研究是單因素的,只是分析了藥物一個因素,包括三種不同的藥物,分為三組。而且各組之間也是相互獨立的。
  • 如何用SPSS做單因素和多因素方差分析
    前段時間明明同學推送了一篇「如何用Excel做方差分析」,今天就講講如何用SPSS為大家展示常用的3種分析方法使用技巧即:單因素方差分析、雙因素方差分析(無交互效應和有交互效應)。讓大家對方差分析有一個更深的了解。首先,我們來了解一下什麼是方差分析。方差分析是對多個樣本平均數差異顯著性檢驗的一種方法,也就是推斷對多個樣本均數是否相等的方法。
  • 2011年質量專業資格輔導:單因素方差分析
    (一)單因素方差分析概念理解步驟  是用來研究一個控制變量的不同水平是否對觀測變量產生了顯著影響。這裡,由於僅研究單個因素對觀測變量的影響,因此稱為單因素方差分析。  例如,分析不同施肥量是否給農作物產量帶來顯著影響,考察地區差異是否影響婦女的生育率,研究學歷對工資收入的影響等。這些問題都可以通過單因素方差分析得到答案。  單因素方差分析的第一步是明確觀測變量和控制變量。例如,上述問題中的觀測變量分別是農作物產量、婦女生育率、工資收入;控制變量分別為施肥量、地區、學歷。  單因素方差分析的第二步是剖析觀測變量的方差。
  • 【如何寫論文系列之 SPSS數據分析】單因素方差分析
    什麼是單因素方差分析?在解釋單因素方差之前,我們先來了解兩個重要的概念:因素和水平。研究中需要檢驗某一因素(三個及三個以上水平)的多個水平是否對某個定量數據產生影響時,可以使用單因素方差分析。自變量:定類數據,且類別為三個及三個以上(即包含多個水平的一個因素)因變量:定量數據單因素方差分析的應用條件每一種統計方法都有其適用的條件,當研究數據需要滿足以下條件時,才能進行單因素方差分析。
  • SPSS分析技術:單因素方差分析結果的模型解讀
    平時我們在進行方差分析時,經常只關注方差分析表,用表中的顯著性概率值p來判斷因素是否對因變量有顯著性影響,然而這只是方差分析結果的一部分內容。SPSS的方差分析過程就是以方差分析模型的形式進行計算和結果輸出的。下面我們將以單因素方差分析為例,介紹單因素方差分析結果的模型函數解讀。幫助大家充分理解方差分析的深層模型含義。