【发布时间】:2022-10-02 23:57:17
【问题描述】:
我目前正在上基因组学的在线课程,以湿实验室医师的身份进入,所以我的统计知识不是最好的。现在我们正在研究 R 中的 PCA 和 SVD。我得到了一个大矩阵:
head(mat)
ALL_GSM330151.CEL ALL_GSM330153.CEL ALL_GSM330154.CEL ALL_GSM330157.CEL ALL_GSM330171.CEL ALL_GSM330174.CEL ALL_GSM330178.CEL ALL_GSM330182.CEL
ENSG00000224137 5.326553 3.512053 3.455480 3.472999 3.639132 3.391880 3.282522 3.682531
ENSG00000153253 6.436815 9.563955 7.186604 2.946697 6.949510 9.095092 3.795587 11.987291
ENSG00000096006 6.943404 8.840839 4.600026 4.735104 4.183136 3.049792 9.736803 3.338362
ENSG00000229807 3.322499 3.263655 3.406379 9.525888 3.595898 9.281170 8.946498 3.473750
ENSG00000138772 7.195113 8.741458 6.109578 5.631912 5.224844 3.260912 8.889246 3.052587
ENSG00000169575 7.853829 10.428492 10.512497 13.041571 10.836815 11.964498 10.786381 11.953912
这些只是最初的几列和几行,它有 60 列和 1000 行。列是癌症样本,行是基因
任务是:
去除特征向量并使用 SVD 重构矩阵,然后我们需要计算重构误差作为原始矩阵和重构矩阵之间的差异。提示:您必须使用svd() 函数并将特征值均衡为$0$对于要删除的组件。
我一直在谷歌,但找不到解决这个任务的方法,这可能是因为我并没有真正得到这个问题本身。
所以我对我的矩阵 m 执行了 SVD:
d <- svd(mat)
这给了我 3 个矩阵(特征值、特征值和特征向量),我可以使用 d$u 等访问它们。
谁能给我一个关于如何进一步进行的提示?如何均衡特征值并最终计算误差?谢谢你的帮助!