9.1 背景介紹
與早期的微陣列不同,大多數(shù)數(shù)據(jù)現(xiàn)在都是單通道類型。單通道數(shù)據(jù)來自流行的微陣列技術(shù),如Affymetrix,Illumina或Agilent。RNA-Seq的新技術(shù)也會生成單通道數(shù)據(jù),因此本章中的所有內(nèi)容都可以在使用voom
函數(shù)預(yù)處理數(shù)據(jù)后應(yīng)用于RNA-Seq分析[15]。單通道數(shù)據(jù)可能與普通單變量線性模型或方差分析非常相似。微陣列數(shù)據(jù)的差異在于幾乎總是需要提取特定的感興趣的對比,因此為R中的因子提供的標準參數(shù)通常不足。
我們將在這里假設(shè)示例數(shù)據(jù)已被適當?shù)仡A(yù)處理標準化并且可用作名為eset
的ExpressionSet
或EList
對象。這樣的對象會有一個位置包含可以使用exprs(eset)
提取的每個陣列上每個基因的對數(shù)表達值。
9.2 兩組
最簡單的單通道實驗是比較兩組。假設(shè)我們希望比較兩個野生型(Wt)小鼠與三個突變型(Mu)小鼠:
FileName | Target |
---|---|
File1 | WT |
File2 | WT |
File3 | Mu |
File4 | Mu |
File5 | Mu |
形成設(shè)計矩陣有兩種不同的方式。我們可以二選一:
1.創(chuàng)建一個設(shè)計矩陣,其中包括突變型與野生型差異的系數(shù),
2.創(chuàng)建一個設(shè)計矩陣,其中包括野生型和突變型小鼠分別的系數(shù),然后將其作為對比。
對于第一種方法,實驗-對照參數(shù)化,設(shè)計矩陣應(yīng)該如下:
> design
WT MUvsWT
Array1 1 0
Array2 1 0
Array3 1 1
Array4 1 1
Array5 1 1
這里第一個系數(shù)估計野生型小鼠的平均對數(shù)表達值,并充當了截距。第二個系數(shù)估計突變型和野生型之間的差異。可以通過下面的命令發(fā)現(xiàn)差異表達基因
> fit <- lmFit(eset, design)
> fit <- eBayes(fit)
> topTable(fit, coef="MUvsWT", adjust="BH")
其中eset
是包含表達值對數(shù)的ExpressionSet
或matrix
對象。第二種方法,設(shè)計矩陣應(yīng)該是
> design
WT MU
Array1 1 0
Array2 1 0
Array3 0 1
Array4 0 1
Array5 0 1
可以通過下面的命令發(fā)現(xiàn)差異表達基因
> fit <- lmFit(eset, design)
> cont.matrix <- makeContrasts(MUvsWT=MU-WT, levels=design)
> fit2 <- contrasts.fit(fit, cont.matrix)
> fit2 <- eBayes(fit2)
> topTable(fit2, adjust="BH")
對于第一種方法,實驗-對照參數(shù)化,設(shè)計矩陣可以通過下面的命令計算
> design <- cbind(WT=1,MUvsWT=c(0,0,1,1,1))
或者通過
> Group <- factor(targets$Target, levels=c("WT","Mu"))
> design <- model.matrix(~Group)
> colnames(design) <- c("WT","MUvsWT")
對于第二種方法,分組參數(shù)化,設(shè)計矩陣可以通過下面的命令計算
> design <- cbind(WT=c(1,1,0,0,0),MU=c(0,0,1,1,1))
或者通過
> design <- model.matrix(~0+Group)
> colnames(design) <- c("WT","MU")
9.3 若干組
上述分為兩組的方法很容易擴展到任何數(shù)量的組。假設(shè)有三個RNA靶標進行比較,這三個目標稱為 “RNA1”,“RNA2” 和 “RNA3”,并且targets$Target
列表示哪一個RNA與每個陣列進行雜交。可以使用下面的命令創(chuàng)建適當?shù)脑O(shè)計矩陣
> f <- factor(targets$Target, levels=c("RNA1","RNA2","RNA3"))
> design <- model.matrix(~0+f)
> colnames(design) <- c("RNA1","RNA2","RNA3")
為了使三組之間的所有成對比較都可以進行,需要運行
> fit <- lmFit(eset, design)
> contrast.matrix <- makeContrasts(RNA2-RNA1, RNA3-RNA2, RNA3-RNA1,
+ levels=design)
> fit2 <- contrasts.fit(fit, contrast.matrix)
> fit2 <- eBayes(fit2)
RNA2與RNA1的差異基因列表可以通過下面的命令獲得
> topTable(fit2, coef=1, adjust="BH")
每個假設(shè)檢驗的結(jié)果可以這樣獲得
> results <- decideTests(fit2)
每個比較中顯著基因數(shù)目的維恩圖可以通過下面的命令獲得
> vennDiagram(results)
統(tǒng)計量fit2$F
和相應(yīng)的fit2$F.p.value
將三對成對的比較整合到一次F檢驗中。這相當于每個基因的單向ANOVA分析,除了基因間的平均殘差平方和已被調(diào)節(jié)。以任何方式尋找在三種RNA之間變化的基因,需要找到p值小的基因。找出排名前30的基因:
> topTableF(fit2, number=30)
9.4 其他模型和區(qū)塊化
9.4.1 配對樣本
配對樣本通常出現(xiàn)在當我們比較兩種實驗條件時發(fā)生,每個樣品給予一種處理,這樣就與給定另一種處理的特定樣品自然配對。這是具有兩個區(qū)塊的區(qū)塊化的一個特殊情況。與這種情況相關(guān)的經(jīng)典測試是配對t檢驗。
假設(shè)進行一個實驗以比較新的實驗處理(T)與對照(C)。來自三個血親關(guān)系的六條狗被作為實驗材料使用。對于每個同胞對,一條狗被給予實驗處理,而另一條狗作為對照。這生成了目標框架:
FileName | SibShip | Treatment |
---|---|---|
File1 | 1 | C |
File2 | 1 | T |
File3 | 2 | C |
File4 | 2 | T |
File5 | 3 | C |
File6 | 3 | T |
可以通過在線性模型中允許同胞對效應(yīng)來計算適中配對t檢驗:
> SibShip <- factor(targets$SibShip)
> Treat <- factor(targets$Treatment, levels=c("C","T"))
> design <- model.matrix(~SibShip+Treat)
> fit <- lmFit(eset, design)
> fit <- eBayes(fit)
> topTable(fit, coef="TreatT")
9.4.2 區(qū)塊化
上述用于配對樣品的方法可以應(yīng)用于有批次效應(yīng)的實驗或進行區(qū)塊化實驗的任何情況。實驗處理可以通過使用以下形式的模型公式來區(qū)分塊之間的差異進行調(diào)整:
> design <- model.matrix(~Block+Treatment)
在這種類型的分析中,僅在每個區(qū)塊內(nèi)進行比較實驗處理。
9.5 互動模型:2×2因子設(shè)計
9.5.1 感興趣的問題
因子設(shè)計是那些不止一個不同的實驗維度和各種實驗條件的組合。假設(shè)從野生型和突變型小鼠提取細胞,這些細胞或者被刺激(S)或者未刺激(U)。來自被處理細胞的RNA被提取后與微陣列雜交。我們將簡單地假設(shè)陣列是單色陣列,如Affymetrix。考慮以下目標框架:
FileName | Strain | Treatment |
---|---|---|
File1 | WT | U |
File2 | WT | S |
File3 | Mu | U |
File4 | Mu | S |
File5 | Mu | S |
這里的兩個實驗尺度或因素是種系和實驗處理。種系指定提取細胞的小鼠的基因型,實驗處理指定細胞是否被刺激。觀察到所有四種種系和實驗處理的組合,所以這是一個因子設(shè)計。使用下面的命令將種系/實驗處理組合收集到一個矢量中很方便:
> TS <- paste(targets$Strain, targets$Treatment, sep=".")
> TS
[1] "WT.U" "WT.S" "Mu.U" "Mu.S" "Mu.S"
使用因子設(shè)計來決定感興趣的對比是特別重要的。我們在這里假設(shè)實驗者對下面幾點感興趣:
1.哪些基因在野生型細胞對刺激作出反應(yīng),
2.哪些基因在突變型細胞對刺激作出反應(yīng),
3.哪些基因在突變型細胞中與野生型細胞相比反應(yīng)程度不同。
因為這些是在分子生物學(xué)背景下最通常相關(guān)的問題。第一個問題與WT.S
vsWT.U
的比較有關(guān),第二個與Mu.S
vsMu.U
相關(guān),第三個涉及到差異之間的不同,即(Mu.S-Mu.U) - (WT.S-WT.U)
,術(shù)語被稱為相互作用。
9.5.2 單因素分析
我們首先描述了使用limma命令分析這個實驗的簡單方法,與兩個樣本設(shè)計分析類似。然后我們將繼續(xù)描述更經(jīng)典的使用因子模型公式的統(tǒng)計方法。所有考慮的方法是等同的,并產(chǎn)生相同的基本結(jié)果。最基本的方法是用一個有效的模型系數(shù)擬合四因子組合中的每一個,然后提取感興趣的比較作為對比:
> TS <- factor(TS, levels=c("WT.U","WT.S","Mu.U","Mu.S"))
> design <- model.matrix(~0+TS)
> colnames(design) <- levels(TS)
> fit <- lmFit(eset, design)
這是一個具有對應(yīng)于WT.U
,WT.S
,MuU
和MuS
的四個系數(shù)的模型。我們可以提取三種感興趣的對比
> cont.matrix <- makeContrasts(
+ SvsUinWT=WT.S-WT.U,
+ SvsUinMu=Mu.S-Mu.U,
+ Diff=(Mu.S-Mu.U)-(WT.S-WT.U),
+ levels=design)
> fit2 <- contrasts.fit(fit, cont.matrix)
> fit2 <- eBayes(fit2)
我們可以使用topTable()
函數(shù)來查看三個對比中的每一個的差異表達基因的列表,或者
> results <- decideTests(fit2)
> vennDiagram(results)
同時查看所有三個對比。
對于大多數(shù)用戶而言,建議使用此方法,因為正在測試的比較是明確形成的。
9.5.3 嵌套互動公式
R中的模型公式是非常靈活的,并提供許多可能的快捷鍵用于設(shè)置設(shè)計矩陣。不過,他們也需要高水平的統(tǒng)計知識來可靠地使用,并且它們并沒有在主要的R文檔中完整地描述。如果我們只是想測試上述前兩個問題,一個設(shè)置設(shè)計矩陣的簡單方法是使用一個嵌套相互作用:
> Strain <- factor(targets$Strain, levels=c("WT","Mu"))
> Treatment <- factor(targets$Treatment, levels=c("U","S"))
> design <- model.matrix(~Strain+Strain:Treatment)
> colnames(design)
[1] "(Intercept)" "StrainMu" "StrainWT:TreatmentS" "StrainMu:TreatmentS"
模型公式中的第一項是種系效應(yīng)。這引入了截距列到設(shè)計矩陣,用來估計野生型未刺激細胞的平均對數(shù)表達水平,種系列估計未刺激狀態(tài)下突變型與野生型的差異。模型公式中的第二項表示刺激和種系之間的相互作用。因為模型中的實驗處理沒有主效應(yīng),相互作用是嵌套到。它引入了第三和第四列到設(shè)計矩陣中,分別代表野生型和突變型小鼠的刺激效應(yīng),與之前定義的SvsUinWT
和SvsUinMu
的對比完全一樣。
> fit <- lmFit(eset, design)
> fit <- eBayes(fit)
> topTable(fit, coef=3)
會發(fā)現(xiàn)野生型小鼠響應(yīng)刺激的相關(guān)基因,
> topTable(fit, coef=4)
會發(fā)現(xiàn)突變型小鼠響應(yīng)刺激的相關(guān)基因。最后,我們可以提取上面考慮的相互作用對比Diff
> fit2 <- contrasts.fit(fit, c(0,0,-1,1))
> fit2 <- eBayes(fit2)
> topTable(fit2)
這會發(fā)現(xiàn)突變型和野生型小鼠刺激后差異反應(yīng)的基因。
9.5.4 經(jīng)典交互模型
對因子設(shè)計的分析在統(tǒng)計學(xué)中有悠久的歷史,一個因子模型公式體系被開發(fā)用來促進復(fù)雜設(shè)計的分析。重要的是要了解上述三個分子生物學(xué)問題與任何一個用于因子設(shè)計的統(tǒng)計經(jīng)典參數(shù)化都沒有關(guān)系。所以我們一般推薦上面已經(jīng)考慮過的用于微陣列分析的方法。
假設(shè)我們以通常的統(tǒng)計方式進行,
> design <- model.matrix(~Strain*Treatment)
這創(chuàng)建了一個符合以下解釋的四個系數(shù)的設(shè)計矩陣:
Coeffcient | Comparison | Interpretation |
---|---|---|
Intercept | WT.U | Baseline level of unstimulated WT |
StrainMu | Mu.U-WT.U | Difference between unstimulated strains |
TreatmentS | WT.S-WT.U | Stimulation effect for WT |
StrainMu:TreatmentS | (Mu.S-Mu.U)-(WT.S-WT.U) | Interaction |
這被稱為實驗-對照參數(shù)化。請注意,我們感興趣的一個比較,Mu.S-Mu.U
,沒有體現(xiàn),而Mu.U-WT.U
的比較卻包括在內(nèi),這可能不是我們直接感興趣的。我們需要使用對比來提取所有感興趣的比較:
> fit <- lmFit(eset, design)
> cont.matrix <- cbind(SvsUinWT=c(0,0,1,0),SvsUinMu=c(0,0,1,1),Diff=c(0,0,0,1))
> fit2 <- contrasts.fit(fit, cont.matrix)
> fit2 <- eBayes(fit2)
提取了WT刺激效應(yīng)作為第三系數(shù),相互作用作為第四系數(shù)。突變刺激效應(yīng)被提取為原始模型第三和第四系數(shù)的總和。該分析產(chǎn)生的結(jié)果與之前的分析完全相同。
對于階乘實驗,更經(jīng)典的統(tǒng)計學(xué)方法是使用至零求和參數(shù)化。在R中是這樣實現(xiàn)的
> contrasts(Strain) <- contr.sum(2)
> contrasts(Treatment) <- contr.sum(2)
> design <- model.matrix(~Strain*Treatment)
以下解釋定義了四個系數(shù):
Coeffcient | Comparison | Interpretation |
---|---|---|
Intercept | (WT.U+WT.S+Mu.U+Mu.S)/4 | Grand mean |
Strain1 | (WT.U+WT.S-Mu.U-Mu.S)/4 | Strain main effect |
Treatment1 | (WT.U-WT.S+Mu.U-Mu.S)/4 | Treatment main effect |
Strain1:Treatment1 | (WT.U-WT.S-Mu.U+Mu.S)/4 | Interaction |
該參數(shù)化具有許多吸引人的數(shù)學(xué)特性,是經(jīng)典的參數(shù)化,用于很多實驗設(shè)計理論中的因子設(shè)計。但是它只定義了我們直接感興趣的一個系數(shù),即相互作用。三個我們感興趣的對比可以使用下面命令提取
> fit <- lmFit(eset, design)
> cont.matrix <- cbind(SvsUinWT=c(0,0,-2,-2),SvsUinMu=c(0,0,-2,2),Diff=c(0,0,0,4))
> fit2 <- contrasts.fit(fit, cont.matrix)
> fit2 <- eBayes(fit2)
結(jié)果與前三種方法相同。
這里描述的解決2×2因子問題的各種方法是等價的,不同僅存在于線性模型的參數(shù)化選擇中。擬合的模型對象fit
僅在coefficients
和相關(guān)組件中有所不同。剩余標準差fit$sigma
,剩余自由度fit$df.residual
和fit2
的所有組件都是相同的,即使使用了不同的參數(shù)化。由于方法是等效的,用戶可以自由選擇哪一個最直觀或最方便。
9.6 時間過程實驗
9.6.1 重復(fù)時間點
時間過程實驗是在一些實驗處理或刺激開始以后的幾個時間點提取RNA的實驗。分析時間過程實驗的最佳方法取決于實驗的性質(zhì),特別是不同時間點的數(shù)量。我們首先考慮具有相對較少重復(fù)時間點的實驗。簡單的這種類型的時間過程實驗與9.3節(jié)中涉及的多組實驗相似。
例如,我們這里考慮一個雙向?qū)嶒灒渲袑⒁M行兩種基因型的時間流程分析比較。考慮下列目標框架
FileName | Target |
---|---|
File1 | wt.0hr |
File2 | wt.0hr |
File3 | wt.6hr |
File4 | wt.24hr |
File5 | mu.0hr |
File6 | mu.0hr |
File7 | mu.6hr |
File8 | mu.24hr |
目標是在0,6和24小時時間點從野生型和突變型動物收集的RNA樣品。這可以被看作是一個因子實驗,但是更簡單的方法是使用群體平均參數(shù)化。
> lev <- c("wt.0hr","wt.6hr","wt.24hr","mu.0hr","mu.6hr","mu.24hr")
> f <- factor(targets$Target, levels=lev)
> design <- model.matrix(~0+f)
> colnames(design) <- lev
> fit <- lmFit(eset, design)
野生型的哪些基因在6小時或24小時內(nèi)響應(yīng)?我們可以通過提取野生型時間之間的對比找到這些基因。
> cont.wt <- makeContrasts(
+ "wt.6hr-wt.0hr",
+ "wt.24hr-wt.6hr",
+ levels=design)
> fit2 <- contrasts.fit(fit, cont.wt)
> fit2 <- eBayes(fit2)
> topTableF(fit2, adjust="BH")
三個時間點之間的任何兩個對比將產(chǎn)生相同的結(jié)果。例如,相同的基因列表將通過“wt.24hr-wt.0hr”
得到而不是“wt.24hr-wt.6hr”
。
哪些基因在突變型中響應(yīng)(即隨時間發(fā)生變化)?
> cont.mu <- makeContrasts(
+ "mu.6hr-mu.0hr",
+ "mu.24hr-mu.6hr",
+ levels=design)
> fit2 <- contrasts.fit(fit, cont.mu)
> fit2 <- eBayes(fit2)
> topTableF(fit2, adjust="BH")
相對于野生型,突變型中哪些基因隨時間推移響應(yīng)不同?
> cont.dif <- makeContrasts(
+ Dif6hr =(mu.6hr-mu.0hr)-(wt.6hr-wt.0hr),
+ Dif24hr=(mu.24hr-mu.6hr)-(wt.24hr-wt.6hr),
+ levels=design)
> fit2 <- contrasts.fit(fit, cont.dif)
> fit2 <- eBayes(fit2)
> topTableF(fit2, adjust="BH")
本節(jié)中描述的分析方法用于組蛋白脫乙酰酶抑制劑六點時間過程實驗[25]。
9.6.2 多時間點
現(xiàn)在我們考慮一個每組有很多時間點的例子。當有很多時間點時,假設(shè)表達隨著時間平滑地變化而不是從一個時間點到另一個時間點的離散式變化是合理的。這種類型的時間過程可以通過使用回歸樣條或多項式擬合時間趨勢來分析。
考慮以下32行目標框架:
FileName | Group | Time |
---|---|---|
File1 | Control | 1 |
File2 | Control | 2 |
. | . | . |
. | . | . |
. | . | . |
File16 | Control | 16 |
File17 | Treat | 1 |
File18 | Treat | 2 |
. | . | . |
. | . | . |
. | . | . |
File32 | Treat | 16 |
利用適量節(jié)點的三次樣條曲線表示特定條件下特定基因的時間過程可能是合理的。選擇有效的自由度在范圍3-5內(nèi)是合理的。為自然回歸樣條設(shè)置基礎(chǔ):
> library(splines)
> X <- ns(targets$Time, df=5)
然后為對照組和實驗組單獨擬合曲線:
> Group <- factor(targets$Group)
> design <- model.matrix(~Group*X)
> fit <- lmFit(y, design)
> fit <- eBayes(fit)
創(chuàng)建了一個具有12個參數(shù)的模型,最后5個對應(yīng)于相互作用,也就是組間曲線的差異。檢測對照組和實驗組不同時間趨勢的基因:
> topTable(fit, coef=8:12)
對5 df上的每個基因進行了一個調(diào)節(jié)F檢驗,可以檢測出非常普遍的實驗和對照曲線之間的差異。
注意,對于這種分析沒有必要進行重復(fù),也沒有必要在相同的時間點觀察兩個實驗組。
9.7 多層次實驗
我們考慮了配對比較,考慮了兩個獨立組的比較。然而,有實驗結(jié)合了這兩種類型的比較。
考慮使用以下目標框架的單通道實驗:
FileName | Subject | Condition | Tissue |
---|---|---|---|
File01 | 1 | Diseased | A |
File02 | 1 | Diseased | B |
File03 | 2 | Diseased | A |
File04 | 2 | Diseased | B |
File05 | 3 | Diseased | A |
File06 | 3 | Diseased | B |
File07 | 4 | Normal | A |
File08 | 4 | Normal | B |
File09 | 5 | Normal | A |
File10 | 5 | Normal | B |
File11 | 6 | Normal | A |
File12 | 6 | Normal | B |
該實驗涉及6名受試者,其中3名患有該疾病的患者和3名正常受試者。每個受試者,我們有兩種組織類型的表達譜,A和B。
在分析本實驗時,我們要比較兩種組織類型。這個比較可以在受試者內(nèi)進行,因為每個受試者都會產(chǎn)生兩種組織的值。我們也想比較患病對象和正常受試者,但這種比較是受試者之間的。
如果我們只想比較兩種組織類型,我們可以做一個配對的樣本比較。如果我們只想比較生病的和正常的受試者,我們可以做一個普通的兩組比較。由于我們需要在受試者本身和之間進行比較,因此需要把患者作為隨機效應(yīng)。可以使用duplicateCorrelation
函數(shù)在limma中完成。
兩個實驗因素條件和組織可以以多種方式處理。在這里,我們假設(shè)將兩者合并成一個組合因素是方便的:
> Treat <- factor(paste(targets$Condition,targets$Tissue,sep="."))
> design <- model.matrix(~0+Treat)
> colnames(design) <- levels(Treat)
然后我們估計同一受試者的測量數(shù)據(jù)之間的相關(guān)性:
> corfit <- duplicateCorrelation(eset,design,block=targets$Subject)
> corfit$consensus
然后將該對象內(nèi)相關(guān)性輸入到線性模型擬合中:
> fit <- lmFit(eset,design,block=targets$Subject,correlation=corfit$consensus)
現(xiàn)在我們可以通過常規(guī)方式對實驗條件進行比較,例如:
> cm <- makeContrasts(
+ DiseasedvsNormalForTissueA = Diseased.A-Normal.A,
+ DiseasedvsNormalForTissueB = Diseased.B-Normal.B,
+ TissueAvsTissueBForNormal = Normal.B-Normal.A,
+ TissueAvsTissueBForDiseased = Diseased.B-Diseased.A,
+ levels=design)
然后計算這些對比和緩和t檢驗:
> fit2 <- contrasts.fit(fit, cm)
> fit2 <- eBayes(fit2)
然后
> topTable(fit2, coef="DiseasedvsNormalForTissueA")
將找到在A組織類型中正常和患病受試者之間差異表達的那些基因,等等。
這個實驗有兩個級別的差異性。首先,人與人之間存在差異,我們稱之為受試者之間的層次。那么同一受試者重復(fù)測量的可變性稱為受試者內(nèi)層次。受試者間層次通常認為大于受試者內(nèi)層次,因為后者被調(diào)整為受試者之間的基線差異。在這里,組織類型之間的比較可以在受試者內(nèi)進行,因此應(yīng)該比病人和正常人之間的比較要精確得多。