如何解决VST转换后负值导致Bray-Curtis及PCoA分析报错问题
问题:VST标准化后数据无法计算Bray-Curtis距离用于PCoA绘制
背景
- 现有一张包含58个样本、888个分类单元的OTU表,行对应OTU,列对应样本,示例代码如下:
Otus <- data.frame(S_1 = c(0, 0, 1), S_2 = c(12, 0, 5), S_3 = c(0, 5, 3), row.names = c("OTU_1", "OTU_2", "OTU_3"))
- 通过
phyloseq_to_deseq2命令将phyloseq对象转换为DESeq2对象,再执行以下命令完成方差稳定转换(VST)标准化:
getVarianceStabilizedData(side_dds) # side_dds为DESeq2对象
- 计划基于标准化后的数据绘制样本PCoA图,计算Bray-Curtis距离时触发报错:
results may be meaningless because data have negative entries in method “bray”.
- 已查找相关讨论但未得到有效解答,另有观点不建议通过给数据添加常数的方式解决该问题。
补充建议(Bastian Schiffthaler)
建议上传可复现的工作流程或数据。你遇到的错误源于Bray-Curtis相似度要求输入必须是严格正值,而VST转换会产生负值。可以使用
assay(vsd) + min(assay(vsd))处理数据,因为此时数据已经是同方差且经过(伪)log2转换,这样操作本质上只是调整零偏移。注意不要将转换后的值与任何“现实意义”挂钩。考虑到你的数据存在零膨胀问题,也可以尝试用zinbwave包进行预处理,替代VST方法。
内容的提问来源于stack exchange,提问作者TorpCatBioInf
相关产品推荐
相关产品推荐

