Як виконати ізометричне перетворення коефіцієнта журналу


18

У мене є дані про поведінку в русі (час, пробудений спати, сидячий та займаючись фізичними навантаженнями), який становить приблизно 24 (як у години на день). Я хочу створити змінну, яка фіксує відносний час, проведений у кожній з цих форм поведінки - мені сказали, що це може досягти ізометричне перетворення відношення log.

Схоже, я повинен використовувати функцію ilr в R, але не можу знайти реальних прикладів з кодом. З чого я починаю?

Змінні, які я маю, - це час, який я проводив уві сні, середній сидячий час, середній середній легкий фізичний навантаження, середній помірний фізичний навантаження та середнє енергійне фізичне навантаження. Сон було зареєстровано самостійно, тоді як інші - це середні показники дійсних даних акселерометра. Тож для цих змінних випадки випадки не дорівнюють точно 24.

Моя здогадка: я працюю в SAS, але, схоже, R буде набагато простіше використовувати для цієї частини. Тож спочатку імпортуйте дані лише зі змінними, що цікавлять вас. Потім скористайтеся функцією acomp (). Тоді я не можу з’ясувати синтаксис функції ilr (). Будь-яка допомога буде дуже вдячна.

Відповіді:


21

Трансформація ІЛР (ізометричного логічного відношення) використовується при аналізі композиційних даних. Будь-яке дане спостереження - це набір позитивних значень, що підсумовуються до єдності, такі як пропорції хімічних речовин у суміші або пропорції загального часу, проведеного в різних видах діяльності. Інваріант суми до єдності означає, що хоча в кожному спостереженні може бути k2 компоненти, є лише k1 функціонально незалежні значення. (Геометрично спостереження лежать на k1 -вимірному симплексі в k -вимірному евклідовому просторі Rk. Цей спрощений характер проявляється в трикутних формах розсипань імітованих даних, показаних нижче.)

Зазвичай розподіли компонентів стають "приємнішими" при перетворенні журналу. Це перетворення можна масштабувати, поділивши всі значення спостереження на їхнє геометричне середнє перед тим, як взяти журнали. (Еквівалентно, що журнали даних у будь-якому спостереженні центрируються шляхом віднімання їх середнього значення.) Це відомо як трансформація "Centered Log-Ratio" або CLR. Отримані значення все ще лежать у гіперплощині в Rk , оскільки масштабування призводить до того, що сума журналів дорівнює нулю. ІЛР складається з вибору будь-якої ортонормальної основи для цієї гіперплани: k1 координати кожного перетвореного спостереження стають його новими даними. Рівнозначно гіперплан обертається (або відбивається), щоб збігатися з площиною зі зникаючим kth координата, і використовується першаk1 координат. (Оскільки обертання та відбиття зберігають відстань, вони єізометрією, звідки назва цієї процедури.)

Цагріс, Престон та Вуд заявляють, що "стандартний вибір [матриці обертання] H - це підматриця Гельмерта, отримана шляхом видалення першого рядка з матриці Гельмерта".

Матриця Гельмерта порядку k побудована просто (див., Наприклад, Харвілл, стор. 86). Перший її ряд - 1 с. Наступний рядок - один із найпростіших, який можна зробити ортогональним до першого ряду, а саме (1,1,0,,0) . Рядок j - один із найпростіших, що є ортогональним для всіх попередніх рядків: його перші записи -j1 це 1 s, що гарантує, що він є ортогональним для рядків 2,3,,j1, і його jго запис встановлено на 1j щоб зробити його ортогональним для першого рядка (тобто його записи повинні дорівнювати нулю). Після цього всі рядки змінюються на одиницю довжини.

Тут, щоб проілюструвати шаблон, це 4×4 Гельмерта матриця , перш ніж його рядки були перераховані:

(11111-10011-20111-3).

(Редагувати додано в серпні 2017 року) Один особливо приємний аспект цих "контрастів" (які читаються рядком за рядком) - їх інтерпретація. Перший рядок випадає, залишаючи к-1 решту рядків для представлення даних. Другий ряд пропорційний різниці між другою змінною та першою. Третій ряд пропорційний різниці між третьою змінною та першими двома. Як правило, рядок j ( 2jк ) відображає різницю між змінною j та всіма, що їй передують, змінними1,2,,j-1. Це залишає першу змінну j=1 як "базу" для всіх контрастів. Я вважаю ці інтерпретації корисними при дотриманні ILR за допомогою аналізу основних компонентів (PCA): це дає змогу інтерпретувати навантаження, принаймні приблизно, з точки зору порівнянь між початковими змінними. Я вклав рядок у Rреалізацію ilrнижче, яка дає вихідним змінним відповідні назви, щоб допомогти в цій інтерпретації. (Кінець редагування.)

Оскільки Rпередбачена функція contr.helmertстворення таких матриць (хоча і без масштабування, а рядки та стовпці заперечуються та переміщуються), вам навіть не потрібно писати (простий) код для цього. Використовуючи це, я реалізував ILR (див. Нижче). Для здійснення та тестування я створив 1000 незалежних малюнків із розподілу Діріхле (з параметрами 1,2,3,4 ) та побудував їх матрицю розсіювання. Тут к=4 .

Фігура 1

Усі точки стискаються біля лівих нижніх кутів і заповнюють трикутні ділянки ділянок їх графіки, як це характерно для композиційних даних.

Їх ILR має лише три змінні, знову побудовані як матриця розсіювання:

Рисунок_2

