등각 로그 비율 변환을 수행하는 방법


17

나는 대략 24에 해당하는 움직임 행동 (자고있는 시간, 앉아있는 시간, 신체 활동을하는 시간)에 대한 데이터를 가지고 있습니다 (하루에 시간 단위로). 이러한 각 동작에 소요되는 상대적 시간을 캡처하는 변수를 만들고 싶습니다. 아이소 메트릭 로그 비율 변환이이 작업을 수행한다고 들었습니다.

R에서 ilr 함수를 사용해야하는 것처럼 보이지만 코드가있는 실제 예제는 찾을 수 없습니다. 어디서부터 시작해야합니까?

내가 가진 변수는 수면 시간, 평균 앉아있는 시간, 평균 평균 가벼운 신체 활동, 평균 중간 정도의 신체 활동 및 평균 활발한 신체 활동입니다. 수면은 자체보고 된 반면, 다른 수면은 유효한 날짜의 가속도계 데이터의 평균입니다. 따라서 이러한 변수의 경우 대소 문자는 정확히 24가되지 않습니다.

내 추측 : 나는 SAS에서 일하고 있지만 R 이이 부분을 사용하는 것이 훨씬 쉬울 것 같습니다. 따라서 먼저 관심 변수 만있는 데이터를 가져 오십시오. 그런 다음 acomp () 함수를 사용하십시오. 그런 다음 ilr () 함수의 구문을 알아낼 수 없습니다. 도움을 주시면 감사하겠습니다.

답변:


21

ILR (Isometric Log-Ratio) 변환은 구성 데이터 분석에 사용됩니다. 임의의 주어진 관찰은 혼합물 중 화학 물질의 비율 또는 다양한 활동에 소비 된 총 시간의 비율과 같이 단일로 합쳐진 양의 값의 집합이다. 불합치 불변량 은 각 관측치에 케이2 성분 이있을 수 있지만 케이1 기능적으로 독립적 인 값만 있음을 의미합니다. (기하학적으로는 관찰이 거짓말 케이1 차원 단면에서 케이 차원 유클리드 공간 아르 자형케이. 이 단순한 특성은 아래에 표시된 시뮬레이션 데이터의 산점도의 삼각형 모양으로 나타납니다.)

일반적으로, 로그 변환시 구성 요소의 분포는 "더욱 효율적"이됩니다. 이 변환은 관측치의 모든 값을 로그를 취하기 전에 기하 평균으로 나눠서 크기를 조정할 수 있습니다. (동일하게 모든 관측치의 데이터 로그는 평균을 빼서 중심에 둡니다.) "중심 로그 비율"변환 또는 CLR이라고합니다. 결과 값은 여전히 초평면 내에있는 아르 자형케이 스케일링은 제로로 로그의 합을 초래하기 때문에. ILR은이 초평면에 대한 정규 직교 기저를 선택하는 것으로 구성됩니다. 각 변환 된 관측치 의 케이1 좌표는 새로운 데이터가됩니다. 동등하게, 초평면은 사라지는 k 를 갖는 평면과 일치하도록 회전 (또는 반사)된다케이 좌표와 하나는 첫 번째케이1 좌표를 사용합니다. (회전과 반사는 거리가 유지되므로이 절차의 이름 일때마다isometries입니다.)

Tsagris, Preston 및 Wood는 "[회전 행렬] H 의 표준 선택은 Helmert 행렬에서 첫 번째 행을 제거하여 얻은 Helmert 하위 행렬"이라고 말합니다.

차수 케이 의 Helmert 행렬은 간단한 방식으로 구성됩니다 (예 : Harville p. 86 참조). 첫 번째 행은 모두 1 초입니다. 다음 행은 첫 번째 행과 직교 할 수있는 가장 간단한 것 중 하나입니다 (1,1,0,,0) 즉, ( 1 , 1 , 0 , , 0 )) . 열제이 는 이전의 모든 행에 직교하는 가장 간단한 것 중 하나입니다. 첫 번째제이1 항목은1 s이므로 행 2 , 3 , , j - 1에 직교 함을 보장합니다.2,,,제이1, 및 제이 엔트리로 설정된 1제이 는 (즉, 그 항목은 제로로 합산한다)의 첫 번째 행을 직교하도록. 그런 다음 모든 행은 단위 길이로 조정됩니다.

패턴을 설명 하기 위해 행의 크기가 조정되기 전의 4×4 Helmert 행렬이 있습니다.

(111111001120111).

(2017 년 8 월에 추가 된 편집) 이러한 "명암"의 한 가지 좋은 점 (행 단위로 읽음)은 해석 가능성입니다. 첫 번째 행은 삭제되고 케이1 나머지 행은 데이터를 나타냅니다. 두 번째 행은 두 번째 변수와 첫 번째 변수의 차이에 비례합니다. 세 번째 행은 세 번째 변수와 처음 두 변수의 차이에 비례합니다. 일반적으로 제이 행 ( 2제이케이 )는 변수제이 와 그 앞에 오는 모든 변수, 변수 1 , 2 , , j - 1 간의 차이를 반영합니다.1,2,,제이1. 첫 번째 변수 제이=1 은 모든 대비에 대한 "기본"으로 남습니다 . PCA (Principal Components Analysis)에 의해 ILR을 따를 때 이러한 해석이 도움이된다는 것을 알게되었습니다. 이는 초기 변수 간의 비교 측면에서 하중을 대략적으로 해석 할 수있게합니다. 나는 이 해석에 도움이되는 적절한 이름을 출력 변수에 제공하는 아래 의 R구현에 줄을 삽입했습니다 ilr. (편집 끝)

이러한 행렬을 생성 R하는 기능 contr.helmert을 제공 하므로 (축척이없고 행과 열이 무효화되고 변환 됨에도 불구하고)이를 수행하기 위해 (간단한) 코드를 작성할 필요조차 없습니다. 이를 사용하여 ILR을 구현했습니다 (아래 참조). 연습하고 테스트하기 위해 1000을 생성했습니다.1000 위해 Dirichlet 분포에서 매개 변수 1,2,,4 독립적 인 무승부를 하고 산점도 행렬을 플로팅했습니다. 여기에서 케이=4 입니다.

그림 _1

구성 데이터의 특성에 따라 점은 모두 왼쪽 하단 모서리에 모여서 플로팅 영역의 삼각형 패치를 채 웁니다.

그들의 ILR은 단지 3 개의 변수를 가지며, 다시 산점도 행렬로 그려집니다 :

그림 _2

산점도는 선형 회귀 및 PCA와 같은 2 차 분석에 더 잘 부합하는보다 특징적인 "타원 구름"모양을 획득했습니다.

Tsagris et al. 로그를 일반화하는 Box-Cox 변환을 사용하여 CLR을 일반화합니다. (로그는 매개 변수가 0 Box-Cox 변환입니다 .) 저자 (올바로 IMHO)가 주장하는 것처럼 많은 응용 프로그램에서 데이터가 변환을 결정해야하기 때문에 유용합니다. 이들의 파라미터 디리클레 데이터의 1/2 (NO 변화와 로그 변환의 중간 인) 아름답게 작동 :

그림 _3

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)

1
@Alex 나는 "스퓨리어스"상관 관계가 무슨 뜻인지 이해하지 못한다. 예, 변수는 종속적이어야하지만 PCA의 역할은 이러한 의존성을 특성화하고 수량화하는 데 도움이됩니다. 또한 CLR의 합은 일정하지 않습니다 (CLR이 단일 한 값을 기반으로하더라도).
whuber

1
@Alex 왜 PCA 출력을 연구하지 않습니까? 복잡하고 두 변수에만 초점을 맞추려면 두 변수 중 PCA를 수행하십시오. 그것들의 산점도는 공선 성의 본질과 정도를 드러 낼 것입니다.
whuber

1
@Alex Sure-- 이것이 ILR을 설명하기 위해이 답변에 산점도를 사용하는 이유입니다!
whuber

2
@Alex 흥미로운 인용문입니다. 그것은 EDA (다른 것들 중에서도) 앞에서 날아 다니는 철학을 반영하는 것으로 보입니다. 이것은 유용하거나 유익한 관계를 생성하는 변수의 표현을 찾을 수있을 때 문제가 아니라 좋은 것임을 나타냅니다. John Tukey와 같은 EDA의 지지자들은 데이터가 원래 표현 된 형태가 반드시 분석되어야하는 형태 일 필요는 없지만,이 인용은 암시 적으로 반대라고 가정합니다. 더 유용한 방법을 결정하기 위해 당신에게 맡길 것입니다.
whuber

