您可能会在CLR坐标上遇到香草PCA的一些问题。成分数据存在两个主要问题:
各种合成变换解决了这些问题中的一个或两个。特别是,CLR通过获取观察到的频率与它们的几何平均值之比的对数来转换数据,即xG(x)
x^={log(x1G(x)),…,log(xnG(x))}={log(x1)−log(G(x)),…,log(xn)−log(G(x))}
现在,考虑一下
log(G(x))=log(exp[1n∑i=1nlog(xi)])=E[log(x)]
这实际上意味着
∑x^=∑[log(x)−E[log(x)]]=0
换句话说,CLR消除了值范围限制(这对某些应用程序是好的),但没有消除总和约束,从而导致了奇异的协方差矩阵,有效地打破了(M)ANOVA /线性回归/ ...并使PCA对异常值敏感(因为稳健的协方差估计需要完整秩矩阵)。据我所知,在所有合成变换中,只有ILR可以解决这两个问题,而没有任何主要的基础假设。但是,情况要复杂一些。CLR坐标的SVD为您提供了ILR空间中的正交基础(ILR坐标跨越CLR中的超平面),因此您的方差估计将不会在ILR和CLR之间有所不同(这很明显,因为ILR和CLR都是等距的。单纯形)。但是,有一些方法可以在ILR坐标上进行稳健的协方差估计[2]。
更新我
只是为了说明CLR对于相关和位置相关方法无效。假设我们对三个线性独立的正态分布分量的社区进行了100次采样。为了简单起见,让所有组件具有相等的期望值(100)和方差(100):
In [1]: import numpy as np
In [2]: from scipy.stats import linregress
In [3]: from scipy.stats.mstats import gmean
In [4]: def clr(x):
...: return np.log(x) - np.log(gmean(x))
...:
In [5]: nsamples = 100
In [6]: samples = np.random.multivariate_normal(
...: mean=[100]*3, cov=np.eye(3)*100, size=nsamples
...: ).T
In [7]: transformed = clr(samples)
In [8]: np.corrcoef(transformed)
Out[8]:
array([[ 1. , -0.59365113, -0.49087714],
[-0.59365113, 1. , -0.40968767],
[-0.49087714, -0.40968767, 1. ]])
In [9]: linregress(transformed[0], transformed[1])
Out[9]: LinregressResult(
...: slope=-0.5670, intercept=-0.0027, rvalue=-0.5936,
...: pvalue=7.5398e-11, stderr=0.0776
...: )
更新二
考虑到我收到的答复,我发现有必要指出,在我的回答中,我从来没有说过PCA不适用于CLR转换的数据。我已经说过,CLR可以细微的方式破坏PCA ,这对于降低维数并不重要,但对探索性数据分析却很重要。@Archie引用的论文涵盖了微生物生态学。在计算生物学领域中,使用各种距离矩阵上的PCA或PCoA来探索数据变化的来源。我的回答只能在这种情况下考虑。此外,这在论文本身中得到了强调:
...组成双标图[注:指PCA]在进行β多样性分析的主坐标(PCoA)图上具有多个优势。当数据是子集时,获得的结果非常稳定(Bian等人,2017),这意味着探索性分析不仅是由数据中的存在缺席关系或过度稀疏驱动的(Wong等人,2016; Morton等人)等人,2017)。
Gloor等人,2017年
更新三
对已发表研究的其他参考(我感谢@Nick Cox添加更多参考的建议):
- 反对对PCA使用CLR的争论
- 反对将CLR用于基于相关性的方法的争论
- ILR简介
clr
呢....