İzometrik log-oran dönüşümü nasıl yapılır


18

Hareket davranışları (uyku, hareketsiz ve fiziksel aktivite yapmak için harcanan zaman) hakkında yaklaşık 24 (günde saat cinsinden) olan verilerim var. Bu davranışların her birinde harcanan göreceli zamanı yakalayan bir değişken oluşturmak istiyorum - Bana bunu izometrik bir log-oran dönüşümünün başaracağı söylendi.

R ilr işlevini kullanmalıyım gibi görünüyor, ancak kod ile gerçek örnekleri bulamıyorum. Nereden başlamalıyım?

Sahip olduğum değişkenler uyku için harcanan zaman, ortalama hareketsiz zaman, ortalama ortalama hafif fiziksel aktivite, ortalama orta fiziksel aktivite ve ortalama güçlü fiziksel aktivitedir. Uyku kendi kendine bildirilmişken, diğerleri geçerli günlerde ivmeölçer verilerinin ortalamalarıdır. Yani bu değişkenler için, vakalar tam olarak 24'ü kapsamaz.

Benim tahminim: SAS'ta çalışıyorum, ancak R'nin bu bölüm için kullanımı çok daha kolay olacak gibi görünüyor. Bu yüzden önce sadece ilgili değişkenlerle veri içe aktarın. Ardından acomp () işlevini kullanın. Sonra ilr () işlevinin sözdizimini bulamıyorum. Herhangi bir yardım çok takdir edilecektir.

Yanıtlar:


21

ILR (İzometrik Log-Ratio) dönüşümü, bileşimsel verilerin analizinde kullanılır. Herhangi bir gözlem, bir karışımdaki kimyasalların oranları veya çeşitli aktivitelerde harcanan toplam sürenin oranları gibi birliği özetleyen bir dizi pozitif değerdir. Toplam-için-birlik değişmez olabilir ancak anlamına gelir k2 , her gözlem parçaları, sadece orada k1 işlevsel olarak bağımsız değerleri. (Geometrik olarak, gözlemler k boyutlu Öklid uzayında k1 boyutlu bir simpleks üzerinde uzanır R kkRk. Bu basit doğa, aşağıda gösterilen simüle edilmiş verilerin dağılım grafiklerinin üçgen şekillerinde kendini gösterir.)

Tipik olarak, bileşenlerin dağılımları log dönüştürüldüğünde "daha hoş" olur. Bu dönüşüm, bir gözlemdeki tüm değerleri günlükleri almadan önce geometrik ortalamalarına bölerek ölçeklendirilebilir. (Aynı şekilde, herhangi bir gözlemdeki verilerin günlükleri, ortalamaları çıkarılarak ortalanır.) Bu, "Ortalanmış Günlük Oranı" dönüşümü veya CLR olarak bilinir. Sonuçlanan değerler hala Rk bir hiper düzlem içinde yer alır , çünkü ölçeklendirme günlüklerin toplamının sıfır olmasına neden olur. ILR, bu hiper düzlem için herhangi bir ortonormal temel seçmekten oluşur: Dönüştürülen her gözlemin k1 koordinatları yeni verileri haline gelir. Eşdeğer olarak, hiper düzlem kaybolan k ile düzleme denk gelecek şekilde döndürülür (veya yansıtılır).kthve ilk k1 koordinatlarını kullanır . (Dönmeler ve yansımalar mesafeyi korudukları için izometridirler , bu nedenle bu prosedürün adı.)

Tsagris, Preston ve Wood, "[rotasyon matrisi] H standart bir seçiminin , ilk satırı Helmert matrisinden çıkararak elde edilen Helmert alt matrisi olduğunu" belirtir .

k mertebesinin Helmert matrisi basit bir şekilde oluşturulur (örneğin bkz. Harville s. 86). İlk sırası 1 saniyedir. Bir sonraki sıra ilk sıraya dik yapılabilen en basitlerden biridir, yani (1,1,0,,0) . j satırı , önceki tüm satırlara dik olan en basitleri arasındadır: ilk j1 girişleri 1 s'dir, bu da 2 , 3 , , j - 1 satırlarına dik olduğunu garanti eder.2,3,,j1 , ve jth giriş ayarlanır1j o (olduğunu, bunun girişleri sıfır toplama olmalıdır), birinci sıranın ortogonal olmak için. Ardından tüm satırlar birim uzunluğuna göre yeniden ölçeklendirilir.

