Я проводил некоторый предварительный анализ данных в форме упорядоченных последовательностей категориальных состояний, например, последовательности 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 () иначе, чем я ее использовал.Я был бы очень признателен за помощь в понимании несоответствия.