# Any way to filter out highly correlated genes with limma linear model?

I have Affymetrix gene level expression matrix (genes in the rows and sample ID on the columns), and I have annotation data of microarray experiment observation where sample ID in the rows and description identification on the columns.

example data

here is Affymetrix gene level expression matix:

> dim(exprs_mat)
[1] 112830   735
> exprs_mat[1:4, 1:3]
Tarca_001_P1A01 Tarca_003_P1A03 Tarca_004_P1A04
1_at           6.062215        6.125023        5.875502
10_at          3.796484        3.805305        3.450245
100_at         5.849338        6.191562        6.550525
1000_at        3.567779        3.452524        3.316134


here is annotation data which contain experiment observation:

> dim(ano)
[1] 735   6
SampleID   GA Batch     Set Train Platform
Tarca_001_P1A01 Tarca_001_P1A01 11.0     1 PRB_HTA     1    HTA20
Tarca_013_P1B01 Tarca_013_P1B01 15.3     1 PRB_HTA     1    HTA20
Tarca_025_P1C01 Tarca_025_P1C01 21.7     1 PRB_HTA     1    HTA20
Tarca_037_P1D01 Tarca_037_P1D01 26.7     1 PRB_HTA     1    HTA20
Tarca_049_P1E01 Tarca_049_P1E01 31.3     1 PRB_HTA     1    HTA20
Tarca_061_P1F01 Tarca_061_P1F01 32.1     1 PRB_HTA     1    HTA20


I intend to see how the genes in each sample are correlated with GA value of corresponding samples in the annotation data. How can I get my expected correlation matrix and filter out the genes by correlation value? any idea to make this happen correctly?

my attempt

library(limma)
fit <- limma::lmFit(exprs_mat, design = model.matrix( ~ 0 + t(ano$GA)) fit <- eBayes(fit) topTable(fit, coef=2)  but this attempt gave me dimension error and I still didn't get highly correlated genes from exprs_mat with each ano$GAin anodata. How can I get those highly correlated genes correctly? any possible way to make this happen in R? any thought?

How can I cut down exprs_mat with the shortlist of genes? any idea?

desired output

I intend to filter out genes in the gene expression matrix expr_mat by using correlation value (only keep highly correlated genes), expected sub expression matrix should have same data structure as expr_mat. any way to get this done?

• Where exactly are you receiving the error and what is the exact error message? Why are you transposing ano$ga and not allowing an intercept? Jun 25 '19 at 8:34 • @DevonRyan I just removed 0+ and ran the code, then I got this error: row dimension of design doesn't match column dimension of data object, any idea to make this work? Jun 25 '19 at 14:16 • Sounds like you have an NA somewhere. Jun 25 '19 at 14:17 • @DevonRyan I am pretty sure I did df[!is.na(df$GA), ], removed NA both exprs_mat and ano metadata already, still same error exists. I also used df[complete.cases(df),] to make sure remove all NA in my data. any idea or workable solution on that? thanks Jun 25 '19 at 15:11
• Have a look at the dimensions of what model.matrix() is returning, that should be telling. Jun 25 '19 at 18:16