等尺性の対数比変換を実行する方法


17

移動行動(睡眠、座りがち、および身体活動の実行に費やした時間)に関するデータがあり、合計は約24時間(1日あたりの時間)です。これらの各動作に費やされた相対的な時間をキャプチャする変数を作成します-等尺性のログ比変換がこれを達成すると言われました。

Rでilr関数を使用する必要があるように見えますが、コードで実際の例を見つけることができません。どこから始めますか?

私が持っている変数は、睡眠時間、平均座りがちな時間、平均的な軽い身体活動、平均的な中程度の身体活動、平均的な激しい身体活動です。睡眠は自己申告でしたが、その他は有効な加速度計データの平均です。したがって、これらの変数の場合、ケースの合計は正確に24にはなりません。

私の推測:私はSASで働いていますが、このパートではRの方がはるかに使いやすいようです。そのため、最初に目的の変数のみを含むデータをインポートします。次に、acomp()関数を使用します。すると、ilr()関数の構文がわかりません。どんな助けでも大歓迎です。

回答:


21

ILR(Isometric Log-Ratio)変換は、組成データの分析に使用されます。特定の観測値は、混合物中の化学物質の割合やさまざまな活動に費やされた合計時間の割合など、1つに合計される正の値のセットです。和・ツー・ユニティ不変があるかもしれないがあることを意味k2の各観察の成分のみが存在するk1機能的に独立した値。(幾何学的には、観測はk次元ユークリッド空間R kのk1次元シンプレックスにありますkRk。この単純な性質は、以下に示すシミュレーションデータの散布図の三角形の形に現れています。

Rkk1kthk1

H

k1(1,1,0,,0)jj112,3,,j1jth1j

4×4

(1111110011201113).

k1j2jkj1,2,,j1j=1Rilr

Rcontr.helmert10001,2,3,4k=4

図1

組成データの特徴であるように、ポイントはすべて左下隅の近くに集まって、プロット領域の三角形のパッチを塗りつぶします。

ILRには3つの変数のみがあり、散布図行列としてプロットされます。

図_2

これは確かに見栄えがよくなります。散布図はより特徴的な「楕円雲」形状を取得し、線形回帰やPCAなどの2次解析に適しています。

01/2

図_3

1/2


この一般化は、ilr以下の関数で実装されます。これらの「Z」変数を生成するコマンドは単純に

z <- ilr(x, 1/2)

Box-Cox変換の利点の1つは、真のゼロを含む観測値への適用可能性です。つまり、パラメーターが正の場合でも定義されます。

参照資料

Michail T. Tsagris、Simon Preston、Andrew TA Wood、組成データのデータベースの電力変換arXiv:1106.1451v2 [stat.ME] 2011年6月16日。

David A. Harville、マトリックス代数統計学者の視点から。Springer Science&Business Media、2008年6月27日。


これがRコードです。

#
# ILR (Isometric log-ratio) transformation.
# `x` is an `n` by `k` matrix of positive observations with k >= 2.
#
ilr <- function(x, p=0) {
  y <- log(x)
  if (p != 0) y <- (exp(p * y) - 1) / p       # Box-Cox transformation
  y <- y - rowMeans(y, na.rm=TRUE)            # Recentered values
  k <- dim(y)[2]
  H <- contr.helmert(k)                       # Dimensions k by k-1
  H <- t(H) / sqrt((2:k)*(2:k-1))             # Dimensions k-1 by k
  if(!is.null(colnames(x)))                   # (Helps with interpreting output)
    colnames(z) <- paste0(colnames(x)[-1], ".ILR")
  return(y %*% t(H))                          # Rotated/reflected values
}
#
# Specify a Dirichlet(alpha) distribution for testing.
#
alpha <- c(1,2,3,4)
#
# Simulate and plot compositional data.
#
n <- 1000
k <- length(alpha)
x <- matrix(rgamma(n*k, alpha), nrow=n, byrow=TRUE)
x <- x / rowSums(x)
colnames(x) <- paste0("X.", 1:k)
pairs(x, pch=19, col="#00000040", cex=0.6)
#
# Obtain the ILR.
#
y <- ilr(x)
colnames(y) <- paste0("Y.", 1:(k-1))
#
# Plot the ILR.
#
pairs(y, pch=19, col="#00000040", cex=0.6)

1
@Alex「偽の」相関関係の意味がわかりません。はい、変数は依存関係にある必要がありますが、PCAの仕事は、これらの依存関係を特徴付けて定量化することです。また、CLRの合計は一定ではないことに注意してください(CLRは合計が1になる値に基づいていますが)。
whuber

1
@Alex PCAの出力を調べてみませんか?複雑で、2つの変数のみに焦点を合わせたい場合は、これら2つの変数のPCAを実行します。それらの散布図は、共線性の性質と範囲を明らかにします。
whuber

1
@Alex Sure--だからこそ、この答えで散布図を使用してILRを説明します!
whuber

2
@Alexそれは興味深い引用です。それはEDAに直面して飛ぶ哲学を反映しているように見えますが、それは有用なまたは有益な関係を生み出す変数の再表現を見つけることができるとき、それは問題ではなく、良いことであることを示唆しています。EDAの支持者(John Tukeyなど)は、データが最初に表現される形式は必ずしもデータを分析する形式であるとは限らないが、この引用は暗黙的に正反対を想定していると主張します。どちらがより有用なアプローチであるかを決めるのはあなたにお任せします。
whuber

1
@Eliこのコメントは、一般化されたCLRを参照することを目的としていました。この回答の本文で書いたように、「スケーリングによりログの合計がゼロになります。」
whuber

5

ユースケースでは、すべてを1つに縮小しても大丈夫でしょう。数字が正確に24にならないという事実は、データに少し余分なノイズを追加しますが、それはそれほど物事を混乱させるべきではありません。

RD1D

技術的な詳細は別として、ilr変換されたデータを適切に解釈する方法を知ることが重要です。最終的に、ilr変換は単にグループの対数比を参照します。ただし、定義済みの階層に関して定義します。次のような階層を定義する場合

ここに画像の説明を入力してください

変換された各変数は次のように計算できます

bi=rsr+slng(Ri)g(Si)

iRiiSiig(...)

次の質問は、変数の階層をどのように定義するのですか?これは本当にあなた次第ですが、3つの変数がある場合、混乱する組み合わせはあまり多くありません。たとえば、階層を次のように定義できます。

                        /-A
            /(A|B)-----|
-(AB|C)----|            \-B
           |
            \-C

ABC(A|B)A B12lnAB(AB|C)ABC23lnABC

しかし、元の質問に戻って、この情報を使用して実際にilr変換を実行するにはどうすればよいですか?

Rを使用している場合は、コンポジションパッケージをチェックアウトします

そのパッケージを使用するには、階層を定義する方法であるシーケンシャルバイナリパーティション(SBP)の作成方法を理解する必要があります。上記で定義した階層の場合、次のマトリックスでSBPを表すことができます。

        A  B  C
(A|B)   1 -1  0
(AB|C)  1  1 -1

ここで、正の値は分子の変数を表し、負の値は分母の変数を表し、ゼロは残高にその変数がないことを表します。balanceBase定義したSBPを使用して正規直交基底を構築できます。
これを取得したら、上で計算した基礎とともに、比率表を渡すことができるはずです。

バランスの元の定義については、このリファレンス参照してください


4

上記の投稿は ILR基礎を構築し ILR残高を取得する方法に関する質問に答えています。これに追加するには、を選択する根拠は、あなたの結果の解釈を容易にすることができます。

次のパーティションのパーティションに興味があるかもしれません:

(1)(睡眠、座りがち|身体活動)(2)(睡眠|座りがち)。

コンポジションには3つのパートがあるため、分析するために2つのILRバランスを取得します。上記のようにパーティションを設定することにより、「アクティブかどうか」(1)および「どの形式の非アクティブ」(2)に対応するバランスを取得できます。

各ILRバランスを個別に分析する場合、たとえば、時刻または時刻に対して回帰を実行して変更があるかどうかを確認する場合、「アクティブかどうか」の変更および「どの形式の非アクティブ」。

一方、PCAのようなILR空間で新しい基盤を取得する手法を実行する場合、結果はパーティションの選択に依存しません。これは、データが1ベクトルに直交するD-1平面であるCLR空間に存在し、ILRバランスがCLR平面上のデータの位置を記述する単位ノルム軸の異なる選択肢であるためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.