對于組數(shù)高于2組的访惜,t檢驗不再適用债热,這時幼苛,方差分析適用
單因子方差分析(one-way ANOVA)We use the data,cholesterol,作為例子 完全隨機設(shè)計的方差分析
library(multcomp)
library("cowplot")
data("cholesterol")
head(cholesterol)
建模:
1.正態(tài)性檢驗2.方差齊性檢驗3.進行方差分析步驟
aggregate(cholesteroltrt), FUN=mean)
plot(cholesteroltrt)
model=aov(cholesteroltrt)
summary(model)
多重比較 可用于two-way anova Turkey法用于各組數(shù)量一樣 SNK-q法用于各組數(shù)量不等時的比較
方差分析只告訴我們這五組之間是不同的,但沒有告訴我們哪兩組之間有明顯差別
此時需要使用TukeyHSD函數(shù)進行均值的多重比較分析墙杯,從結(jié)果中觀察到有三個兩兩比較是不顯著的暑椰。
result=TukeyHSD(model)
plot(result)
假設(shè)檢驗
方差分析需要一定的假設(shè),即數(shù)據(jù)集應(yīng)該符合正態(tài)和同方差一汽,我們分別用下面的函數(shù)來進行檢驗低滩,從P值觀察到這兩個假設(shè)是符合的岩喷。
對于不符合假設(shè)的情況纱意,我們就要用到非參數(shù)方法,例如Kruskal-Wallis秩和檢驗 ##秩和檢驗偷霉,沒聽說過用
two-way anova 隨機區(qū)間設(shè)計的方差分析
如果問兩種喂食方法對豚鼠牙齒長度的影響是否有差異,則用t檢驗叙身。原因是只有一個自變量即喂食方法硫狞,且該自變量包含2個水平;
如果問單一喂食方法中三種水平的抗壞血酸含量對豚鼠牙齒長度的影響是否有差異残吩,則用單因素方差分析。原因是只有一個自變量(單因素)即抗壞血酸含量即彪,且該自變量包含3個水平旁瘫;
再如果我們對喂食方式不感興趣,但它又會對實驗結(jié)果造成影響惠况,那么可以通過區(qū)組設(shè)計來控制宁仔,這便是一個完全隨機區(qū)組設(shè)計Randomized Complete Block Design (RCBD)
回到正題,該實驗設(shè)計包含了2個因素(factor)权埠,第一個因素包含2個水平(level)煎谍,第二個因素包含3個水平,這是一個2*3設(shè)計呐粘。采用的數(shù)據(jù)分析方法為雙因素方差分析转捕。
我們?nèi)匀皇褂胊ov進行建模唆垃,然后使用HH包的繪圖函數(shù)來展現(xiàn)雙因子交互效果圖
data("ToothGrowth")
head(ToothGrowth)
str(ToothGrowth)
library("dplyr")
ToothGrowth %>% group_by(supp, dose) %>% summarise(len_mean = mean(len))
ToothGrowthdose)
dose目前還是雙精度浮點數(shù)(dbl)型變量辕万,由于它是一個分類變量,所以需要將其改為因子型(factor)
attach(ToothGrowth) # 將ToothGrowth變成R默認處理數(shù)據(jù)集
fit <- aov(len ~ supp*dose)
那么為什么我們用*而不是+呢渐尿?
這是因為*表示所有可能的交互項。兩因素之間可能有交互作用结蟋,如果用+渔彰,系統(tǒng)便不會計算supp與dose的交互作用推正。
summary(fit)
interaction.plot(dose, supp, len,
type = "b",
col = c("#FF6347", "#00CD66"),
pch = c(2,19),
xlab = "抗壞血酸含量",
ylab = "牙齒長度",
main = "抗壞血酸含量和喂食方式的交互作用")
interaction.plot(x.factor, trace.factor, response,
type = c("l", "p", "b", "o", "c"),
# col = 1,
# pch = c(1:9, 0, letters),
# main = " ",
# xlab = " ",
# ylab = "牙齒長度",
# ...)
x.factor:自變量,即因素再沧,但記住這個變量將形成x軸尊残;
trace.factor:兩因素中的另一個因素;
response:因變量寝衫;
type:線(l)、點(p)隘截、線和點(b)等汹胃;
col:添加顏色;
pch:繪制點符號類型犀农;
main:標題宰掉;
xlab:x軸標題谤逼;
ylab:y軸標題仇穗。
ggplots包中的plotmeans()可以用來繪制交互效應(yīng),而且可以展示置信區(qū)間和樣本大小
library(gplots)
plotmeans(len ~ interaction(supp, dose, sep = " "),
connect = list(c(1,3,5),c(2,4,6)),
col = c("#FF6347", "#00CD66"),
main = "抗壞血酸含量和喂食方式的交互作用",
xlab = "處理組",
ylab = "牙齒長度")
該圖相對interaction.plot()的圖來說枝冀,多了置信區(qū)間以及樣本量的顯示耘子。
最后果漾,HH包中的interaction2wt()可以同時展示主效應(yīng)和交互效應(yīng)
library(HH)
interaction2wt(len ~ supp*dose)