1
@Eli 그 의견은 일반화 된 CLR을 언급하기위한 것입니다. 이 답변의 본문에 썼 듯이 "크기 조정으로 인해 로그의 합이 0이됩니다."
whuber

5

사용 사례의 경우 모든 것을 하나로 축소해도 괜찮습니다. 숫자가 정확히 24에 합산되지 않는다는 사실은 데이터에 약간의 노이즈를 추가 할 것이지만, 그렇게 많은 것을 망쳐서는 안됩니다.

아르 자형1

모든 기술적 세부 사항은 제쳐두고 변환 된 데이터를 올바르게 해석하는 방법을 아는 것이 중요합니다. 결국, ilr 변환은 그룹의 로그 비율을 나타냅니다. 그러나 사전 정의 된 일부 계층 구조와 관련하여 정의합니다. 다음과 같이 계층을 정의하면

여기에 이미지 설명을 입력하십시오

변환 된 각 변수는 다음과 같이 계산할 수 있습니다.

나는=아르 자형에스아르 자형+에스ln(아르 자형나는)(에스나는)

나는아르 자형나는나는에스나는나는(...) 기하 평균을 의미한다. 이러한 변환 된 변수는 균형이라고도합니다.

다음 질문은 변수의 계층 구조를 어떻게 정의합니까? 이것은 정말로 당신에게 달려 있지만, 세 개의 변수가 있다면, 너무 많은 조합이 엉망이 아닙니다. 예를 들어 계층 구조를 다음과 같이 정의 할 수 있습니다.

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

ABC(A|B) 12ln(|)2ln

그러나 원래의 질문으로 돌아가서 어떻게이 정보를 사용하여 실제로 변환을 수행 할 수 있습니까?

R을 사용하는 경우 작곡 패키지를 확인하겠습니다.

해당 패키지를 사용하려면 계층 구조를 정의하는 방법 인 순차적 이진 파티션 (SBP)을 만드는 방법을 이해해야합니다. 위에서 정의한 계층의 경우 다음 행렬로 SBP를 나타낼 수 있습니다.

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

양수 값은 분자의 변수를 나타내고 음수 값은 분모의 변수를 나타내고 0은 저울에 해당 변수가 없음을 나타냅니다. 다음을 사용하여 직교 정상 기초를 만들 수 있습니다balanceBase정의한 SBP를 .
이 정보가 있으면 위에서 계산 한 기준과 함께 비율 표를 전달할 수 있어야합니다.

잔액의 원래 정의에 대한 이 참조 를 확인하겠습니다.


4

위의 게시물 ILR 기준 을 구성 하고 ILR 잔액을 얻는 방법에 대한 질문에 답변합니다 . 이에 더하여, 어떤 기초를 선택 하면 결과를 쉽게 해석 할 수 있습니다.

다음 파티션에 관심이있을 수 있습니다.

(1) (수면, 좌식) (2) (수면).

컴포지션에 세 부분이 있으므로 분석 할 두 개의 ILR 균형을 얻게됩니다. 위와 같이 파티션을 설정하면 "활성화 여부"(1) 및 "비 활동 형태"(2)에 해당하는 저울을 얻을 수 있습니다.

각 ILR 잔액을 개별적으로 분석하여 (예 : 시간 또는 연도에 대해 회귀를 수행하여 변경 사항이 있는지 확인한 경우) "활성 여부"의 변경 및 변경 사항의 관점에서 결과를 해석 할 수 있습니다 "비 활동의 형태".

반면에 ILR 공간에서 새로운 기반을 얻는 PCA와 같은 기술을 수행하는 경우 결과는 선택한 파티션에 의존하지 않습니다. 이는 데이터가 CLR 공간에 존재하고, 1- 벡터에 직교하는 D-1 평면에 존재하며, ILR 저울은 CLR 평면에서 데이터의 위치를 ​​설명하기 위해 단위 노름 축의 다른 선택입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.