Lecture 8 Normalization and Affymetrix

原文地址:http://x2yline.gitee.io/microarray_data_analysis_note/notes/8%20Normalization%20and%20Affymetrix/8%20Normalization%20and%20Affymetrix.html

1. 什么是標(biāo)準(zhǔn)化

廣義:為了使不同芯片的數(shù)據(jù)具有可比性

狹義:使芯片的均值(中位數(shù))相等

系統(tǒng)誤差來源

提取的RNA總量不同

RNA提取,逆轉(zhuǎn)錄汗捡,熒光標(biāo)記淑际,PCR擴增等各個環(huán)節(jié)的效率

DNA的質(zhì)量

變異會掩蓋真正有差異的基因

2. 標(biāo)準(zhǔn)化方法

方法1:管家基因法

選擇一組認為表達量不會變化的基因,并根據(jù)這幾個基因?qū)π酒M行校正

缺點:不知道哪些是表達量不變的基因扇住,不能保證這些基因在處理過程或癌變過程中表達不發(fā)生變化

關(guān)于管家基因的定義:通常認為對細胞的生命功能具有重要作用春缕,表達恒定并且通常表達量比較高的基因;另一個不同的定義是不同情況下該基因的表達在不同芯片中的rank相同艘蹋,選出這些基因并以他們?yōu)閰⒖歼M行標(biāo)準(zhǔn)化锄贼。

方法2:spike-ins外加合成序列法

引入一些能控制相對密度的標(biāo)志序列及探針,并使用這些探針對剩余的探針進行標(biāo)準(zhǔn)化

缺點:不知道如何控制標(biāo)志序列與樣品的相對量

方法3:簡單縮放進行標(biāo)準(zhǔn)化

通過乘以一個標(biāo)準(zhǔn)化系數(shù)女阀,從而使不同芯片的數(shù)據(jù)的分布及均值大致相同宅荤,,從而使其具有可比性

缺點:不能保證MA plot為一條水平直線(可能有彎曲)浸策,如何確定標(biāo)準(zhǔn)化系數(shù)(是使用RNA總信號強度冯键,中位數(shù)還是其他的值?)

其他方法

同時使用spike-ins和簡單縮放進行標(biāo)準(zhǔn)化的榛,spike-ins包括很多不同強度的值琼了,并用它們來檢驗縮放后的值是否可信

基線

當(dāng)我談?wù)撟儺悤r,通常是以某個芯片作為基線即參考的,dChip算法是以表達值處于中位數(shù)的某個芯片為參考的

使用一組表達量不變的探針雕薪,并在不同信號強度區(qū)域使用不同的scale factor進行校正昧诱,該校正通是在兩個芯片之間進行的,該方法與在MA plot中擬和一條光滑曲線所袁,把M值與該曲線相減得到校正數(shù)據(jù)的方法相同盏档。

前提條件

通過縮放使90%的基因表達量具有可比性是否在當(dāng)兩個樣本的基因表達模式有很大差異時合理

縮放即百分位數(shù)法對芯片數(shù)據(jù)進行校正的前提條件是大多數(shù)基因的表達是沒有發(fā)生變化的,百分位數(shù)法對該假設(shè)的依賴性比縮放法更強燥爷,當(dāng)這個假設(shè)不成立時蜈亩,使用上述方法進行標(biāo)準(zhǔn)化是沒有意義的

大多數(shù)基因表達量不發(fā)生變化的情況有:

  • 飽食/饑餓實驗
  • 熱休克實驗
  • 對比不同器官(?前翎?稚配?)

3. 如何評價不同的標(biāo)準(zhǔn)化方法

接下來的內(nèi)容基本上來自于Bolstad, Irizarry, Astrand 和 Speed(bekerley的文章 Bioinformatics, 2003, p.185-193

對于在生物學(xué)上認為表達相同的基因,在經(jīng)過標(biāo)準(zhǔn)后之后表達應(yīng)該是基本相等的

3.1 測試標(biāo)準(zhǔn)化方法的數(shù)據(jù)集

Affymetrix 拉丁方設(shè)計實驗數(shù)據(jù)

The Affymetrix Latin Square Experiment (Hu95Av2, repeated on Hu133A)港华,該數(shù)據(jù)集是合成的已知濃度序列道川,并按照拉丁方實驗設(shè)計進行芯片實驗。

其中U95Av2芯片共有14組合成的序列立宜,每組序列的濃度分別為: 0, 0.25, 0.5, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, and 1024 pM冒萄,至少重復(fù)三次后,每組合成序列的對應(yīng)濃度向前移位橙数,如第二個實驗中每組序列的濃度從 0.25 pM 開始并以 0 pM結(jié)尾尊流,共59個芯片。每組合成序列大多都是只含有一種序列灯帮,但組1含有2種序列崖技,組12是空白組。

Hu 133A芯片共42個芯片钟哥,有14組實驗响疚,每組實驗重復(fù)3次,共42個合成序列這些序列濃度范圍為0.125 pM 到 512 pM瞪醋,與U95 數(shù)據(jù)不同忿晕,該數(shù)據(jù)集包含更多合成序列,從更小的濃度開始银受,掃描儀器為GeneChip? Scanner 3000践盼,更少探針與序列交叉雜交的情況。

Gene Logic Dilution Data

75個Hu95Av2芯片宾巍,兩個組織來源:肝臟和中樞神經(jīng)系統(tǒng)咕幻,其中包括;

  • 每種組織各自30個芯片
    • 5種不同濃度顶霞,每個濃度重復(fù)6次
  • 剩下的15個芯片是兩種組織的混合樣本
    • 3中不同比例的樣品(27:75, 50:50, 75:25)锣吼,各自重復(fù)5次

4個·肝臟組織的芯片數(shù)據(jù)在Bioconductor的包affydata的內(nèi)置數(shù)據(jù)Dilution中

library(affydata)
data("Dilution")

pData(Dilution)
##     liver sn19 scanner
## 20A    20    0       1
## 20B    20    0       2
## 10A    10    0       1
## 10B    10    0       2

varMetadata(phenoData(Dilution))
##                                                               labelDescription
## liver                    amount of liver RNA hybridized to array in micrograms
## sn19    amount of central nervous system RNA hybridized to array in micrograms
## scanner                                              ID number of scanner used

A Gene Logic Spike In Dataset

98個 Hu95Av1芯片玄叠,共11 cRNA個合成序列拓提,其中26個芯片所有合成序列濃度相同,但不同芯片的濃度不同(芯片1濃度都為0代态,芯片2濃度都為0.5, 芯片3濃度都為0.75)西雀,剩下的芯片組成兩個拉丁方設(shè)計,每個水平3個重復(fù)判莉。

我們需要用到的數(shù)據(jù)是Dulition使用的5個肝臟樣本的數(shù)據(jù)(所有樣本都在同一個稀釋水平)

26個Gene Logic Spike In數(shù)據(jù)集的芯片,單個芯片上所有合成序列濃度相同

為什么Gene Logic公司做該實驗并提供數(shù)據(jù)锰镀,因為Gene Logic是最大的Affy芯片消費者之一,他們收集了非常多表達譜數(shù)據(jù)并進行銷售花鹅;他們想提高數(shù)據(jù)分析的質(zhì)量并為他們自己的方法打廣告,該數(shù)據(jù)可以在官網(wǎng)申請真友。

3.2 標(biāo)準(zhǔn)化驗證

標(biāo)準(zhǔn)化的方法共有:

library(affydata)
normalize.AffyBatch.methods()
## [1] "constant"         "contrasts"        "invariantset"     "loess"           
## [5] "methods"          "qspline"          "quantiles"        "quantiles.robust"

3.2.1 基線方法

  • 選擇一個芯片作為基線(中位數(shù))對所有芯片進行縮放(affy的算法是在匯總定量后使用該方法,但是這里我們使用探針?biāo)降臄?shù)據(jù)進行縮放)
  • Nonlinear invariant rank方法進行標(biāo)準(zhǔn)化愈案,同樣選擇一個芯片作為基線

3.2.2 Complete Data方法(不需要選擇基線)

  • Cyclic Loess(循環(huán)loess擬合)
  • Contrasts
  • Quantiles(分位數(shù)法)
Cyclic Loess方法

$$
M_{k} = log{2}(x{ki}/x{kj})
$$

i潦嘶,j代表芯片編號崇众,若$\hat{M_{k}}$為擬合的曲線锰蓬,校正后的M值應(yīng)該是
$$
M_{k}'=M_{k}-\hat{M_{k}}
$$
那么我們?nèi)绾蝸硇U總€芯片的值呢?該方法使用對稱校正的方法
$$
x'{ki} = 2^{A{k}+0.5\bullet M'_{k}}
$$

$$
x'{ki} = 2^{A{k}-0.5\bullet M'_{k}}
$$

對所有芯片都進行校正舱卡,通常需要重復(fù)2~3次轮锥,但是該方法運行速度較慢(n個芯片計算的時間復(fù)雜度至少是O(n^2))

Contrast Based Normalization

詳細算法可見該文章:Contrast Normalization of Oligonucleotide Arrays

  • 最開始的輸入是一個n*k的矩陣,n代表features數(shù),k代表芯片編號饲握,該矩陣已經(jīng)經(jīng)過log2轉(zhuǎn)化
  • 乘以正交對比矩陣(線性代數(shù)的知識)后互拾,轉(zhuǎn)化后的第一列是所有芯片表達矩陣的均值(相當(dāng)MA plot相對于x-y plot的旋轉(zhuǎn)使曲線水平化)
  • 再對除第一列以外的其他列進行曲線擬合,并校正除第一列以外的其他列(使均值為0)田篇,再進行矩陣逆運算得到校正后的表達矩陣

點評:該算法最主要的思想是對log密度值根據(jù)均值進行縮放(幾何均值)

比Cyclic Loess方法快泊柬,但計算速度仍較慢

Quantile分位數(shù)法

該方法的前提假設(shè)為每個芯片的表達數(shù)據(jù)分布都是完全相同的

  • n個芯片p個探針組成一個p * n的矩陣X
  • 對矩陣X的每一列分別進行排序冷守,使每一行的表達量值在相應(yīng)每一列的分位數(shù)都相同
  • 計算每一行的均值亮钦,并替代原值,使得該矩陣同一行的數(shù)據(jù)完全相同
  • 把每一列的數(shù)據(jù)位置還原,形成校正后的表達矩陣

該方法值涉及排序和做均值蚁滋,計算速度極快

為什么選擇均值作為新的表達量值澄阳?

當(dāng)我們以兩個芯片的表達量值分別作為x和y軸即做y-x plot時低剔,如果兩個樣本所有基因的分位數(shù)都相同,則形成一條完美的對角直線(y=x)

實際上,我們做的y-x plot越靠近y=x說明標(biāo)準(zhǔn)化效果越好开皿,而需要對n個芯片兩兩作圖笋妥,這提示使用均值作為新的表達量值

使用均值作為新的表達量春宣,我們不需要考慮縮放的問題,并且結(jié)果顯示對于對數(shù)化的數(shù)據(jù)和原始數(shù)據(jù)標(biāo)準(zhǔn)化效果都比較好,但是二者計算出來的新表達量值不同

我們更傾向于使用中位數(shù)而不是均值潦蝇,是否進行對數(shù)轉(zhuǎn)化不影響最終的標(biāo)準(zhǔn)化的值,雖然取均值和中位數(shù)時大部分差異并不的

3.2.3 選擇不同基線的影響

不同基線的選擇最后得出的表達值差異可能非常大

3.2.4 如何定義標(biāo)準(zhǔn)化是否成功

我們想要的結(jié)果是各個芯片數(shù)據(jù)的分布大致相同则酝,從而具有可比性,評價標(biāo)準(zhǔn)化是否成功最常用的就是MA plot

為了使之前的預(yù)處理相同爽雄,所有芯片的預(yù)處理均使用同一種方法挚瘟,如RMA方法處理背景信號

文章的一些結(jié)果
  • 通常MA plot在標(biāo)準(zhǔn)化之前的直線有一定的曲率,這提示標(biāo)準(zhǔn)化過程需用曲線進行擬合订框,否則不使用非線性方法進行標(biāo)準(zhǔn)化
  • 所有結(jié)果均顯示標(biāo)準(zhǔn)化之后的原始數(shù)據(jù)顯示出更小的變異性
  • 使用complete data方法比baseline chip方法結(jié)果更好藤违,對于simple constant scaling比非線性方法如invariant rank set更好
  • 三種complete data方法中,結(jié)果相差不大璧榄,quantile方法結(jié)果稍微更好,并且因為quantile方法的速度明顯比其他的快,因此他們推薦使用quantile方法

4. 如何進行標(biāo)準(zhǔn)化

首選要確認是否大部分基因的表達量沒有發(fā)生很大的改變

接著我們可以檢驗一下MA plot是否是水平的妒潭,如果是水平的我們就不需要使用quantiles方法進行標(biāo)準(zhǔn)化

如果MA plot不是水平的,我們再檢驗一下芯片的質(zhì)量(圖片)是否有人為的異常,如果沒有異常則可以使用quantiles方法處理

4.1 一次Bioconductor的冒險

我們的目標(biāo):重復(fù)文獻Bolstad et al. (2003)的研究,使用Bioconductor提供的數(shù)據(jù)

首選載入數(shù)據(jù)和函數(shù)

library(affy)
library(affydata)
data(Dilution)

以一個AffyBatch對象即Dilution數(shù)據(jù)開始(把CEL文件讀入創(chuàng)建的數(shù)據(jù))阱持,我們想測試不同標(biāo)準(zhǔn)化方法的效率及準(zhǔn)確性

預(yù)測處理步驟包括:

  • Background correction
  • Normalization
  • PM correction
  • Summary Quantification

4.2 是否需要標(biāo)準(zhǔn)化

# shows log intensities!
boxplot(Dilution, col=rainbow(4))

dev.copy(png,file="boxplot1.png")
dev.off()

分布密度圖

hist(Dilution,lty=1,col=rainbow(4),lwd=3, main="intensity distribution")

dev.copy(png,file="hist1.png", res=108)
dev.off()

[]http://x2yline.gitee.io/microarray_data_analysis_note/notes/8%20Normalization%20and%20Affymetrix/assets/hist1.png)

MA plot(有參考基線)

par(mfrow=c(2,2))
MAplot(Dilution)
par(mfrow=c(1,1))

dev.copy(png,file="MAplot1.png", res=72)
dev.off()

MA plot(相互比較)

mva.pairs(Dilution)
## Error in log(new("AffyBatch", cdfName = "HG_U95Av2", nrow = 640L, ncol = 640L,  :  unused argument (2)

help(mva.pairs)
# a matrix containing the chip data in the columns.

提取AffyBatch對象為矩陣之后才能使用mva.pairs函數(shù),如果記不住證明提取數(shù)據(jù)矩陣滓窍,可以查看AffyBatch的slot

slotNames(Dilution)
##  [1] "cdfName"           "nrow"              "ncol"              "assayData"        
##  [5] "phenoData"         "featureData"       "experimentData"    "annotation"       
##  [9] "protocolData"      ".__classVersion__"

Dilution@cdfName
## [1] "HG_U95Av2"

Dilution@nrow
## [1] 640

Dilution@ncol
## [1] 640

Dilution@phenoData
## An object of class 'AnnotatedDataFrame'
##   sampleNames: 20A 20B 10A 10B
##   varLabels: liver sn19 scanner
##   varMetadata: labelDescription

Dilution@experimentData
## Experiment data
##   Experimenter name: Gene Logic 
##   Laboratory: Gene Logic 
##   Contact information: 708 Quince Orchard Road
## Gaithersburg, MD 20878
## Telephone: 1.301.987.1700
## Toll Free: 1.800.GENELOGIC (US and Canada)
## Facsimile: 1.301.987.1701
##  
##   Title: Small part of dilution study 
##   URL: http://qolotus02.genelogic.com/datasets.nsf/ 
##   PMIDs:  
## 
##   Abstract: A 68 word abstract is available. Use 'abstract' method.
##   notes:
##    :     
## 

Dilution@annotation
## [1] "hgu95av2"

Dilution@.__classVersion__
##         R   Biobase      eSet AffyBatch 
##  "2.10.0"   "2.5.5"   "1.3.0"   "1.2.0"

而其中的assayDataphenoData可以用了提取數(shù)據(jù)矩陣和樣本信息

Dilution@assayData
## $exprs
##            20A     20B     10A     10B
## 1        149.0   112.0   129.0    60.0
## 2       1153.5   575.3  1262.3   564.8
## ...
## 250      118.0    93.0   117.8    69.0
##  [ reached getOption("max.print") -- omitted 409350 rows ]

class(Dilution@assayData)
## [1] "list"

length(Dilution@assayData)
## [1] 1

names(Dilution@assayData)
## [1] "exprs"

class(Dilution@assayData[[1]])
## [1] "matrix"

dim(Dilution@assayData[[1]])
## [1] 409600      4

樣本信息可以用以下命令

Dilution@phenoData
## An object of class 'AnnotatedDataFrame'
##   sampleNames: 20A 20B 10A 10B
##   varLabels: liver sn19 scanner
##   varMetadata: labelDescription

class(Dilution@phenoData)
## [1] "AnnotatedDataFrame"
## attr(,"package")
## [1] "Biobase"

slotNames(Dilution@phenoData)
## [1] "varMetadata"       "data"              "dimLabels"         ".__classVersion__"

Dilution@phenoData@data
##     liver sn19 scanner
## 20A    20    0       1
## 20B    20    0       2
## 10A    10    0       1
## 10B    10    0       2

Dilution@phenoData@varMetadata
##                                                               labelDescription
## liver                    amount of liver RNA hybridized to array in micrograms
## sn19    amount of central nervous system RNA hybridized to array in micrograms
## scanner 

我們也可以使用exprs提取AffyBatch對象中的數(shù)據(jù)矩陣

length(exprs(Dilution))
## [1] 1638400

dim(exprs(Dilution))
## [1] 409600      4

mva.pairs(exprs(Dilution))
dev.copy(png,file="MAplot2.png", res=72)
dev.off()
image(Dilution[,1],transfo=log2)

放大可以看到芯片頂部有特殊標(biāo)記(說明芯片沒有放反)

par(mfrow=c(1,2))
image(matrix(exprs(Dilution[,1]),
             nrow=nrow(Dilution),
             ncol=ncol(Dilution)),
      main="raw intensity")

image(log2(matrix(exprs(Dilution[,1]),
             nrow=nrow(Dilution),
             ncol=ncol(Dilution))),
      main="log intensity")

par(mfrow=c(1,1))

可以看出MA plot的線并不是非常水平,并且圖像沒有明顯認為誤差,可以使用quantiles進步標(biāo)準(zhǔn)化

4.3 背景校正

4.3.1 使用RMA校正背景

Dilution.bg <- bg.correct.rma(Dilution)

par(mfrow=c(1, 2))
hist(Dilution, lty=1, col=rainbow(4), lwd=3,
     main="raw data")
hist(Dilution.bg, lty=1, col=rainbow(4), lwd=3,
     main="background corrected")

## hist對AffyBatch對象默認進行l(wèi)og2處理植兰,并繪制PM的密度分布
## 下面的代碼與上面的代碼等價
plotDensity(log2(pm(Dilution)),
            lty=1, col=rainbow(4), lwd=3,
            main="raw data")
plotDensity(log2(pm(Dilution.bg)),
            lty=1, col=rainbow(4), lwd=3,
            main="background corrected")

log2處理后的分布如下圖

plotDensity(log2(exprs(Dilution)),
            lty=1, col=rainbow(4), lwd=3,
            main="raw data")
plotDensity(log2(exprs(Dilution.bg)),
            lty=1, col=rainbow(4), lwd=3,
            main="background corrected")

4.3.2 使用MAS校正背景

par(mfrow=c(1, 2))
Dilution.bg.rma <- bg.correct.rma(Dilution)
hist(Dilution.bg.rma, lty=1, col=rainbow(4), lwd=3,
     main="RMA background corrected")

Dilution.bg.mas <- bg.correct.mas(Dilution)
hist(Dilution.bg.mas, lty=1, col=rainbow(4), lwd=3,
     main="MAS background corrected")

par(mfrow=c(1, 1))

[圖片上傳失敗...(image-57c667-1525937569283)]

這說明不同的背景校正方法有比較大的差異筒繁,比較不同的標(biāo)準(zhǔn)化方法時膝晾,應(yīng)在相同背景校正方法的情況下進行比較

4.4 標(biāo)準(zhǔn)化

標(biāo)準(zhǔn)化的方法有:

normalize.AffyBatch.constant
normalize.AffyBatch.contrasts
normalize.AffyBatch.invariantset
normalize.AffyBatch.quantiles

首選不進行標(biāo)準(zhǔn)化的結(jié)果:

eset0 <- expresso(Dilution,
                  bgcorrect.method="rma",
                  normalize=FALSE,
                  pmcorrect.method="pmonly",
                  summary.method="medianpolish")

eset0是一個ExpressionSet對象禀忆,用exprs提取的矩陣維度變小了箩退,有原來的features(probes)變成了probesets

slotNames(eset0)
## [1] "experimentData"    "assayData"         "phenoData"         "featureData"   
## [5] "annotation"        "protocolData"      ".__classVersion__"

rownames(eset0@featureData@data)[10]
## [1] "1008_f_at"

eset0@assayData
## <environment: 0x286adb60>

ls(eset0@assayData)
## [1] "exprs"    "se.exprs"

dim(get("exprs", eset0@assayData))
## [1] 12625     4

R中的環(huán)境:可以把R中的“pass by value”模式轉(zhuǎn)化為“pass by reference”模式

myEnv <- new("environment")
frogs <- rnorm(5)
assign("frogs",frogs,envir=myEnv)
ls(myEnv)
## [1] "frogs"

得到未經(jīng)標(biāo)準(zhǔn)化數(shù)據(jù)每個probset的均值和方差

dim(exprs(eset0))
## [1] 12625 4

eset0.mu <- apply(exprs(eset0),1,"mean")
eset0.var <- apply(exprs(eset0),1,"var")

尋找middle behavior芯片

apply(exprs(Dilution), 2, "median")
## 20A 20B 10A 10B 
## 188 127 149  94

constant方法與未經(jīng)標(biāo)準(zhǔn)化的樣本間差異比較

第三個為參考基線,用constant方法進行標(biāo)準(zhǔn)化

eset1 <- expresso(Dilution,
                  bgcorrect.method = "rma",
                  normalize.method = "constant",
                  normalize.param = list(refindex=3),
                  pmcorrect.method = "pmonly",
                  summary.method = "medianpolish")

eset1.mu <- apply(exprs(eset1),1,"mean")
eset1.var <- apply(exprs(eset1),1,"var")

MA plot對不同方法進行比較

A1 <- (eset0.mu + eset1.mu)/2

## M1是兩種方法對探針均值的影響比較,不能描述哪種方法比較好
M1 <- (eset0.mu - eset1.mu)/2

## M2是兩種方法對探針方差的影響比較娄涩,通常越好的方法越能減少樣本之間的差異
M2 <- (eset0.var / eset1.var)
M3 <- log2(eset0.var / eset1.var)

d0 <- 0.0001;
M4 <- log2((eset0.var + d0)/(eset1.var + d0))

plot(A1, M4, 
     xlab="(eset0.mu + eset1.mu)/2",
     ylab="log2((eset0.var + 1e-04)/(eset1.var + 1e-04))",
     main="Dilution: none against scaling")
# 大部分點都大于0扬虚,說明constant縮放標(biāo)準(zhǔn)化減少了方差

quantiles標(biāo)準(zhǔn)化方法與constant方法對樣本間差異性的影響比較

eset2 <- expresso(Dilution,
                  bgcorrect.method="rma",
                  normalize.method="quantiles",
                  pmcorrect.method="pmonly",
                  summary.method="medianpolish")
eset2.mu <- apply(exprs(eset2),1,"mean")
eset2.var <- apply(exprs(eset2),1,"var")

plot((eset1.mu+eset2.mu)/2,
     log2((eset1.var + 1e-04)/(eset2.var + 1e-04)),
     main="Dilution: scaling against quantiles")
# 大部分點都大于0咽斧,均值為0.98晋柱,說明quantiles方法比constant方法更能縮小樣本間的差異

改變背景校正方法為mas

以上我們比較的是不同標(biāo)準(zhǔn)化方法對樣本之間的差異性的影響拧额,通常該差異性也受不同背景校正方法和匯總法的影響侥锦,在上述比較中快毛,我們使用的是rma進行背景校正,匯總方法是median polish方法襟衰,接下來我們使用mas進行背景校正,median polish進行匯總苔悦,得到的比較結(jié)果如下

eset0 <- expresso(Dilution,
                  bgcorrect.method="mas",
                  normalize=FALSE,
                  pmcorrect.method="pmonly",
                  summary.method="medianpolish")

eset0.mu <- apply(exprs(eset0),1,"mean")
eset0.var <- apply(exprs(eset0),1,"var")

eset1 <- expresso(Dilution,
                  bgcorrect.method = "mas",
                  normalize.method = "constant",
                  normalize.param = list(refindex=3),
                  pmcorrect.method = "pmonly",
                  summary.method = "medianpolish")

eset1.mu <- apply(exprs(eset1),1,"mean")
eset1.var <- apply(exprs(eset1),1,"var")

eset2 <- expresso(Dilution,
                  bgcorrect.method="mas",
                  normalize.method="quantiles",
                  pmcorrect.method="pmonly",
                  summary.method="medianpolish")
eset2.mu <- apply(exprs(eset2),1,"mean")
eset2.var <- apply(exprs(eset2),1,"var")

plot((eset1.mu+eset0.mu)/2,
     log2((eset0.var + 1e-04)/(eset1.var + 1e-04)),
     main="Dilution: none against constant")
# 大部分點都大于0邑退,說明constant縮放標(biāo)準(zhǔn)化減少了方差

plot((eset1.mu+eset2.mu)/2,
     log2((eset1.var + 1e-04)/(eset2.var + 1e-04)),
     main="Dilution: scaling against quantiles")
# 大部分點都大于0蜈七,均值為0.265,說明quantiles方法比constant方法更能縮小樣本間的差異

Bioconductor還有一個R包affycomp能很方便對不同方法進行比較

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妹懒,一起剝皮案震驚了整個濱河市会前,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌临庇,老刑警劉巖废离,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肖方,死亡現(xiàn)場離奇詭異,居然都是意外死亡埋虹,警方通過查閱死者的電腦和手機截亦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葬馋,“玉大人,你說我怎么就攤上這事窗悯。” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長称龙。 經(jīng)常有香客問我,道長咳蔚,這世上最難降的妖魔是什么谈火? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任泼菌,我火速辦了婚禮,結(jié)果婚禮上焊刹,老公的妹妹穿的比我還像新娘。我一直安慰自己贺奠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布掷倔。 她就那樣靜靜地躺著勺像,像睡著了一般吟宦。 火紅的嫁衣襯著肌膚如雪袁波。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音夭苗,去河邊找鬼。 笑死界赔,一個胖子當(dāng)著我的面吹牛揽思,可吹牛的內(nèi)容都是我干的瞧挤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了远荠?” 一聲冷哼從身側(cè)響起档址,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蠢涝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體把鉴,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡场晶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年扳炬,在試婚紗的時候發(fā)現(xiàn)自己被綠了恨樟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绳泉,靈堂內(nèi)的尸體忽然破棺而出秦忿,到底是詐尸還是另有隱情,我是刑警寧澤胎许,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站穆碎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏色徘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遍搞。 院中可真熱鬧,春花似錦再愈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝌借。三九已至菩佑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瞧哟,已是汗流浹背牲剃。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工缠犀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滔迈。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓盼理,卻偏偏與公主長得像畴椰,于是被迫代替她去往敵國和親斜脂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容