Сложность воспроизведения вычисления расстояния хи-квадрат, производимого функцией seqdist () пакета Traminer (в R) с использованием соответствующей формулы - PullRequest
0 голосов
/ 13 ноября 2018

Я проводил некоторый предварительный анализ данных в форме упорядоченных последовательностей категориальных состояний, например, последовательности x = A, A, B, D ... и т. Д.

Я использовалпакет Traminer в R, чтобы сделать этот анализ.Одна из функций, предоставляемых в пакете (seqdist ()), вычисляет расстояние между парами последовательностей (для использования в кластеризации).Поддерживается ряд метрик расстояния, в том числе расстояние Хи-квадрат, как описано в Studer & Ritschard (2015 - http://dx.doi.org/10.1111/rssa.12125).

. Я хотел проверить мое понимание этой метрики расстояния, вычислив расстояние«от руки» для простого примера. Studer & Ritschard (2015) не предоставляет формулу, но после запроса в списке рассылки Traminer (http://traminer.unige.ch/contrib.shtml), Гилберт Ритшард любезно направил меня к более раннему рабочему документу (https://www.lives -nccr.ch / sites / default / files / pdf / publishing / 33_lives_wp_studer_sequencedissmeasures.pdf - стр.8), которая включает эту формулу и подтолкнула меня направить мой вопрос на переполнение стека, чтобы оновидно более широко.

Однако мне все еще трудно воспроизвести метрику хи-квадрат с использованием предоставленной формулы для очень простого примера. Воспроизводимым примером с использованием R и формулы для метрики расстояния являются:следующим образом, я был бы очень признателен, если бы кто-то мог помочь мне определить источникiscrepancy (по-видимому, я как-то неправильно понимаю формулу).

Формула расстояния хи-квадрат задается следующим образом:

Для алфавита последовательности в наборе j и последовательностей x и y, обозначая p_ (j | x)) быть равным пропорции времени, проведенного в состоянии j в последовательности x, а значение p_ (j) будет равно «общей пропорции времени, проведенного в состоянии j», дано расстояние хи-квадрат между последовательностями x и yкак:

Формула хи-квадрат

Используя эту формулу (не зависящую от периода версию), я попытался воспроизвести расчет расстояния для следующего примера, включающий только две короткие последовательности:

x = EEEGG

y = EEEEE

Таким образом, алфавит состояний {E, G}

In Rэти последовательности можно воссоздать следующим образом:

library(TraMineR)
sequence.mat <- matrix(c("E", "E", "E", "G", "G", "E", "E", "E", "E", "E"), nrow=2, byrow=TRUE)
colnames(sequence.mat) <- paste("m", 1:5, sep="")
sequence.mat

Предоставление:

     m1  m2  m3  m4  m5 
[1,] "E" "E" "E" "G" "G"
[2,] "E" "E" "E" "E" "E"

Это определяется как последовательность с Traminer следующим образом:

sequence.obj <- seqdef(data=sequence.mat)
[>] 2 distinct states appear in the data: 
 1 = E
 2 = G
 [>] state coding:
   [alphabet]  [label]  [long label] 
 1  E           E        E
 2  G           G        G
 [>] 2 sequences in the data set
 [>] min/max sequence length: 5/5

sequence.obj
  Sequence 
1 E-E-E-G-G
2 E-E-E-E-E

расстояние между двумя последовательностями рассчитывается как:

seqdist(sequence.obj, method = "CHI2", full.matrix = FALSE, step = 5)
         1
2 1.581139

Где шаг = 5 гарантирует, что chi-sКвартальное расстояние рассчитывается как один период, охватывающий пять состояний.

Проблема в том, что это значение (1.581139) не соответствует заданному значению, если формула применяется вручную, а это 1. Работа показана на следующем рисунке:

Ручной расчет из примера

Чтобы подтвердить, что числовые вычисления в конце верны:

https://www.wolframalpha.com/input/?i=(((3%2F5)-(5%2F5))%5E2)%2F(8%2F10)+%2B+(((2%2F5)-(0%2F5))%5E2)%2F(2%2F10)

Я думаю, что я либо неправильно понялформула или метрика расстояния реализована в seqdist () иначе, чем я ее использовал.Я был бы очень признателен за помощь в понимании несоответствия.

1 Ответ

0 голосов
/ 15 ноября 2018

Ваши ручные вычисления верны.В TraMineR была ошибка, когда расстояние вычислялось с использованием счетчиков (т. Е. Числа раз, когда каждое состояние происходило в каждой из двух последовательностей) вместо процентов времени, проведенного в каждом состоянии.

Покавсе k периодов имеют одинаковую длину (и, в частности, когда k = 1), решения, полученные до сих пор с помощью счетчиков, пропорциональны тем, которые вычисляются теперь с помощью пропорций.

Это означает, что ранжирование расстояний остается неизменным.Решения по кластеризации, основанные на расстояниях CHI2 или EUCLIDEAN, также должны оставаться неизменными.

Ошибка была исправлена ​​в версии для разработчиков (сборка 2018-11-15), доступной в R-Forge .Обновленная версия будет выпущена на CRAN через несколько дней.

...