Deseni göstermek için , satırları yeniden ölçeklenmeden önce 4×4 Helmert matrisi:

(1111110011201113).

(Düzenleme Ağustos 2017 eklendi) Bu "kontrastların" (satır satır okunan) özellikle güzel yanlarından biri yorumlanabilmeleridir. İlk satır bırakılır ve verileri temsil etmek için kalan k1 satır bırakılır. İkinci sıra, ikinci değişken ile birinci değişken arasındaki farkla orantılıdır. Üçüncü sıra, üçüncü değişken ile ilk ikisi arasındaki farkla orantılıdır. Genel olarak, j satırı ( 2jk ), j değişkeni ile ondan önce gelenler, 1 , 2 , , j - 1 değişkenleri arasındaki farkı yansıtır.1,2,,j1. Bu, ilk değişken j=1 tüm kontrastlar için "temel" olarak bırakır . Bu yorumları ILR'yi Ana Bileşenler Analizi (PCA) ile takip ederken faydalı buldum: Yüklemelerin en azından kabaca orijinal değişkenler arasındaki karşılaştırmalar açısından yorumlanmasını sağlar. Aşağıdaki Ruygulamaya ilrçıkış değişkenleri bu yorum yardımcı olmak için uygun isimler veren bir satır ekledim. (Düzenleme sonu.)

Bu matrisleri oluşturmak için Rbir işlev contr.helmertsağladığından (ölçeklendirme olmasa da, satırlar ve sütunlar negatif ve aktarılmış olsa da), bunu yapmak için (basit) kodu yazmanıza bile gerek yoktur. Bunu kullanarak ILR'yi uyguladım (aşağıya bakın). Egzersiz yapmak ve test etmek için, bir Dirichlet dağılımından ( 1 , 2 , 3 , 4 parametreleriyle) 1000 bağımsız çekiliş oluşturdum ve dağılım grafiği matrisini çizdim. Burada k = 4 .1,2,3,4k=4

Figure_1

Noktaların hepsi sol alt köşelere yakın kümelenir ve kompozisyon verilerinin özelliği olarak çizim alanlarının üçgen yamalarını doldurur.

ILR'lerinin sadece bir dağılım değişkeni matrisi olarak çizilen üç değişkeni vardır:

Figure_2

Bu gerçekten daha hoş görünüyor: dağılım grafikleri, lineer regresyon ve PCA gibi ikinci dereceden analizlere daha uygun olan daha karakteristik "eliptik bulut" şekilleri elde ettiler.

01/2

Figure_3

1/2


Bu genelleme ilraşağıdaki işlevde uygulanır . Bu "Z" değişkenlerini üretme komutu basitçe

z <- ilr(x, 1/2)

Box-Cox dönüşümünün bir avantajı, gerçek sıfırları içeren gözlemlere uygulanabilirliğidir: parametrenin pozitif olması şartıyla hala tanımlanmaktadır.

Referanslar

Michail T. Tsagris, Simon Preston ve Andrew TA Wood, Kompozisyon verileri için veri tabanlı bir güç dönüşümü . arXiv: 1106.1451v2 [stat.ME] 16 Haz 2011.

David A. Harville, Bir İstatistikçinin Perspektifinden Matris Cebiri . Springer Science & Business Media, 27 Haziran 2008.


İşte Rkod.

#
# 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 "Sahte" korelasyonlarla ne demek istediğinizi anlamıyorum. Evet, değişkenler bağımlı olmalıdır - ancak PCA'nın görevi bu bağımlılıkları tanımlamanıza ve ölçmenize yardımcı olmaktır. Ayrıca, CLR'lerin toplamının sabit olmadığına dikkat edin (CLR'ler birliği toplayan değerlere dayandırılmış olsa da).
whuber

1
@Alex Neden sadece PCA çıktısını incelemiyorsunuz? Karmaşıksa ve sadece iki değişkene odaklanmak istiyorsanız, bu iki değişkenin PCA'sını yapın. Bunların bir dağılım grafiği, herhangi bir eşdoğrusallığın doğasını ve kapsamını ortaya çıkaracaktır.
whuber

1
@Alex Tabii - bu yüzden ILR'yi göstermek için bu cevapta dağılım grafikleri kullanıyorum!
whuber

