溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

R中如何實(shí)現(xiàn)方差分析ANOVA

發(fā)布時(shí)間:2022-01-21 11:41:19 來(lái)源:億速云 閱讀:773 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)R中如何實(shí)現(xiàn)方差分析ANOVA,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

R實(shí)現(xiàn)統(tǒng)計(jì)中的檢驗(yàn)方法---方差分析ANOVA

前言

方差分析(均數(shù)的顯著性檢驗(yàn))

方差分析(Analysis of Variance,簡(jiǎn)稱ANOVA),又稱“變異系數(shù)分析”,是R.A.Fisher發(fā)明的,用于兩個(gè)及兩個(gè)以上樣本均數(shù)差別的顯著性檢驗(yàn)。

1.適用條件

方差分析數(shù)據(jù)必須滿足3個(gè)條件即獨(dú)立、正態(tài),方差齊次性。

---------------------#正態(tài)性檢驗(yàn)#---------------------
#Shapiro-Wilk檢驗(yàn)用來(lái)檢驗(yàn)數(shù)據(jù)是否符合正態(tài)分布,類似于線性回歸的方法一樣,是檢驗(yàn)其于回歸曲線的殘差。
#該方法作者推薦在樣本量很小的時(shí)候使用,比如N<20。但是也有作者推薦在大數(shù)據(jù)集上使用。該作者將這種修改
#后的方法運(yùn)用在R語(yǔ)言的stats包中的shapiro.test函數(shù)中。該檢驗(yàn)原假設(shè)為H0:數(shù)據(jù)集符合正態(tài)分布。

#R語(yǔ)言中的Shapiro-Wilk檢驗(yàn)(W檢驗(yàn)),shapiro.test(x)該函數(shù)只有一個(gè)參數(shù)即數(shù)據(jù)集x。x可以是數(shù)值型向量,允許存在NA
#但是非丟失數(shù)據(jù)需要在3-5000內(nèi)。
##example##
#11個(gè)隨機(jī)抽取的樣本的體重(斤)數(shù)據(jù)為:148,154,158,160,161,162,166,170,182,195,236
k<-c(148,154,158,160,161,162,166,170,182,195,236)
shapiro.test(k)
        Shapiro-Wilk normality test

data:  k
W = 0.78881, p-value = 0.006704
##p=0.0067<-0.05,拒絕原假設(shè),該數(shù)據(jù)不符合正態(tài)分布。


---------------------#方差齊性檢驗(yàn)#---------------------
#R中最常用的方差齊性檢驗(yàn)(bartlett檢驗(yàn)),bartlett.test()調(diào)用格式為bartlett.test()調(diào)用格式為
#bartlett.test(x,g...)其中,參數(shù)x是數(shù)據(jù)向量或列表(list);g是因子向量,如果x是列表則忽略g,當(dāng)使用數(shù)據(jù)集時(shí),也通過formula調(diào)用函數(shù)
##example##
#以multcomp包中的cholesterol數(shù)據(jù)集為例
library(multcomp)
head(cholesterol)
   trt response
1 1time   3.8612
2 1time  10.3868
3 1time   5.9059
4 1time   3.0609
5 1time   7.7204
6 1time   2.7139
bartlett.test(response~trt,data=cholesterol)
 Bartlett test of homogeneity of variances

data:  response by trt
Bartlett's K-squared = 0.57975, df = 4, p-value = 0.9653
#Bartlett檢驗(yàn)表明五組的方差并沒有顯著不同(p=0.97)

2.分類(按因素分)

單因素方差分析、二因素方差分析和多因素方差分析。(單因素方差分析主要對(duì)因素的主效應(yīng)進(jìn)行分析,而二因素及多因素方差分析除了多組效應(yīng)分析外,還可對(duì)因素間的交互作用進(jìn)行分析。分析交互作用時(shí),觀測(cè)值必須有重復(fù))

3.R實(shí)例

R中的函數(shù)aov()用于方差分析的計(jì)算,其調(diào)用格式為:

aov(formula,data=NULL,projections=FALSE,qr=TRUE,contrasts=NULL,...)
#其中的參數(shù)formula表示方差分析的公式,在單因素方差分析中即為X~A;data表示做方差分析的數(shù)據(jù)框;
projections為邏輯值,表示是否返回預(yù)測(cè)結(jié)果;qr同樣是邏輯值,表示是否返回QR分解結(jié)果,默認(rèn)為TRUE;
contrasts是公式中的一些因子的對(duì)比列表。通過summary()可列出分析表的詳細(xì)結(jié)果。
#詳情參見R語(yǔ)言實(shí)戰(zhàn)(第2版)page:201.

單因素方差分析

---------------------#單因素方差分析#---------------------
#單因素方差分析比較的是分類因子定義的兩個(gè)或多個(gè)組別中的因變量均值。以multcomp包中cholesterol數(shù)據(jù)集為例。

##正態(tài)性檢驗(yàn)
library(multcomp)
head(cholesterol)
str(cholesterol)
shapiro.test(cholesterol$response)
      Shapiro-Wilk normality test

data:  cholesterol$response
W = 0.97722, p-value = 0.4417
#結(jié)果表明,p=0.4417>0.05,接受原假設(shè),說明數(shù)據(jù)在五個(gè)水平下都是正態(tài)分布的。

##方差齊性檢驗(yàn)
bartlett.test(response~trt,data=cholesterol)
 Bartlett test of homogeneity of variances

data:  response by trt
Bartlett's K-squared = 0.57975, df = 4, p-value = 0.9653
#結(jié)果表明,p=0.9653,接受原假設(shè),說明數(shù)據(jù)在不同水平下是等方差的。

##單因素方差分析
fit<-aov(response~trt,data=cholesterol)
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
#結(jié)果表明,5種治療方式間的效果差異非常顯著。

