[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