Це дійсно виглядає приємніше: розсіювачі набули більш характерних форм "еліптичної хмари", краще піддаються аналізам другого порядку, таких як лінійна регресія та PCA.

01/2

Рисунок_3

1/2


Це узагальнення реалізовано у наведеній ilrнижче функції. Команда створити ці змінні "Z" була просто

z <- ilr(x, 1/2)

Однією з переваг трансформації Box-Cox є її застосовність до спостережень, що включають справжні нулі: вона все ще визначається за умови, що параметр є позитивним.

Список літератури

Майкл Т. Цагріс, Саймон Престон та Ендрю Т. А. Вуд, Перетворення потужності на основі даних композиційних даних . arXiv: 1106.1451v2 [stat.ME] 16 червня 2011 р.

Девід А. Харвілл, Матрична алгебра з точки зору статистики . Springer Science & Business Media, 27 червня 2008 року.


Ось 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
@ Алекс Я не розумію, що ви маєте на увазі під "хибними" кореляціями. Так, змінні повинні залежати - але завдання PCA - це допомогти вам охарактеризувати та кількісно оцінити ці залежності. Зауважте також, що сума CLR не є постійною (навіть якщо CLR засновані на значеннях, які дорівнюють одиниці).
whuber

1
@Alex Чому б не просто вивчити вихід PCA? Якщо це складно і ви хочете зосередитись лише на двох змінних, тоді робіть PCA цих двох змінних. Розсип їх буде розкривати характер і ступінь будь-якої колінеарності.
whuber

1
@Alex Sure - саме тому я використовую розсипи в цій відповіді для ілюстрації ILR!
whuber

2
@Alex Це цікава пропозиція. Схоже, це відображає філософію, яка летить перед обличчям EDA (серед іншого), що говорить про те, що коли можна знайти повторне вираження змінних, що створюють корисні чи інформативні зв’язки, це добре, а не проблема. Прихильники EDA (як Джон Тукі) стверджують, що форма, в якій дані спочатку виражаються, не є обов'язково формою, в якій їх слід аналізувати, тоді як ця цитата неявно припускає навпаки. Я залишу це вам вирішити, який є більш корисний підхід.
whuber

1
@Eli Цей коментар мав на меті посилатися на узагальнений CLR. Як я писав у тій частині цієї відповіді, "масштабування призводить до того, що сума журналів дорівнює нулю".
whuber

5

Для вашого випадку використання, мабуть, добре просто масштабувати все до одного. Те, що цифри не складаються точно до 24, додасть трохи додаткового шуму в дані, але це не повинно так сильно псувати речі.

RD-1D

Всі технічні деталі осторонь, важливо знати, як правильно інтерпретувати дані, перетворені ilr. Зрештою, перетворення ilr просто відноситься до коефіцієнтів журналів груп. Але він визначає це щодо певної визначеної ієрархії. Якщо ви визначите ієрархію, як це описано нижче

введіть тут опис зображення

кожна перетворена змінна може бути обчислена як

бi=rсr+сlnг(Ri)г(Si)

iRiiSiiг(...)

Отже, наступне питання полягає в тому, як ви визначаєте свою ієрархію змінних? Це справді залежить від вас, але якщо у вас є три змінні, не так вже й багато комбінацій. Наприклад, ви можете просто визначити ієрархію

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

ABC(A|B)А Б12lnАБ(АБ|С)АБ і С (тобто 23lnАБС). Якщо є багато змінних, я перевіряю деяку роботу, виконану з основними балансами

Але повертаючись до свого первинного питання, як ви можете використовувати цю інформацію, щоб фактично здійснити перетворення ilr?

Якщо ви використовуєте R, я б оформив пакет композицій

Щоб використовувати цей пакет, вам потрібно зрозуміти, як створити послідовний бінарний розділ (SBP), яким чином ви визначаєте ієрархію. Для ієрархії, визначеної вище, ви можете представити SBP за допомогою наступної матриці.

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

де додатні значення представляють змінні в чисельнику, негативні значення представляють змінні в знаменнику, а нулі представляють відсутність цієї змінної у балансі. Ви можете побудувати ортонормальну основу, використовуючи balanceBaseвизначений вами SBP.
Після цього ви зможете передати свою таблицю пропорцій разом із основою, яку ви обчислили вище.

Я перевірив би це посилання на оригінальне визначення балансів


4

Вищенаведені повідомлення відповіді на питання про те , як побудувати в ILR базу і отримати залишки ILR. До цього слід додати, вибір якої основи може полегшити інтерпретацію ваших результатів.

Вас може зацікавити такий розділ:

(1) (сон, сидячий | фізична активність) (2) (сон | сидячий).

Оскільки у вашому складі є три частини, ви отримаєте два баланси ILR для аналізу. Встановивши розділ, як зазначено вище, ви можете отримати баланси, відповідні "активний чи ні" (1) та "яка форма бездіяльності" (2).

Якщо ви аналізуєте кожен залишок ILR окремо, наприклад, виконуючи регресію по часу дня або часу року, щоб побачити, чи є якісь зміни, ви можете інтерпретувати результати з точки зору змін "активного чи ні" та змін у "яка форма бездіяльності".

Якщо, з іншого боку, ви будете виконувати такі методи, як PCA, які отримують нову основу в просторі ILR, ваші результати не залежатимуть від вашого вибору розділу. Це тому, що ваші дані існують у просторі CLR, площині D-1, ортогональній одновектору, і залишки ILR - це різні варіанти осей одиничної норми для опису положення даних на площині CLR.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.