确定 R 中每个分量的样本方差百分比

如何解决确定 R 中每个分量的样本方差百分比

我将 PCA 应用于我的生物医学数据(31 个基因~行和 1904 个患者~列),并选择了 9 个组件。结果,我有两个子矩阵,其中一个是 9 x 1904 矩阵(我称之为矩阵 A)。

矩阵 A 表示它的行是 9 个分量,它的列是 1904 个病人,它的条目是连续值。现在我想找出这 9 个组件中的哪个组件仅拥有 1904 名患者中的一个患者,与其他患者相比,该患者的方差占 > 10%(可能将该患者视为该组件中的异常值)。最后,我计划删除这些已识别的组件。

例如,我计算每个组件内患者的方差。然后我意识到组件 3 拥有 1904 名患者中的一个患者,与其他患者相比,该患者的方差大于 10% => 我认为该组件包含一个异常值。我从组件中删除了组件 3

我一直坚持在 R 中做这件事。任何想法都值得赞赏!提前致谢。

更新:以下是我的尝试:

虚拟数据 df 表示 10 个患者~行和 3 个组件~列

df=structure(c(-0.17134779227884,-0.0962044733094678,0.0683562125182872,-0.243465849606547,0.333327443120999,-0.124616446710062,0.213423949350221,-0.086118378436248,0.209279578622201,0.425834454279314,0.16728832317405,0.952243725136014,-0.101114176191555,0.187773366984759,0.207570066964501,-0.117920965767025,0.939250613987857,-0.00465861655152568,-0.288348010784738,0.0469224124443503,-0.165934907003698,-0.18339647933408,-0.098550778268536,-0.094031840482207,0.0759839405752319,-0.141524045263773,-0.0665849661695848,-0.442355221875939,-0.156962689636778,-0.142727471861712),.Dim = c(10L,3L),.Dimnames = list(c("MB-0362","MB-0346","MB-0386","MB-0574","MB-0503","MB-0641","MB-0201","MB-0218","MB-0316","MB-0189"),c("comp 1","comp 2","comp 3"
)))

我尝试计算每个患者的方差对三个分量中的每一个的贡献

df1 = as.data.frame(df)
df1$Patients = rownames(df) 
df1 = as.data.frame(df1) %>%
  pivot_longer(-Patients,names_to = "Component",values_to = "Weight") %>%
  group_by(Component) %>%
  mutate(var = var(Weight))

现在我必须计算每个患者对每个组件的方差百分比。我被这个问题困住了:(

解决方法

哇,也许我自己解决了我的问题。以下是我的解决方案

df1 = as.data.frame(df)
df1$Patients = rownames(df) 
df1 = as.data.frame(df1) %>%
  pivot_longer(-Patients,names_to = "Component",values_to = "Weight") %>%
  group_by(Component) %>%
  mutate(var = var(Weight)) %>%
  group_by(Patients) %>%
  mutate(percent = var/sum(var) * 100)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?