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

2021-01-18 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語言與統計變得簡單!

相關焦點

  • 【學習記·第31期】單因素、雙因素方差分析VS協方差分析
    方差分析的基本步驟方差分析的基本程序是:陳述假設、方差齊性檢驗、確定檢驗的自由度、變異量的計算、檢驗及顯著性水平的確定、事後檢驗、給出方差分析表。下面以單因素完全隨機設計的實驗為例說明方差分析的基本步驟。
  • 單因素方差分析
    (一)單因素方差分析概念理解步驟  是用來研究一個控制變量的不同水平是否對觀測變量產生了顯著影響。這裡,由於僅研究單個因素對觀測變量的影響,因此稱為單因素方差分析。  例如,分析不同施肥量是否給農作物產量帶來顯著影響,考察地區差異是否影響婦女的生育率,研究學歷對工資收入的影響等。這些問題都可以通過單因素方差分析得到答案。  單因素方差分析的第一步是明確觀測變量和控制變量。例如,上述問題中的觀測變量分別是農作物產量、婦女生育率、工資收入;控制變量分別為施肥量、地區、學歷。  單因素方差分析的第二步是剖析觀測變量的方差。
  • 【案例】SPSS統計分析:多因素方差分析
    多因素方差分析,用於研究一個因變量是否受到多個自變量(也稱為因素)的影響,它檢驗多個因素取值水平的不同組合之間,因變量的均值之間是否存在顯著的差異。多因素方差分析既可以分析單個因素的作用(主效應),也可以分析因素之間的交互作用(交互效應),還可以進行協方差分析,以及各個因素變量與協變量的交互作用。
  • SPSS統計分析:多因素方差分析及案例
    多因素方差分析既可以分析單個因素的作用(主效應),也可以分析因素之間的交互作用(交互效應),還可以進行協方差分析,以及各個因素變量與協變量的交互作用。根據觀測變量(即因變量)的數目,可以把多因素方差分析分為:單變量多因素方差分析(也叫一元多因素方差分析)與多變量多因素方差分析(即多元多因素方差分析)。本文將重點講述一元多因素方差分析,下篇文章將詳細講述多元多因素方差分析。
  • r語言卡方檢驗和似然比檢驗_r語言似然比檢驗代碼 - CSDN
    因變量不只一個時,稱為多元方差分析(MANOVA)。有協變量時,稱為協方差分析(ANCOVA)或多元協方差分析(MANCOVA)。)#p大於0.05說明沒有顯著不同 #方差齊性分析對離群點非常敏感,需要補做一次離群點的檢測library(car)outlierTest(fit)#若沒有離群點,說明上述結果較為可信  單因素協方差分析: #單因素ANCOVAdata(litter, package = 「multcomp」)attach(litter
  • spss單因素方差分析的理論與實踐教程—— 【杏花開醫學統計】
    下面,我們來詳細了解單因素的方差分析(one-factor ANOVA)的基本原理、適用條件及其在SPSS中的具體操作。   其中,g表示處理水平數;   統計量     單因素方差分析根據統計量F值的大小作為判斷的標準,當H0成立時,F統計量服從F分布。若    時,則P≤0.05,拒絕H0,接受H1,即各樣本的總體均數不全相等;反之,則不拒絕H0,同時還不能得出各樣本總體均數不全相等的結論。
  • 從協方差分析看回歸與方差分析的聯繫
    文章來源: 丁點幫你微信公眾號作者:丁點helper無論是單因素還是雙因素方差分析,我們可以發現,它們都有一些共性,比如研究的因變量(如前文的硒含量、滿意度得分),都是定量變量;而自變量,即分組變量(如地區、教育程度、性別)都是定性變量。
  • 快速處理數據分析之協方差分析
    前兩篇文章,我們對雙因素方差分析以及事後比較做了較為詳細的說明。與一般的單因素方差分析相比,雙因素甚至多因素方差分析,更多的被用在實驗研究中。在實驗研究裡,還需要更多的考慮潛在的幹擾因素,比如「減肥方式」對於「減肥效果」的影響,年齡很可能是影響因素;同樣的減肥方式,但不同年齡的群體,減肥效果卻不一樣;年齡就屬於幹擾項,因此在分析的時候需要把它納入到考慮範疇中。如果方差分析時需要考慮幹擾項,此時就稱之為協方差分析,而幹擾項也稱著「協變量」。
  • SPSS——單因素方差分析
    單因素方差分析(one way anova),是一種較為常用的方差分析手段,主要目的是為了尋找多組數據總變異的真實來源,判斷總變異是來自於組內變異(Vin),還是來自於組間變異(Vbetween)。單因素方差分析的檢驗統計量F=Vbetween/Vin,表示組間變異與組內變異的比值。
  • 2011年質量專業資格輔導:協方差分析
    (一)協方差分析基本思想  通過上述的分析可以看到,不論是單因素方差分析還是多因素方差分析,控制因素都是可控的,其各個水平可以通過人為的努力得到控制和確定。但在許多實際問題中,有些控制因素很難人為控制,但它們的不同水平確實對觀測變量產生了較為顯著的影響。
  • SPSS單因素方差分析——菜鳥篇
    很多小夥伴對科技論文或畢業論文的數據分析方法存在諸多疑惑,最多的問題就是:我該用什麼分析方法?SPSS怎麼操作?結果怎麼詮釋?關注我們並做好筆記,相信你從菜鳥到精通SPSS不會很慢。本次內容我們將帶大家認識單因素方差分析,一起來學習吧!
  • 單因素方差分析(one-way ANOVA)
    來源:網絡單因素方差分析 (一)單因素方差分析概念
  • SPSS醫學統計高能方法:單因素方差分析(One Way ANOVA)——【杏花開醫學統計】
    ——單因素方差分析(One Way ANOVA)①單因素方差分析的分組要求:三組或者三組以上的差異對比;②單因素方差分析的指標類型要求:連續數值型變量且服從正態分布(每一組數據都要服從正態分布) 請觀看下方視頻教程
  • spss協方差分析
    什麼是協方差分析?協方差分析又稱「共變量分析」,是方差分析的引申和擴大。基本原理是將線性回歸與方差分析結合起來,調整各組平均數和 F 檢驗的實驗誤差項,檢驗兩個或多個調整平均數有無顯著差異,以便控制在實驗中影響實驗效應(因變量)而無法人為控制的協變量(與因變量有密切回歸關係的變量)在方差分析中的影響。好吧,聽不懂。簡單舉個例子來說:有一項研究,想知道男生和女生在跑步後的心率是否有差異。
  • 醫學統計與R語言:GiViTI Calibration Belt
    醫學統計與R語言:這個Calibration plot有點色!醫學統計與R語言:樣本方差的抽樣分布醫學統計與R語言:標準Z值一定服從標準正態分布?>醫學統計與R語言:Probit回歸模型及邊際效應(Marginal effects)醫學統計與R語言:Lord’s Paradox醫學統計與R語言:協方差分析(ANCOVA)+plus醫學統計與R語言:Kendall是誰?
  • SPSS之單因素方差分析ANOVA
    方差分析是對多個(兩個以上)處理平均數進行假設檢驗的方法。單因素是指該實驗中只有一個實驗因素,而單因素方差分析則是用來判斷這一實驗因素對各處理的優劣情況。簡單而言,如果實驗只有一種影響因素,但又有多個不同的處理水平,最後得到的數據就可以用單因素方差分析來分析數據。在方差分析的體系中,單因素方差分析,即F測驗通過對數據差異的分析來推斷兩個或多個樣本均數所代表的總體均數是否有差別,可用於檢測某項變異因素的效應或方差是否存在。F越大,說明組間方差是主要方差來源,處理的影響越顯著;F越小,越說明隨機方差是主要的方差來源,處理的影響越不顯著。
  • SPSS實操教程——單因素方差分析
    這個時候需要使用方差分析。那怎麼做呢?做分析之前需要思考幾個問題?是不是單因素?是不是獨立?各組應變量是不是符合正態分布?各組應變量是不是方差齊性?好,他這個研究是單因素的,只是分析了藥物一個因素,包括三種不同的藥物,分為三組。而且各組之間也是相互獨立的。
  • 如何用SPSS做單因素和多因素方差分析
    前段時間明明同學推送了一篇「如何用Excel做方差分析」,今天就講講如何用SPSS為大家展示常用的3種分析方法使用技巧即:單因素方差分析、雙因素方差分析(無交互效應和有交互效應)。讓大家對方差分析有一個更深的了解。首先,我們來了解一下什麼是方差分析。方差分析是對多個樣本平均數差異顯著性檢驗的一種方法,也就是推斷對多個樣本均數是否相等的方法。
  • SPSS方差分析方法與實例演練
    在數據分析過程中,為了進行兩組以上均數的比較,往往可以使用方差分析方法。那麼我們一起了解一下方差分析基本概念、 單因素方差分析、 多因素方差分析及協方差分析;同時在spss中的操作演練。單因素方差分析:單因素方差分析測試某一個控制變量的不同水平是否給觀察變量造成了顯著差異和變動。
  • 協方差(covariance)與相關係數(2)
    相關係數的計算公式:從上面的公式中可以看出:相關係數的計算公式中包括x與y的協方差、x的方差和y的方差。故計算x與y的協方差是計算相關係數的基礎。分母的作用是將協方差的結果調整至[-1,1],故相關係數不受數據scale的影響。