Как выполнить изометрическое логарифмическое преобразование


18

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

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

Переменные, которые у меня есть, - это время, проведенное во сне, среднее сидячее время, средняя средняя легкая физическая активность, средняя умеренная физическая активность и средняя интенсивная физическая активность. Сон был сообщен самим собой, в то время как остальные представляют собой средние данные по действительным дням данных акселерометра. Таким образом, для этих переменных случаи не суммируются ровно в 24.

Мое предположение: я работаю в SAS, но похоже, что R будет намного проще использовать для этой части. Поэтому сначала импортируйте данные только с интересующими переменными. Затем используйте функцию acomp (). Тогда я не могу понять синтаксис для функции ilr (). Любая помощь приветствуется.

Ответы:


21

Преобразование ILR (Isometric Log-Ratio) используется при анализе композиционных данных. Любое данное наблюдение представляет собой набор положительных значений, суммирующих единицу, таких как пропорции химических веществ в смеси или пропорции общего времени, потраченного на различные виды деятельности. Инвариант суммы к единице подразумевает, что, хотя в каждом наблюдении может быть К2 компонентов, существует только К-1 функционально независимых значений. (Геометрически наблюдения лежат на К-1 мерном симплексе в К мерном евклидовом пространстве рК, Эта симплициальная природа проявляется в треугольных формах диаграмм рассеяния смоделированных данных, показанных ниже.)

Как правило, распределение компонентов становится «приятнее» при преобразовании журнала. Это преобразование может быть масштабировано путем деления всех значений в наблюдении на их среднее геометрическое значение, прежде чем брать записи. (Эквивалентно, журналы данных в любом наблюдении центрируются путем вычитания их среднего значения.) Это известно как преобразование «Центрированное логарифмическое отношение», или CLR. Результирующие значения все еще лежат в гиперплоскости в рК , потому что масштабирование приводит к тому, что сумма лог-файлов равна нулю. ILR состоит из выбора любого ортонормированного базиса для этой гиперплоскости:К-1координаты k - 1 каждого преобразованного наблюдения становятся его новыми данными. Эквивалентно, гиперплоскость поворачивается (или отражается), чтобы совпадать с плоскостью с исчезающимКго координата использует первыеК-1 координаты. (Поскольку вращения и отражения сохраняют расстояние, они являютсяизометриями, отсюда и название этой процедуры.)

Цагрис, Престон и Вуд утверждают, что «стандартный выбор [матрицы вращения] ЧАС - это подматрица Гельмерта, полученная путем удаления первой строки из матрицы Гельмерта».

Матрица Гельмерта порядка К строится простым образом (см., Например, Harville p. 86). Его первый ряд - все 1 с. Следующая строка является одной из самых простых, которые можно сделать ортогональными к первой строке, а именно (1,1,0,,0) . Строка j является одной из самых простых, которая ортогональна всем предыдущим строкам: ее первые j1 записи равны 1 с, что гарантирует ее ортогональность строкам 2,3,,j1и его jth запись установлена ​​в 1j чтобы сделать ее ортогональной первой строке (то есть ее записи должны суммироваться до нуля). Все строки затем изменяются на единицу длины.

Здесь, чтобы проиллюстрировать шаблон, это 4×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.

Цагрис и соавт. обобщить CLR, используя преобразование Бокса-Кокса, которое обобщает логарифм. (Журнал представляет собой преобразование Бокса-Кокса с параметром 0 ) Это полезно, поскольку, как утверждают авторы (правильно ИМХО), во многих приложениях данные должны определять их преобразование. Для этих данных Дирихля параметр 1/2 (который находится на полпути между отсутствием трансформации и преобразованием журнала) прекрасно работает:

Figure_3

1/2 или достигли понимания.


Это обобщение реализовано в ilrфункции ниже. Команда для создания этих «Z» переменных была просто

z <- ilr(x, 1/2)

Одним из преимуществ преобразования Бокса-Кокса является его применимость к наблюдениям, которые содержат истинные нули: он все еще определяется, если параметр положительный.

Ссылки

Михаил Т. Цагрис, Саймон Престон и Эндрю Т.А. Вуд. Преобразование мощности на основе данных для композиционных данных . 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
@ Алекс Почему бы просто не изучить вывод PCA? Если это сложно, и вы хотите сосредоточиться только на двух переменных, то выполните PCA этих двух переменных. Диаграмма рассеяния из них покажет природу и степень любой коллинеарности.
uuber

1
@ Алекс Конечно - именно поэтому я использую диаграммы рассеяния в этом ответе, чтобы проиллюстрировать ILR!
whuber

2
@ Алекс Это интересная цитата. Похоже, что он отражает философию, которая бросает вызов EDA (среди прочего), которая предполагает, что когда можно найти повторное выражение переменных, которое создает полезные или информативные отношения, это хорошо, а не проблема. Сторонники EDA (такие как Джон Тьюки) утверждают, что форма, в которой данные первоначально выражены, не обязательно является формой, в которой они должны анализироваться, тогда как эта цитата подразумевает прямо противоположное. Я оставлю вам решать, какой подход более полезен.
whuber

1
@Eli Этот комментарий был предназначен для ссылки на обобщенную CLR. Как я писал в теле этого ответа, «масштабирование приводит к тому, что сумма журналов равна нулю».
whuber

5

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

рD-1D пропорций.

Помимо всех технических деталей, важно знать, как правильно интерпретировать преобразованные данные. В конце концов, ilr-преобразование относится только к логарифмам групп. Но это определяет это относительно некоторой предопределенной иерархии. Если вы определите иерархию следующим образом

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

каждая преобразованная переменная может быть рассчитана как

бязнак равнорsр+sперграмм(ря)грамм(Sя)

яряяSяяграмм(,,,)

Итак, следующий вопрос: как вы определяете иерархию переменных? Это действительно зависит от вас, но если у вас есть три переменные, не так много комбинаций, с которыми можно связываться. Например, вы можете просто определить иерархию

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

ABC(A|B)A В12перAВ(AВ|С)AВС23перAВС

Но возвращаясь к исходному вопросу, как вы можете использовать эту информацию для фактического выполнения преобразования 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.