ILR (Isometric Log-Ratio) 변환은 구성 데이터 분석에 사용됩니다. 임의의 주어진 관찰은 혼합물 중 화학 물질의 비율 또는 다양한 활동에 소비 된 총 시간의 비율과 같이 단일로 합쳐진 양의 값의 집합이다. 불합치 불변량 은 각 관측치에 k≥2 성분 이있을 수 있지만 k−1 기능적으로 독립적 인 값만 있음을 의미합니다. (기하학적으로는 관찰이 거짓말 k−1 차원 단면에서 k 차원 유클리드 공간 Rk. 이 단순한 특성은 아래에 표시된 시뮬레이션 데이터의 산점도의 삼각형 모양으로 나타납니다.)
일반적으로, 로그 변환시 구성 요소의 분포는 "더욱 효율적"이됩니다. 이 변환은 관측치의 모든 값을 로그를 취하기 전에 기하 평균으로 나눠서 크기를 조정할 수 있습니다. (동일하게 모든 관측치의 데이터 로그는 평균을 빼서 중심에 둡니다.) "중심 로그 비율"변환 또는 CLR이라고합니다. 결과 값은 여전히 초평면 내에있는 Rk 스케일링은 제로로 로그의 합을 초래하기 때문에. ILR은이 초평면에 대한 정규 직교 기저를 선택하는 것으로 구성됩니다. 각 변환 된 관측치 의 k−1 좌표는 새로운 데이터가됩니다. 동등하게, 초평면은 사라지는 k 를 갖는 평면과 일치하도록 회전 (또는 반사)된다kth 좌표와 하나는 첫 번째k−1 좌표를 사용합니다. (회전과 반사는 거리가 유지되므로이 절차의 이름 일때마다isometries입니다.)
Tsagris, Preston 및 Wood는 "[회전 행렬] H 의 표준 선택은 Helmert 행렬에서 첫 번째 행을 제거하여 얻은 Helmert 하위 행렬"이라고 말합니다.
차수 k 의 Helmert 행렬은 간단한 방식으로 구성됩니다 (예 : Harville p. 86 참조). 첫 번째 행은 모두 1 초입니다. 다음 행은 첫 번째 행과 직교 할 수있는 가장 간단한 것 중 하나입니다 (1,−1,0,…,0) 즉, ( 1 , − 1 , 0 , … , 0 )) . 열j 는 이전의 모든 행에 직교하는 가장 간단한 것 중 하나입니다. 첫 번째j−1 항목은1 s이므로 행 2 , 3 , … , j - 1에 직교 함을 보장합니다.2 , 3 , … , j - 1, 및 제이일 엔트리로 설정된 1 - j 는 (즉, 그 항목은 제로로 합산한다)의 첫 번째 행을 직교하도록. 그런 다음 모든 행은 단위 길이로 조정됩니다.
패턴을 설명 하기 위해 행의 크기가 조정되기 전의 4 × 4 Helmert 행렬이 있습니다.
⎛⎝⎜⎜⎜11111− 11110− 21100− 3⎞⎠⎟⎟⎟.
(2017 년 8 월에 추가 된 편집) 이러한 "명암"의 한 가지 좋은 점 (행 단위로 읽음)은 해석 가능성입니다. 첫 번째 행은 삭제되고 k - 1 나머지 행은 데이터를 나타냅니다. 두 번째 행은 두 번째 변수와 첫 번째 변수의 차이에 비례합니다. 세 번째 행은 세 번째 변수와 처음 두 변수의 차이에 비례합니다. 일반적으로 제이 행 ( 2 ≤ j ≤ k )는 변수제이 와 그 앞에 오는 모든 변수, 변수 1 , 2 , … , j - 1 간의 차이를 반영합니다.1 , 2 , … , j − 1. 첫 번째 변수 j = 1 은 모든 대비에 대한 "기본"으로 남습니다 . PCA (Principal Components Analysis)에 의해 ILR을 따를 때 이러한 해석이 도움이된다는 것을 알게되었습니다. 이는 초기 변수 간의 비교 측면에서 하중을 대략적으로 해석 할 수있게합니다. 나는 이 해석에 도움이되는 적절한 이름을 출력 변수에 제공하는 아래 의 R
구현에 줄을 삽입했습니다 ilr
. (편집 끝)
이러한 행렬을 생성 R
하는 기능 contr.helmert
을 제공 하므로 (축척이없고 행과 열이 무효화되고 변환 됨에도 불구하고)이를 수행하기 위해 (간단한) 코드를 작성할 필요조차 없습니다. 이를 사용하여 ILR을 구현했습니다 (아래 참조). 연습하고 테스트하기 위해 1000을 생성했습니다.1000 위해 Dirichlet 분포에서 매개 변수 1 , 2 , 3 , 4 독립적 인 무승부를 하고 산점도 행렬을 플로팅했습니다. 여기에서 k = 4 입니다.
구성 데이터의 특성에 따라 점은 모두 왼쪽 하단 모서리에 모여서 플로팅 영역의 삼각형 패치를 채 웁니다.
그들의 ILR은 단지 3 개의 변수를 가지며, 다시 산점도 행렬로 그려집니다 :
산점도는 선형 회귀 및 PCA와 같은 2 차 분석에 더 잘 부합하는보다 특징적인 "타원 구름"모양을 획득했습니다.
Tsagris et al. 로그를 일반화하는 Box-Cox 변환을 사용하여 CLR을 일반화합니다. (로그는 매개 변수가 0 Box-Cox 변환입니다 .) 저자 (올바로 IMHO)가 주장하는 것처럼 많은 응용 프로그램에서 데이터가 변환을 결정해야하기 때문에 유용합니다. 이들의 파라미터 디리클레 데이터의 1 / 2 (NO 변화와 로그 변환의 중간 인) 아름답게 작동 :
1 / 2
이 일반화는 ilr
아래 함수 에서 구현 됩니다. 이 "Z"변수를 생성하는 명령은 단순히
z <- ilr(x, 1/2)
Box-Cox 변환의 장점 중 하나는 0을 포함하는 관측치에 적용 할 수 있다는 점입니다. 매개 변수가 양수인 경우에는 여전히 정의됩니다.
참고 문헌
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)