[BioC] re About ndups error chol(V)
Gordon Smyth
smyth at wehi.EDU.AU
Wed Oct 31 10:56:46 CET 2007
Dear Kevin,
Thanks for the extra information.
1. The error is arising because you have too few arrays to use
duplicateCorrelation(). The help page says
"For this function to return statistically useful results, there must
be at least two more arrays than the number of coefficients to be
estimated, i.e., two more than the column rank of design. "
Your design matrix has one column, so you need at least 3 arrays to
use duplicateCorrelation().
2. The lowest possible correlation is -1/(ndups-1). For ndups=3, you
will get singularity with correlation=-0.5, which is what you have.
In any case, you should never use any correlation less than 0.
Regarding you other questions, dye-swaps are always a good idea, but
you can do an analysis without them, and between-array normalisation
is not usually needed.
Some unasked for advice: I think that spot weight functions like your
wt.fun are crazy and unsupported by evidence. I think you should
abandon it and use a decent background correction method instead
(like normexp).
Best wishes
Gordon
>Date: Tue, 30 Oct 2007 15:08:14 +0800
>From: " ?? " <zhaoye07 at gmail.com>
>Subject: [BioC] re About ndups error chol(V)
>To: bioconductor at stat.math.ethz.ch
>
>Dear Prof. Gorden:
>
>Thank you very much for your help. I am sorry for not telling the
>enough information. I have two two-colour arrays to analyze. Each
>probe is present three times on each chip side by side. I use Genepix
>to get the gps files.
>Here is my session information and functions.
>
> > sessionInfo()
>R version 2.2.0, 2005-10-06, i386-pc-mingw32
>
>attached base packages:
>[1] "methods" "stats" "graphics" "grDevices" "utils" "datasets"
>[7] "base"
>
> >library(limma)
> >targets
> >myfun<-function(x,threshold=50){
> okred<-abs(x[,"F635 Median"]-x[,"F635 Mean"])<threshold
> okgreen<-abs(x[,"F532 Median"]-x[,"F532 Mean"])<threshold
> as.numeric(okgreen & okred)
> }
> >RG <- read.maimages(targets$Filename, source="genepix", wt.fun=myfun)
> >RG$printer <- getLayout(RG$genes)
> >RG <- backgroundCorrect(RG, method="normexp", offset=50)
> >MA<-normalizeWithinArrays(RG,layout,method="loess")
> >design<-c(1,1)
> >library(statmod)
> >cor <- duplicateCorrelation(MA,design,ndups=3)
> >cor$consensus.correlation
> >fit<-lmFit(MA,design,ndups=3,correlation=cor$consensus.correlation)
>
>The consensus correlation returned by duplicateCorrelation is -0.5.
>And when I input
>"fit<-lmFit(MA,design,ndups=3,correlation=cor$consensus.correlation)"
>,it complains an error on chol(V).
>
>Questions:
>(1) why this error comes out?
>(2) If the cor$consensus.correlation value is negative, could I use
>the function "fit<-lmFit()"? If not, what is the range of the
>cor$consensus.correlation that I can use in the function
>"fit<-lmFit()".
>(3) Do I or must I need swap the dyes for my experiment?
>(4) Do I need use function "MA <- normalizeBetweenArrays(MA)" when I
>use the function "fit<-lmFit()"?
More information about the Bioconductor
mailing list