eBayes(fit_object, trend = T) gives: Error in fitFDist(var, df1 = df, covariate = covariate) : NA covariate values not allowed
1
0
Entering edit mode
@sebastian-hesse-18351
Last seen 6 months ago
Germany / Munich / Dr.von Hauner Childr…

Im performing diff expression analysis for proteome data with LIMMA. As heteroscedasticity is present in my data and could not be corrected with VOOM (question here) I would like to try eBayes with the option trend = T. Unfortunately I get the error: Error in fitFDist(var, df1 = df, covariate = covariate) : NA covariate values not allowed.

Matrix::rankMatrix(design_dateProc) == ncol(design_dateProc)


and

any(colSums(design_dateProc) == 0)


However, first one is TRUE, second one is FALSE, ergo no problem there. I also checked if my blocking of batch effects is a problem but its the same if I don't block for it.

Any ideas what to do here? Thanks a lot! Sebastian

limma eBayes • 670 views
0
Entering edit mode
@gordon-smyth
Last seen 6 minutes ago
WEHI, Melbourne, Australia

I have never seen that error message from eBayes() for any real dataset. As far as I know, the error message could only arise from a dataset for which an entire row of expression values were all NA. In other words, a pretty weird dataset.

You obviously can't expect to do any analysis for a gene or protein when all the expression values are NA, so such rows should be removed.

Neither of the code chunks that Google made you check are at all relevant to the error message. The error message has nothing to do with the design matrix. Besides, if the design matrix was not of full rank, you would already know because limma checks for that automatically.

0
Entering edit mode

I have no NAs anywhere and all other options (trend=F, robust=T) run without problems.

0
Entering edit mode

If you are interested and willing to check out the original dataset I would be happy to invite you to the dropbox with the data and markdowns.

0
Entering edit mode

I can't see how that can be possible. What does

summary(fit_object\$Amean)


give?

0
Entering edit mode

Shame on me! It gave:

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's
10.60   14.31   15.35   15.69   16.69   26.57      45


So there were NAs, I just didn't look hard enough. I removed them using:

prots_with_NA <- which(apply(exprs(eSet_log2), 1, function(x) any ( is.na(x))))
eSet_log2 <- eSet_log2[-prots_with_NA,]


Thanks a lot!

0
Entering edit mode

Not only did you have NAs, but 45 rows of expression values consisted entirely of NAs.

You don't need to remove every row that has any NAs -- you only need to remove the rows that are all NA.