##多重比較(多重T檢驗(yàn))
#以上單因素方差分析可以得出,五組之間治療效果有顯著差異,但是我們不知道哪種療法與其他療法的不同,多重比較可以解決這個(gè)問題。
#R語(yǔ)言中TukeyHSD()函數(shù)提供了對(duì)各組均值差異的成對(duì)檢驗(yàn)。
TukeyHSD(fit)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = response ~ trt, data = cholesterol)

$trt
                  diff        lwr       upr     p adj
2times-1time   3.44300 -0.6582817  7.544282 0.1380949
4times-1time   6.59281  2.4915283 10.694092 0.0003542
drugD-1time    9.57920  5.4779183 13.680482 0.0000003
drugE-1time   15.16555 11.0642683 19.266832 0.0000000
4times-2times  3.14981 -0.9514717  7.251092 0.2050382
drugD-2times   6.13620  2.0349183 10.237482 0.0009611
drugE-2times  11.72255  7.6212683 15.823832 0.0000000
drugD-4times   2.98639 -1.1148917  7.087672 0.2512446
drugE-4times   8.57274  4.4714583 12.674022 0.0000037
drugE-drugD    5.58635  1.4850683  9.687632 0.0030633
#結(jié)果表明,1time和2times的均值差異不顯著(p=0.138),而1time和4times間的差異非常顯著(p<0.01)

一般圖像給的效果會(huì)更加直觀,R中multcomp包中的glht()函數(shù)提供了多重均值比較更為全面的方法。

par(mar=c(5,4,6,2))
tuk<-glht(fit,linfct=mcp(trt="Tukey"))
plot(cld(tuk,level=0.05),col="lightgreen")##cld函數(shù)中的level選項(xiàng)設(shè)置了使用的顯著水平0.05.
#圖像中,有相同字母的組說明均值差異不顯著。

R中如何實(shí)現(xiàn)方差分析ANOVA

備注:

1)在單因素方差分析前需要對(duì)數(shù)據(jù)進(jìn)行正態(tài)性和方差齊性檢驗(yàn)。除了以上提及的檢驗(yàn)方法,R中還可以使用Q-Q圖來(lái)檢驗(yàn)正態(tài)性假設(shè)。#詳情參見R語(yǔ)言實(shí)戰(zhàn)(第2版)page:206-207.

2)單因素方差分析的擴(kuò)展為單因素協(xié)方差分析,包含一個(gè)或多個(gè)定量的協(xié)變量。(詳情參見R語(yǔ)言實(shí)戰(zhàn)(第2版)page:208.)

二因素方差分析(雙因素方差分析)

---------------------#二因素方差分析#---------------------
#以基礎(chǔ)安裝包中的ToothGrowth數(shù)據(jù)集為例,60只豚鼠,自變量包括兩種投喂方法(橙汁或VC),不同喂食方法中抗壞血酸含量有
#三種水平,牙齒長(zhǎng)度為因變量,每種處理都被分配10只豚鼠。
head(ToothGrowth)
   len supp dose
1  4.2   VC  0.5
2 11.5   VC  0.5
3  7.3   VC  0.5
4  5.8   VC  0.5
5  6.4   VC  0.5
6 10.0   VC  0.5
ToothGrowth$dose<-as.factor(ToothGrowth$dose)#將劑量改為factor,而不是數(shù)值型。

#正態(tài)性檢驗(yàn)#
shapiro.test(ToothGrowth$len)
       Shapiro-Wilk normality test

data:  ToothGrowth$len
W = 0.96743, p-value = 0.1091
#結(jié)果顯示,p>0.05,接受原假設(shè),數(shù)據(jù)正態(tài)分布。

#方差齊性檢驗(yàn)#
#需要檢驗(yàn)方差在兩個(gè)不同分類標(biāo)準(zhǔn)下方差是否等值。
#檢驗(yàn)牙齒長(zhǎng)度在不同喂食方法水平下方差是否等值
bartlett.test(len~supp,data=ToothGrowth)
        Bartlett test of homogeneity of variances

data:  len by supp
Bartlett's K-squared = 1.4217, df = 1, p-value = 0.2331
#結(jié)果顯示,p>0.05,接受原假設(shè),在不同喂食方法水平上,牙齒長(zhǎng)度方差等值。

#檢驗(yàn)牙齒長(zhǎng)度在不同劑量水平下方差是否等值
bartlett.test(len~dose,data=ToothGrowth)
        Bartlett test of homogeneity of variances

data:  len by dose
Bartlett's K-squared = 0.66547, df = 2, p-value = 0.717
#結(jié)果顯示,p>0.717,接受原假設(shè),在不同劑量水平上,牙齒長(zhǎng)度方差等值。

#雙因素方差分析#
fitt<-aov(len~supp*dose,data=ToothGrowth)
summary(fitt)
            Df Sum Sq Mean Sq F value   Pr(>F)    
supp         1  205.4   205.4  15.572 0.000231 ***
dose         2 2426.4  1213.2  92.000  < 2e-16 ***
supp:dose    2  108.3    54.2   4.107 0.021860 *  
Residuals   54  712.1    13.2                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#結(jié)果顯示,不同喂食方法以及不同劑量對(duì)豚鼠牙齒生長(zhǎng)影響顯著,且喂食方法和不同劑量之間的交互作用非常顯著。

備注:

1)R仍然用函數(shù)aov()作雙因素方差分析,只需將formula改為x~A+B+A:B或x~A*B的形式即可。(且分析包含了交互作用的方差分析)

2)多因素方差分析和雙因素方差分析過程類似。

關(guān)于“R中如何實(shí)現(xiàn)方差分析ANOVA”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI