Кластерный анализ временных рядов

lorvanna

Есть кучка объектов, по которым есть как статические, так и динамические параметры. Т.е. какие-то параметры только на момент 2005-го года, а какие-то есть ещё и в динамике за годы с 2000-го по 2005-й. Надо сделать кластерный анализ....
Как мне превратить динамические наборы в статические показатели, если для разных объектов тренды в рядах разные: у кого-то линейные, у кого-то квадратичные, где-то синус с шумами и на всё это разные дисперсии...
Кто-нибудь сталкивался с такой ситуацией?
Или есть методы обработки прямо динамических рядов?
У меня идея простая, забыть, что это динамика, и добавть данные как отдельные переменные... Но как-то нехорошо это. Он мне тогда слабо выраженные квадратичные и линейные в один кластер закинет, хотя динамика качественно разная, при похожих количественных значениях. И информативность потеряю...
Если можно, хоть ссылки на литературу кинтье... Нигде найти не могу.
Киньте любую идею, может на мысль натолкнёте...
И ещё вопрос, в каком пакете лучше кластерный анализ делать? У меня Statistica 6.0.

griz_a

У меня идея простая, забыть, что это динамика, и добавть данные как отдельные переменные...

Это не вполне правильно. Все зависит от того, анализ чего надо сделать. Кластеризацию при фиксированном времени - отбрасываешь данные для другого времени. Если динамику, то откидываешь данные без жинамики или пытаешься их продолжить на другие года (что не получится, если они качественно разные

lorvanna

В том-то и беда, что только по статике — ничего хорошего не выйдет. Мне-то именно надо сделать типовые сценарии развития. И выбрасывать статические переменные никак нельзя, там важная информация, без чего описание будет совсем неполным....
Но ладно, допустим, я выброшу всю статику и буду кластеризовать только по динамическим рядам... А как? Вводить меру на аппроксимациях? Но разные ряды мне придётся аппрксимировать функциями из разных классов, и мне бы хотелось как-то учесть это качественное различие. Вся беда в том, что показателей у меня по каждому объекту довольно много, и в разных показателях — разные типы аппроксимаций, прямо чехарда какая-то, и как-то в уме — это не прикинуть, нужен алгоритм с оптимизацией по мере близости... а какой мере?
Как работать с временными рядами? Может какую литературу посоветуете?

traffic_speed

вообщем,или сконцентрируйся и пости примеры исходных данных и какие статистические показатели на выходе тебе нужны, или не рассчитывай на конкретные советы.
Список литературы учимся искать гуглом

lorvanna

Данные — социально-экономические показатели по районам и городам. Типа валового дохода, коек в больницах, жилплощади на душу, потребления. доходов, оборота по отраслям и т.д. Половина в динамике, половина в статике. Мне надо сгруппировать "типовые сценарии".
Я кое-как привёл всё это к одному диапазону, собираюсь выделить факторные показатели (т.е. снизить размерность)... но вот что-то в динамике, а что-то будет в статике — надо как-то это унифицировать для алгоритмов КА. Я не умею работать с КА динамики. А google мне в этом слабо помог...
Может, вы поможете?

traffic_speed

Половина в динамике, половина в статике
переменные потока и переменные состояния?

lorvanna

Если говорить о данных на выходе, то мне нужна зависимость (или связь) социальных показателей с экономическими. Сильнее всего это выражено в муниципальных образованиях. В основном сельские районы, т.к. там мало что от дотаций и бюджета завистит...
Но КА вход-выход я пока не делаю. Может потом. Пока собираюсь кластеризовать по всему объёму показателей (порядка 50-ти относящихся к теме и репрезентативных). Потом уже, возможно, в рамках каждого кластера сделаю регрессионную можель, или КА по выходным и объясняющим переменным.

lorvanna

переменные потока и переменные состояния?

Всё проще. Статуправление выдаёт только такие данные. Других у них нету. :-) что-то собирают в статике, что-то хранят в динамике. Формат их стат-сборника. Музыку заказываю не я. Приходится работать с тем, что есть.
Но ладно, допустим, я как-то найду динамику, что-то, может, выкину. Как по ней КА проводить?

traffic_speed

сначала проверьте ваши ряды на автокорреляцию .Это должно помочь снизить кол-во исследуемых факторов.

lorvanna

Если я правильно понимаю, то автокорреляция — это корреляция отклонений ряда от аппроксимирующего тренда (или просто корреляция значений одного рядоа). Естественно, что я беру тренды с допустимой автокорреляцией (по Дарбину-Уотсону).
То есть вы предлагаете взять все ряды относящиеся к одному показателю — получится 40 рядов (по штуке на объект) и, считая их представителями одного ряда (реализациями одного общего процесса) посчитать автокорреляции, чтобы отбросить предыдущие значения? Но в том-то и дело, что это не реализации общего процесса, даже не смеси процессов (я пока смеси там не вижу, хотя, может, она и есть). А считать автокорреляции на каждом по отдельности — так это и сеть адекватное выделение тренда.
Если же предлагаете коррелировать ряды разных показателей на одном объекте — я это и делаю для выделения факторных переменных, факторного ряда (по трём показателям я строю один ряд их обобщающий).
Размерность снижена по показателям (переменным). Опять остаётся несколько рядов динамики. Например 10 рядов по каждому из 40-ка объектов. Как делать КА?

griz_a

Статические данные - совсем статические или динамика с пропусками?
Какова "динамическая длина"? Т.е. сколько временных замеров делалось?

lorvanna

Статическе данные — совсем статические: показатель на момент начала 2005-го года.
Динамика — значения на моменты 1995-го, 2000-го, 2001-го, 2002-го, 2003, 2004-го годов. (т.е. 6 значений с пропуском с 1996-го по 1999-й годы).
Соотношение такое: где-то 60% показателей в динамике, 40% — статика.
Народ, да ладно с ней со статикой... Подскажаите, как сравнивать динамику. Надо ли использовать и сравнивать аппроксимации? Или мне сказать, что моя динамика — просто показатель из нескольких чисел — т.е. вектор, и сравнивать вектора. Т.е. просто ввести евклидову меру с весами по разным переменным на векторах? Всё равно ведь у меня всё задано в виде матриц. Ну и введу я меру на матрицах (роасстояние между ними). Единственное, что здесь смущает — это то, что я потеряю различие на качественный вид трендов динамики...
Как вообще люди работают в ситуации, где дана одна динамика?
(Я прошу прощения, что так настойчив, но я не из Москвы, и в библиотеку МГУ зайти не могу, а найти в городе, кто сталкивался с подобным — тоже не реально, ибо их нет... в моей провинции с книгами и специалистами туговато... )

griz_a

Опиши, пожалуйста, еще раз твои данные. У тебя есть многомерные данные во времени, да?
Тебе надо из кластеризовать по схожести как временных рядов?
Тогда надо вводить меру на векторах (первый показатель в первый год, первый показатель во второй год,....второй показатель в первый год....)
И статику сюда не добавишь ибо векторы разной длины

lorvanna

Данные представляют из себя следующее — обычные социально-экономические показатели по районам областей: численность населения, ВВП, грузооборот транспорта, объём услуг, количество детских садов, конечное потребление на душу населения, престурления, начисленная зарплата, объём инвестиций, ввод жилой площади, жилплощадь на душу, смертность, миграционный прирост, количсество безработных и т.д.
Исследуется порядка 40-ка районов — по Костромской и Ярославской областям. Смысл — понять связь социальных показателей с экономическими. Т.к. в районах они связаны наиболее сильно, ибо нет трансфертов, нет профицитов, нет дотаций, что предприниматели построили или сами заработали — то и есть.
Порядка 60% показателей из перечисленных представлены за ряд лет (1995 и 2000-2004 остальные 40% — только значение на конец 2004-го (предыдущие значения не известны).
Первое, как я полагаю, что стоит сделать — разбить на кластеры, а потом уже внутри каждого смотреть зависимости и связи, ибо общего поведения нет, это видно по графикам тех величин, что даны за несколько лет.
Для кластеризации — всё что можно я перевожу в безразмерные величины от 0 до 100 (т.е. в проценты от некоторого базового показателя, например ВВП, численность населения где-то меняю размерность. По более значимым на мой взгляд показателям — ввожу вес в евклидовой метрике.
Дальше строю факторные переменные отдельно по статическим, отдельно по динамическим переменным. Таким образом снижается размерность.
Получается кучка просто параметров для каждого района, и кучка рядов длины 6.
В принципе никто мне не мешает сравнивать и ряды в евклидовой метрике — фактически будет норма L^2, только взятая по дискретным узлам. — геометрическая близость графиков. А если я и их сравниваю по такой норме, то почему мне не добавить ещё и статические данные с той женормой? Всё это будет лишь означать естественную геометрическую близость всех показателей объектов, что и должно (возможно) выполняться для кластера... Так как я где возможно перешёл от абсолютных величин к относительным — то это и будт примерно означать схожесть динамики... я же могу добавить индексы прироста, а доли в целом — уже есть.
Что смущает — то, что я снижаю размерность показателей (например в ВВП и численности — получается плюс-минус километр) и теряю качественное различие полной динамики (никак не учитываю ни тенденцию, ни разброс). Мои индексы прироста и доли — слабое утешение.
Нашёл мысль, что ряды можно сравнивать на основе их вейвлет-образов (типа ряд минус среднее, поделить на дисперсию — и растаскивать по частотам. Но это требует большего числа значений ряда, чем 6. Да и есть у меня подозрение, что все методы выделения частот, и построения функций автокорреляции у меня не сработают. Мало значений и не знаю какие из рядов брать за реализацию одного процесса — такое знание как раз и появится после разбиения на кластеры.)

disepa

Может просто откинуть динамику для начала (или сделать из нее статику)
и прогнать КА (первый раз вижу извращенца, который так называет
кластерный анализ)?
Не совсем понятна мысля кластеризации временных рядов, если
хочется выделить кластеры - районы (Ярослав, Владимир и т.д.).
Ну пусть у каждого района по 3 ряда. Ну откластеризуешь ты все
ряды, получишь сколько-то кластеров. И что дальше будешь делать?
Ты таким способом найдешь просто похожие динамики у районов по
каким-то показателям. Если таким способом будет сказано о схожести районов,
то это изврат.
Да и вообще есть пара советов.
1) Надо понять и осознать что ты хочешь сделать (хотят от тебя получить).
Звучит просто, но если правильно понять смысл фразы, то поможет.
А то чувствуется непонимание в твоих сообщениях.
2) Не советую сидеть на первой фазе кластерного анализа долго (обработка данных).
Как все устроено в КА(гавно-слово): берешь данные, преобразовываешь, кластеризуешь.
Если ничего не получилось, то заново преобразовываешь данные и кластеризуешь.
Тут надо просто понять струю, а потом заниматься более детально.
Если будешь тратить день на одно преобразование данных, то ты долго будешь мучаться,
или будет гавно результат. (Под преобразованием данных я понимаю их подготовку для
алгоритма кластеризации - т.е. выбор метрики, усечение, округление и т.д. и т.п.).

traffic_speed

Мне надо сгруппировать "типовые сценарии".
попытайся выяснить,что под этим топикстартер подразумевает. У него еще и разрывы по данным, и еще куча проблем. Главная проблема- все это он хочет запихнуть в кластерный анализ пакета Статистика.

disepa

он хочет запихнуть в кластерный анализ пакета Статистика
Как ни странно, ничего практически не понятно из его сообщений, а вот об этом догадался
Скорее всего работает в StatSoft он еще

griz_a

Не знаю, что можно сделать отдельно по динамике, когда ее длина 6

lorvanna

Скорее всего работает в StatSoft он еще
Нет, в StatSoft я не работаю А всего лишь работаю в Костромском универе молодым преподом
А с задачей обработки данных сталкиваюсь на практике впервые... Те кто меня попросили это обработать — понимают в этом ещё меньше, чем я и сформулировать чётко задачу — вряд ли могут (кроме общих фраз я ничего не добился).
Так что прошу сделать скидку на мою немощь. А что должно быть понятно из моих постов? Я, как себе представляю, изложил последовательность своих действий. Дальнейшее — зависит от результатов кластеризации. Можно внутри каждого кластера характеристики рядов вычислить, корреляции величин, где-то регрессии одной переменной на другую, где разумно. Можно разбить на объясняющие и зависимые переменные, поискать факторные объясняющие для кластера. Может и удастся какие-то связи выявить... А потом отдать всё это экономистам, пусть пытаются объяснить, почему одни районы развиваются в среднем таким образом, а другие — другим... они ведь этого хотят.
А то, что по схожести динамик рядов можно сказать о схожести районов — по моему разумно, ведь эти показатели почти всё описывают, что экономистам интересно...
Если я говорю какие-то глупости — поправьте меня, ибо поправить меня больше некому
Оставить комментарий
Имя или ник:
Комментарий: