2016-10-15 11 views
1

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

У меня есть более 10 тысяч записей временных рядов, относящихся к 420 различным компаниям. Для каждой компании у меня есть метка времени (месяц/год) и ряд переменных. Временные ряды не имеют одинаковой длины.

На этом этапе все записи в один dataframe, который выглядит, как этот

Date   Code Var1 Var2 Var3 Var3 
01/01/2010 AAA     
01/02/2010 AAA     
01/03/2010 AAA     
01/01/2010 BBB     
01/02/2010 BBB     
01/03/2010 BBB     
01/04/2010 BBB     
01/01/2010 CCC     
01/02/2010 CCC     
01/03/2010 CCC     

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

Вопрос:

Каковы рекомендации для работы с такими данными: - использовать dataframe как это - скрытный его индивидуальные временные ряды для каждой компании.

С удовольствием принимаем любые другие предложения!

ответ

3

Нет черного и белого ответа: оба типа объектов имеют свои сильные стороны для разных целей (хотя я бы почти всегда использовал data.table вместо data.frame, задавая ваш вопрос, потому что у вас есть гораздо больше возможностей.). Я лично использую как взаимозаменяемые в исследованиях, но обычно сохраняю исходные исходные исходные данные в формате xts для начала (отметьте галочкой или данные OHLC в объектах xts).

Оба типа объекта быстро, с интенсивными вычислениями кода, написанного на языке C.

Если размеры (длина или ширина) вашего временного ряда не очень большие, вы можете легко перенести туда и обратно (например data.table("index" = index(xtsobj), coredata(xtsobj)) в уровень безопасности, а затем объединить data.tables, если вы хотите объединить ценные бумаги для типов поперечного сечения моделирования. Я обычно переключаться между двумя типами объектов для временных рядов, что я работаю с

xts объекты должны использовать все столбцы одного и того же типа (numeric или character являются общими типами), который может быть ограничение, если у вас есть категорический переменные, смешанные с численными данными (вы можете сопоставить категориальные переменные с числовыми значениями, чтобы обойти это, но это дополнительная работа и может уменьшить ясность при моделировании ваших данных).

xts делает слияние временных рядов данных (с merge), особенно на разных частотах вместе, очень просто. Он также прекрасно работает со встроенными техническими индикаторами движущихся окон в TTR и quantmod. Вы также можете использовать quantmod (chart_Series и add_TA) и xts инструменты для построения графиков (см. ?plot.xts) для визуализации из списка свечей свечи/OHLC. xts делает агрегирование данных тика в данных столбца OHLC и изменение частоты рядов данных бара (например, от 5 минут до 1 часа баров или ежедневных баров) очень просто с полезными функциями, такими как to.period, period.apply и endpoints (и это быстро используя C-код).

Если вы собираетесь создавать модели прогнозирования (многие линейные регрессии или более сложные модели) со многими категориальными переменными в ваших моделях прогнозирования (например, сектор безопасности, категории настроений), которые вы не хотите отображать на номера, это может быть лучше работать с data.table.Многие модели прогнозирования в R (и неконтролируемые методы, такие как кластеризация) требуют, чтобы данные находились в формате data.frame, и в этом случае сохранение/сохранение/загрузка ваших данных в формате data.table/data.frame может иметь больший смысл, если ваша конечная цель - это моделирование прогнозирования. VAR модели var/urca R также используют формат data.frame. Хотя отмечается, что многие модели прогнозирования (через caret и т. Д.) Требуют, чтобы данные были в цифровом формате matrix, который вы можете легко извлечь из xts объектов, используя coredata(xtsobj) (преобразование data.frame данных в формат matrix также является простым и простым).

Если наборы данных действительно большие (каждая безопасность имеет n ГЗ данных цен в памяти для больших n), и вы хотите сделать повторные скопления групп (например, вычисленным среднее/сд возвратов по месяцам и символу или месяц и сектор, вы, вероятно, найдете data.table более естественным для работы), вы, вероятно, найдете data.table более эффективным, он предназначен для обработки больших объемов данных в памяти/оперативной памяти и будет иметь тенденцию делать меньше копирования, чем xts операций.