因为项目需要,去了解了一下LASSO【The Least Absolute Shrinkage and Selection Operator】,又译最小绝对值收敛和选择算子、套索算法。鼓捣了几天下来,我也没有弄太懂,但是大概知道了怎么使用,特此记录一下。
另外查的过程中发现,LASSO并不产生P值,并且不建议去计算P值,虽然原理没弄大懂,但是可以记住结论。同样,附上参考链接:
Are p values generally reported in LASSO regressions? : statistics如果要计算P值的话,得通过另外一种回归计算:
https://stats.stackexchange.com/questions/84185/lasso-to-identify-important-variables-in-ordered-logistic-regression
而我看到的一篇文章里是用有序回归(ordinal regression)计算的P值。
Chen, D. Q. et al. Identification of serum metabolites associating with chronic kidney disease progression and anti-fibrotic effect of 5-methoxytryptophan. Nat. Commun. 10, 1–15 (2019).怎么是使用LASSO分析微生物的数据:
参考了这个脚本,该脚本只适用于二元分组的数据,并且接入的是 Biom 格式的文件:https://github.com/alifar76/MicrobeNets
同样因为项目需要,我基于该脚本按照我的理解修改成接入普通文件以及多组的情况,组别文件需要将字符型变量转化成数值型变量,脚本如下,不一定准确,仅供参考:
Biom 格式的也是类似的,只不过需要处理文件的最后一列的物种注释信息。
1 | ## 用于非biom 格式文件, Genus |
效果如何?
就我的结果来看,不是很理想。我另外使用MaAsLin2做了测试,发现后者的结果更加好一些。两种方法的重叠物种也不多。个人经验和意见,仅供参考。
MaAsLin2Python如何实现LASSO?
使用了该方法的文章以及脚本:
Wilmanski, T. /et al./ Blood metabolome predicts gut microbiome α-diversity in humans. /Nat. Biotechnol./ doi:10.1038/s41587-019-0233-9
GitHub - PriceLab/ShannonMets: ** Blood metabolome predicts gut microbiome α-diversity in humans**