CLR(集中ログ比変換)を使用してPCAのデータを準備できますか?


13

スクリプトを使用しています。コアレコード用です。特定の深さ(最初の列)の列に異なる元素組成を示すデータフレームがあります。PCAを実行したいのですが、選択しなければならない標準化方法について混乱しています。

あなたの誰もがのclr()ためにあなたのデータを準備するために使用しましたprcomp()か?または、ソリューションを悪化させますか。で属性スケールをclr()使用するprcomp()ことに加えて、関数を使用する前にデータのon を使用してみましたprcomp()

data_f_clr<- clr(data_f)
data_pca <- prcomp(data_f, center = TRUE, scale. = TRUE)

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html

スケールはデータをスケーリングするために記述されているため、単位分散があります。私のデータは私が望んでいたものとは非常に異なるスケールを持っているので、私は思う。問題は、上記のコードを使用するとき、またはスキップするときclr()(より望ましい結果が得られる)、別のソリューションを受け取ることです。しかし、私はなぜclr()その場合に邪魔なのか知りたいですか?


2
私のような非Rのユーザーの場合、どのような明確にするために役に立つかもしれませんclr....ん
ドゥーガル

3
もちろん、CLRはソリューションを変更します。他にこの手順を使用する理由は何ですか?おそらく、どのアプローチが優れているかを判断する方法を尋ねる必要があります。サイトでCLRを検索すると、役立つ投稿が見つかります。関連する質問への答え私はあなたを助けるかもしれないいくつかのイラストを提供しました。
whuber

1
簡単な答えは、PCAの前にデータで必要なことを何でもできるということです。これを支配する布告、法律、レシピはありません。PCA(回転なし)はスケール不変であると主張する人もいれば、PCAの結果はスケールに非常に敏感だと主張する人もいます。ただし、PCAの結果をローテーションする場合、CLRなどの事前のPCA正規化またはmean = 0およびSD = 1の標準化が必須です。CLRについては、Lee Cooperの著書Market Share Analysisanderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf)でCLRをコンポーネント分析にリンクしています。
マイクハンター

2
@DJohnson CLRのさまざまな単語にリンクされたPDFを検索し、対数比変換を中心にしたが、何も見つかりませんでした。私は何を間違えましたか?そのバージョンにはインデックスはありませんが、セクションの見出しは有望に見えず、参照には構成データのこの変換を提案したジョン・エイチソンは含まれていません。その下の議論へのページ参照または他の名前を歓迎します。
ニックコックス

1
すでに述べたように、リンク先のバージョンにはインデックスがありませんので、参照しないでください。キーワード "log-centering"に感謝します。そこから、このスレッドの中心である対数比の変換ではなく、別の獣の議論が見つかります。@whuberはすでにこのサイトのディスカッションへのリンクを提供しています。重要なのは、比率が1に追加された構成データの場合、異なるスペースへの集合的な変換の必要性と範囲があるということです。「比率」という言葉を、あなたが知っているものとは異なるアイデアを指しているとして見逃しました。
ニックコックス

回答:


5

はい、できます。実際、データが構成されている場合はそうすべきです。

微生物学の分野からのレビューはここにあります。これは、CLR変換とそれに続くPCAを使用して、ミクロバイオームデータセットを分析する動機付けです(定義ごとに構成されています):https : //www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / full


非常に残念なことに、この論文は多くの場合ひどく間違っており、2人の共著者が組成データ分析の支持者であることを考えると残念です。
エリKorvigo

@EliKorvigoこのコメントは根拠のあるものかもしれませんが、それだけでは役に立ちません。公開された批評または少なくとも公的な批評を指すことができれば、そのような批評は絵を変えるでしょう。
ニックコックス

@NickCox確かに、FilzmoserとHronによる論文があります。前述の論文に対する直接的な批判ではありませんが、相関分析にCLRを使用することは反対ですが、前述の論文ではCLRに基づくツールを推奨しています。
エリコルヴィゴ

@NickCox Archieが言及した論文の最後の2人の著者であるPawlowsky-Glahn博士とEgozcue博士に深く敬意を表したいと思います。実際、CLRの欠点に対処するためにILRを導入しました(Egozcue and Pawlowsky-Glahn、2003)。CLRを参照すると、「それにもかかわらず、その部分空間の直交参照は単純な方法で取得されない」と書いています。
エリコルヴィゴ

Pawlowsky-GlahnとEgozcueは、「合成データとその分析:はじめに」(2006)で、clr係数には「特定の利点があります。表現は部品で対称であり、これらの座標はAitchison距離の計算を通常の距離に減らします。バイプロットの計算に役立ちます(...) "
jO。

5

CLR座標でバニラPCAの問題が発生する場合があります。組成データには2つの大きな問題があります。

  • それらは厳密に非負です
  • 彼らは合計制約を持っています

さまざまな構成変換がこれらの問題の一方または両方に対処します。具体的には、CLRは、観測された周波数の比の対数取ることによって、あなたのデータを変換しxとその幾何平均G(x)すなわち、

x^={ログバツ1GバツログバツnGバツ}={ログバツ1ログGバツログバツnログGバツ}

今、それを考慮してください

ログGバツ=ログexp[1n=1nログバツ]=E[ログバツ]

これは、効果的手段その Σ

バツ^=[ログバツE[ログバツ]]=0

言い換えると、CLRは値範囲の制限を削除します(一部のアプリケーションに適しています)が、合計制約を削除しないため、特異な共分散行列が生成され、(M)ANOVA /線形回帰/ ...外れ値に敏感なPCA(ロバスト共分散推定にはフルランク行列が必要なため)。私の知る限り、すべての構成変換のうち、ILRのみが両方の問題に対処しますが、主要な前提はありません。ただし、状況はもう少し複雑です。CLR座標のSVDは、ILR空間の直交基底を提供します(ILR座標はCLRの超平面にまたがります)。そのため、分散推定はILRとCLRの間で異なりません(もちろん、ILRとCLRは両方ともシンプレックス)。ただし、ILR座標でロバストな共分散推定を行う方法があります[2]。

更新I

CLRは相関および場所依存のメソッドには有効ではないことを示すためだけです。線形に独立した3つの正規分布コンポーネントのコミュニティを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
   ...: )

アップデートII

受け取った回答を考慮すると、PCAはCLRで変換されたデータに対して機能しないと言った答えはどこにもありません。CLRはPCAを微妙に破壊する可能性があると述べました。これは次元削減には重要ではないかもしれませんが、探索的データ分析には重要です。@Archieが引用した論文は微生物生態学を扱っています。計算生物学の分野では、さまざまな距離行列のPCAまたはPCoAを使用して、データの変動の原因を調査します。私の答えはこの文脈でのみ考慮されるべきです。さらに、これは論文自体で強調されています:

...組成バイプロット[注:PCAを参照]には、βダイバーシティ分析の主座標(PCoA)プロットに比べていくつかの利点があります。データがサブセットの場合、得られる結果は非常に安定しています(Bian et al。、2017)。これは、探索的分析が単にデータ内の存在不在関係や過度のスパース性によって駆動されないことを意味します(Wong et al。、2016; Morton et al al。、2017)。

Gloor et al。、2017

アップデートIII

公開された研究への追加の参照(参照を追加する推奨事項について@Nick Coxに感謝します):

  1. PCAにCLRを使用することに対する議論
  2. 相関ベースのメソッドにCLRを使用することに対する議論
  3. ILRの概要

2
特異共分散行列は、pcaの問題ではありません!
kjetil bハルヴォルセン

実際、@ kjetilbhalvorsenでは、PCA自体はマトリックスがフルランクである必要はありません。技術的に言えば、特異共分散行列は1つ以上のゼロ固有値のみをもたらします。。しかし、人々は通常でどこcompositionalityキックである、分散の源を探るためにPCAを適用し、私は私の言葉遣いではなく、慎重にしてきた理由の:「...効果的にPCAが壊れる/ ...多くで微妙な方法」
イーライKorvigo

つまり、特異性のために、コンポーネントごとに説明されている分散の量を計算できないということですか?それ以外は、PCAを実行して次元削減を実行できます。これはANOVA /線形回帰にどのように影響しますか?
アーチー

1
答えは非常に興味深いため、+ 1。しかし、それは批判なしには行かない。どうやら(私にとってはばかげている)、構成データまたはclr変換データでPCAを行うことが「微妙な方法で」不適切である理由を正確に説明しなかったようです(どのように?)。また、Pythonコードを提供していますが、その結果は提供していません。結果を表示してコメントできますか?最後に、ILR transfotmに関するリンクを残してください。
ttnphns

1
@ttnphns 1)私がコメントに書いたように、CLRは、組成の閉鎖によって導入された分散ソースの歪みを除去せず、探索的データ分析に影響を与えます。ロバストな共分散推定にはフルランクのマトリックスが必要です。2)結果がないと言う理由がわかりません。これは、入力と出力(結果)を使用したインタラクティブなPythonセッションです。3)ILRの参照を追加しました。
エリコルヴィゴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.