我想通过R中的线性回归建模做一些对比。我有以下数据,mat1
:
Gene1 Gene2 Gene3
1 5.89 7.45 2.66
2 8.99 5.39 1.58
3 3.67 6.88 4.82
4 8.25 8.76 3.58
我使用以下代码创建设计矩阵:
library(limma)
expression <- factor(mat1)
design <- model.matrix(~0 + expression)
colnames(design) <- levels(expression)
设计矩阵看起来很奇怪。并且行数和列数已更改。错误在哪里?
以下是我想要继续使用的下一段代码:
fit <- lmFit(mat1, design)
contrast.matrix <- makeContrasts(Gen1 - Gen2, levels = design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
这是正确的方法吗?也许任何人都可以帮助我。感谢。
答案 0 :(得分:1)
使用线性模型分析基因表达的一般语法看起来是正确的,包括contrast.matrix
。但是,我担心您的代码不提供样本特征的信息(也就是患者研究中的临床协变量)。我不确定您正在测试的问题/假设是什么。例如,如果您要比较治疗(通常用1
编码)与不治疗(0
),您可以运行:
design <- model.matrix( ~ feature$treatment)
其中feature
是带有临床信息的矩阵或data.frame。
在没有看到您的实际数据和样本/临床功能的情况下,我最好的猜测是这两行代码出了问题:
design <- model.matrix(~0 + expression)
colnames(design) <- levels(expression)
即设计矩阵的设置。
您可能需要重新访问limma
R / Bioconductor包,并在必要时通过示例。
答案 1 :(得分:0)
试试下面的代码:
fit <- lmFit(mat1, design)
contrast.matrix <- limma::makeContrasts(Gen1 - Gen2, levels = design)
fit2 <- limma::contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)