Как кластеризовать продольные переменные?

10

У меня есть куча переменных, которые содержат продольные данные от 0 до 7 дня. Я ищу подходящий подход к кластеризации, который может кластеризовать эти продольные переменные (не случаи) в разные группы. Я пытался проанализировать этот набор данных по времени, но результат было довольно сложно объяснить разумно.

Я исследовал доступность процедуры SAS, PROC SIMILARITYпотому что на ее сайте есть пример ; Однако я думаю, что это не правильный путь. В некоторых предыдущих исследованиях использовался исследовательский факторный анализ в каждый момент времени, но в моем исследовании это тоже не вариант из-за необоснованных результатов.

Надеемся, что некоторые идеи могут быть предоставлены здесь, и скомпилированная программа, такая как SAS или R, может быть доступна для обработки. Любое предложение приветствуется!


Вот краткий пример (извините за несовместимое положение между данными и именами переменных):

id time   V1  V2   V3   V4   V5   V6   V7   V8   V9   V10
2    0    8    7    3    7    6    6    0    0    5    2
2    1    3    5    2    6    5    5    1    1    4    2
2    2    2    3    2    4    4    2    0    0    2    2
2    3    6    4    2    5    3    2    1    2    3    3
2    4    5    3    4    4    3    3    4    3    3    3   
2    5    6    4    5    5    6    3    3    2    2    2
2    6    7    5    2    4    4    3    3    4    4    5
2    7    7    7    2    6    4    4    0    0    4    3
4    0   10    7    0    2    2    6    7    7    0    9
4    1    8    7    0    0    0    9    3    3    7    8
4    2    8    7    0    0    0    9    3    3    7    8
4    3    8    7    0    0    0    9    3    3    7    8
4    4    5    7    0    0    0    9    3    3    7    8
4    5    5    7    0    0    0    9    3    3    7    8
4    6    5    7    0    0    0    9    3    3    7    8
4    7    5    7    0    0    0    9    3    3    7    8
5    0    9    6    1    3    2    2    2    3    3    5
5    1    7    3    1    3    1    3    2    2    1    3
5    2    6    4    0    4    2    4    2    1    2    4
5    3    6    3    2    3    2    3    3    1    3    4
5    4    8    6    0    5    3    3    2    2    3    4
5    5    9    6    0    4    3    3    2    3    2    5
5    6    8    6    0    4    3    3    2    3    2    5
5    7    8    6    0    4    3    3    2    3    2    5
cchien
источник
Не могли бы вы объяснить данные немного подробнее или, возможно, предоставить сокращенный образец? Когда вы говорите, что «переменные содержат продольные данные», вы имеете в виду, что все они являются повторными измерениями одного и того же человека или предмета в течение 7 дней (и, следовательно, могут быть коррелированы).
Росс
Россеру: я добавил часть данных. Как вы упомянули, это повторные измерения: у каждого пациента (ID) есть 10 измерений (V1 ~ V10) продолжительностью несколько дней (день 0 ~ день 7).
cchien

Ответы:

5

В Hmiscпакете R см. Файл справки для curveRepфункции, которая обозначает «репрезентативные кривые». curveRepкластеры на кривых формах, местах и ​​образцах пропущенных моментов времени.

Фрэнк Харрелл
источник
Спасибо за ваш совет. Это звучит выполнимо. Я прочитаю его руководство сразу.
cchien
Фрэнк. Пример в руководстве, кажется, не работает. Есть ли опечатка? Я хотел запустить пример, чтобы почувствовать это. Вот код: set.seed (1) N <- 200 nc <- образец (1:10, N, ИСТИНА) id <- rep (1: N, nc) x <- y <- id для (i in 1: N) {x [id == i] <- if (iy [id == i] <- i + 10 * (x [id == i] - .5) + runif (nc [i], - 10, 10)}
B_Miner
1
Упс. Я забыл, что знак процента в файле справки R необходимо экранировать. Это привело к обрезанию строки в примере. Замените неполную строку: x[id==i] <- if(i %% 2) runif(nc[i]) else runif(nc[i], c(.25, .75))
Фрэнк Харрелл
Я не уверен, что означает "p: количество точек, в которых нужно оценивать каждую кривую для кластеризации", в curveRep (x, y, id, kxdist = 2, p = 10)
greg121
1
Каждый объект (кривая) профилируется путем подгонки сглаживания по низкому значению и оценки сглаживания по фиксированной сетке точек на случай, если разные кривые имеют разное время выборки. Две точки будут характеризовать линейные отношения, три - квадратичные. п>3 обычно рекомендуется и пзнак равно10это не плохой выбор. Интерполированная ордината в сетке точек вводится в алгоритм кластеризации вместе с максимальным временным интервалом, количеством пропущенных значений и другими вещами. пможет быть больше, чем нужно, без особого вреда; это нормально для некоторых характеристик, чтобы быть избыточным.
Фрэнк Харрелл
5

Я не уверен, что это то, что вы ищете, но пакет kmlв R использует k-средства для кластеризации последовательностей повторных измерений. Вот ссылка на страницу пакета и на бумагу (к сожалению, она закрыта). Это хорошо работает, только если у вас достаточно маленький набор данных (несколько сотен последовательностей).

Вот не стробированная версия документа (без проблем со ссылками): http://christophe.genolini.free.fr/recherche/aTelecharger/genolini2011.pdf

Антуан Верне
источник
Я на самом деле рассмотрел этот метод, прежде чем отправлять этот вопрос. Я предположил, что подход kml является кластерным способом группировки людей из некоторых примеров его оригинальной статьи. Я посмотрю на это снова. Спасибо!!
cchien
@ccchien Да, они используют его для объединения отдельных траекторий, но вы можете предположить, что у вас есть десять траекторий на человека (по одной для каждой из ваших переменных). Вам, вероятно, потребуется нормализовать ваши переменные, чтобы процедура kml работала правильно. Проблема в том, что, насколько я знаю, нет никакого способа сказать кмл, что ваши траектории вложены в отдельных людей. Таким образом, может оказаться, что он не совсем соответствует тому, чего вы пытаетесь достичь.
Антуан Верне
@ greg121, спасибо за ссылку на свободно доступную версию статьи. Кажется, что текстовые ссылки были удалены, возможно, файл Latex должен быть перекомпилирован еще раз (хотя список ссылок там есть).
Антуан Вернет
@ AntoineVernet да, ты прав. Но я не мог найти другую версию
greg121
4

Итак, у вас есть p переменных, измеренных каждый раз t на тех же n человек. Один из способов - вычислить t pXp (dis) матриц подобия и применить многомерное масштабирование по модели INDSCAL. Это даст вам две низкоразмерные карты (скажем, двух измерений). Первая карта показывает координаты из р переменных в пространстве размеров и отражает группировки среди них, если таковые имеются. Вторая карта показывает вес (то есть важность или значимость) измерений в каждой матрице t .

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

ttnphns
источник
У меня также есть идея преобразования n-измерения в 2-измерение, но я просто не имею никакого представления о конкретном методе, который может этого достичь. Теперь я обнаружил, что SAS может иметь процедуру, которая может это реализовать. Я изучу его, чтобы увидеть его доступность при использовании моих данных.
cchien
Каков наилучший способ интерпретации весов?
Мин К
Вес показывает, насколько измерение является релевантным или дискриминационным для данного конкретного источника (источниками являются отдельные лица или, как в этом примере, время). Например, на рисунке для time1 измерение II является сильным или релевантным, а измерение I - слабым.
ttnphns