我想使用R来执行层次聚类,其中两组变量描述了相同的样本。一组是已经标准化和批次效应校正的微阵列基因表达数据(对于特定基因)。另一组也有一些描述相同样本的定量临床参数。然而,这些临床变量尚未标准化或经历任何类型的转化(即原始连续值)。
例如,这些变量中的一个变量的范围可以是2到35,而另一个变量的范围是0.1到0.9,等等。
因此,作为我实现层次聚类并同时使用两个组(在矩阵/数据框中合并)的最终目标,为了检查哪些临床变量与特定基因聚类等等:
1)在与基因合并并进行聚类之前,是否需要在临床变量组中进行初始转换?例如:log2转换,也已对我的基因表达数据的一部分进行了!!
2)或者,行缩放(即输入数据中的总功能)会考虑到这种差异吗?
3)对于类似的分析/方法,如构建上述总变量的相关图,是否只需简单的缩放即可?
答案 0 :(得分:2)
在没有看到您的基因表达数据的情况下,我只能根据您的描述,在您提出的3个问题的背景下为您提供一些一般性建议:
1)你一定要检查每组的分布情况。在R中,您可以使用以下一个或多个函数来显示分布:
hist(expression_data) ##histogram
plot(density(expression_data)) ##density plot; alternative to histogram
qqnorm(expression_data); qqline(expression_data) #QQ plot
由于我的理解是你的一个表达数据组是log2变换的,那个特定的组应该具有正态分布(即直方图中的钟形曲线形状和QQ图中的直线)。是否转换尚未转换的组将取决于您要对数据执行的操作。例如,如果您想使用t检验来比较两个组,那么您肯定需要转换,因为存在与t检验相关联的正态假设。关于层次聚类,如果您决定在单个聚类分析中使用这两个组,那么为什么要保持一个转换而另一个不转换?
2)按功能缩放是一种合理的方法。 Here是来自犹他州立大学的集群讲座。统计课程,举个例子。如果您决定在R中使用scale=TRUE
函数,则可以选择heatmap
3)我认为你的第三个问题没有明确的答案。它必须取决于您拥有多少可用功能以及您将在下游进行哪些分析。与问题1类似,我认为简单的缩放可能足以通过层次聚类可视化您的数据。但是,请记住,假设您决定执行线性模型(这对于微阵列基因表达数据非常常见),您可能需要考虑更复杂的数据缩放。