2
@Alex Bu ilginç bir teklif. EDA (diğer şeylerin yanı sıra) karşısında uçan bir felsefeyi yansıtıyor gibi görünüyor, bu da yararlı veya bilgilendirici ilişkiler üreten değişkenlerin yeniden ifadesini bulabildiğinde, bu iyi bir şey değil, sorun değil. EDA taraftarları (John Tukey gibi), verilerin orijinal olarak ifade edildiği formun mutlaka analiz edilmesi gereken form olmadığını, oysa bu teklifin tam tersini varsaydığını iddia ederler. Hangisinin daha yararlı bir yaklaşım olduğuna karar vermek için size bırakacağım.
whuber

1
@Eli Bu yorumun genelleştirilmiş CLR'yi ifade etmesi amaçlanmıştır. Bu yanıtın gövdesinde yazdığım gibi, "ölçeklendirme günlüklerin toplamının sıfır olmasına neden olur."
whuber

5

Kullanım durumunuz için, her şeyi bire bir ölçeklendirmek muhtemelen iyidir. Sayıların tam olarak 24'e eklenmemesi, verilere biraz fazladan gürültü katacaktır, ancak işleri bu kadar karıştırmamalıdır.

@Whuber'ın doğru bir şekilde belirttiği gibi, oranlarla uğraştığımız için, değişkenler arasındaki bağımlılıkları hesaba katmalıyız (bir taneye kadar topladıkları için). Ilr dönüşümü, değişkenleriR,D-1 için D oranlar.

Tüm teknik detaylar bir yana, ilr dönüştürülmüş verilerin nasıl doğru bir şekilde yorumlanacağını bilmek önemlidir. Sonunda, ilr dönüşümü sadece grupların log oranlarını ifade eder. Ancak bunu önceden tanımlanmış bazı hiyerarşilere göre tanımlar. Aşağıdaki gibi bir hiyerarşi tanımlarsanız

enter image description here

dönüştürülen her değişken şu şekilde hesaplanabilir:

bben=rsr+slng(R,ben)g(Sben)

nerede ben hiyerarşideki bir iç düğümü temsil eder, R,ben karşılık gelen değişkenlerin bir bölümünü tanımlar ben, Sben karşılık gelen değişkenlerin diğer bölümünü tanımlar ben ve g(...)"Geometrik ortalama" anlamına gelir. Bu dönüştürülmüş değişkenler dengeler olarak da bilinir.

So the next question is, how do you define your hierarchy of variables? This is really up to you, but if you have three variables, there aren't too many combinations to mess with. For instance, you could just define the hierarchy to be

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

where A represents the time spent sleeping, B represents time spent with sedentary, C represents time spent doing physical activity (A|B) represents the normalized log ratio between A B (i.e. 12lnAB ), and (AB|C) refers to the normalized log ratio between A, B and C (i.e. 23lnABC). If there are many variables, I check out some of the work done with principal balances

But going back to your original question, how can you use this information to actually perform the ilr transformation?

If you are using R, I'd checkout the compositions package

To use that package, you'll need to understand how to create a sequential binary partition (SBP), which is how you define the hierarchy. For the hierarchy defined above, you can represent the SBP with the following matrix.

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

where the positive values represent the variables in the numerator, the negative values represent the variables in the denominator, and zeros represent the absence of that variable in the balance. You can build the orthonormal basis using balanceBase from the SBP that you defined.
Once you have this you should be able to pass in your table of proportions along with the basis that you calculated above.

I'd check out this reference for the original definition of balances


4

The above posts answer the question about how to construct an ILR basis and get your ILR balances. To add to this, the choice of which basis can ease the interpretation of your results.

You may be interested in a partition the following partition:

(1) (sleeping,sedentary|physical_activity) (2) (sleeping|sedentary).

Since you have three parts in your composition, you will obtain two ILR balances to analyze. By setting up the partition as above, you can obtain balances corresponding to "active or not" (1) and "which form of inactivity" (2).

If you analyze each ILR balance separately, for instance performing regression against time-of-day or time-of-year to see if there are any changes, you can interpret the results in terms of changes in "active or not" and changes in "which form of inactivity".

If, on the other hand, you will perform techniques like PCA which obtain a new basis in ILR space, your results will not depend on your choice of partition. This is because your data exist in CLR-space, the D-1 plane orthogonal to the one-vector, and the ILR balances are different choices of unit-norm axes to describe the data's position on the CLR plane.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.