понедельник, 6 апреля 2015 г.

Работа с финансовыми временными рядами в R. Часть 1. Обзор классов для работы с временными рядами в R

Перевод этой публикации с небольшими дополнениями и адаптацией. Автор оригинальной статьи - Eric Zivot (у него есть отличный курс на Coursera).

Основной объект для хранения данных в R - это data.frame, который представляет собой прямоугольную матрицу, столбцы которой могут иметь разный тип (числовой, символьный, логический и т.д.). Однако объекты класса data.frame не предназначались для работы с временными рядами, поэтому эффективность их при выполнении таких операций оставляет желать лучшего. Например, разделить или объединить данные по датам напрямую вообще невозможно. Кроме того, стандартные методы построения графиков в R не предназначены для работы с временными рядами. Поэтому возникла потребность в специальном классе для R, предназначенном для работы с временными рядами и их визуализацией.

Base R имеет ограниченную функциональность при работе с данными временных рядов. Например, одномерные и многомерные данные временных рядов с регулярными календарными временными промежутками могут быть представлены с использованием классов ts и mts соответственно. У этих классов есть ограниченный набор методов для обработки и визуализации данных временных рядов. Однако эти классы не могут адекватно работать с более общими временными рядами, разделенными нерегулярными временными промежутками, такими как внутридневные колебания цен на финансовых рынках. К счастью, в R есть несколько пакетов, которые могут работать с обобщенными временными рядами. В таблице ниже приведен список основных объектов временных рядов, доступных в R, и пакетов, к которым они относятся.

Объект временного ряда
пакет
Описание
fts
fts
Интерфейс в R к библиотеке tslib (библиотека временных рядов в C++)
its
its
Класс S4 для обработки нерегулярных временных рядов
irts
tseries
irts - это объекты нерегулярных временных рядов. Представляют собой скалярные или векторные значения с временным индексом класса “POSIXct”.
timeSeries
timeSeries
Пакет Rmetrics - набор инструментов для работы с временными рядами. Похож на класс Tibco S‐PLUS timeSeries
ti
tis
Функции и классы S3 для временных индексов, совместимые с частотами FAME.
ts, mts
stats
Объекты регулярных временных рядов
zoo
zoo
класс S3 для полностью упорядоченных наблюдений, включающих нерегулярные временные ряды
xts
xts
Расширение класса zoo

Классы ts и mts в base R хорошо подходят для представления регулярных календарных временных рядов, например таких, как ежемесячные продажи или квартальные данные по ВВП. Кроме того, некоторые функции моделирования временных рядов в base R и некоторых пакетах R принимают объекты классов ts и mts в качестве входных данных.
Для работы с более общими нерегулярными финансовыми временными рядами чаще всего используются пакеты timeSeries, zoo и xts. Пакет timeSeries - это часть набора пакетов Rmetrics для анализа финансовых данных и вычислительных финансов, созданного Diethelm Weurtz и его коллегами в ETZ Zurich (см. www.Rmetrics.org). В этих пакетах объекты класса timeSeries являются ключевыми объектами данных. Однако за пределами Rmetrics объекты timeSeries не так часто используются для представления временных рядов по сравнению с zoo и xts. Поэтому в данном руководстве мы преимущественно будем говорить об использовании объектов zoo и xts для работы с временными рядами.
Временные ряды, представленные объектами классов timeSeries, zoo и xts, имеют похожую структуру: временной индекс в виде векторного набора “дата-время” (как правило упорядоченного), и данные, как праило в виде некоторой прямоугольной матрицы. В итоге все это объединяется в один объект.

Перед тем, как детально поговорить о таких объектах, я хочу сделать краткий обзор полезных типов данных и классов в R для работы с временем и датами. Эти знания будут вам необходимы для того, чтобы понимать, как организовать эффективную работу с объектами временных рядов в R.

Для представления дат и времени в R имеется достаточно большое количество различных способов. Ниже в таблице 1 приведены основные классы для представления временных индексов:

Таблица 1. Основные классы для работы с датами и временем в R

Класс
Пакет
Описание
chron
chron
Представляет календарные даты и время как (знаковое) число секунд с начала 1970 года - то есть в виде числового вектора. Не учитывает часовых поясов.
Date
Base
Представляет календарные даты в виде количества дней, прошедших  с 01.01.1970
yearmon
zoo
Представляет месячные данные. Внутри класса он хранит данные в виде год плюс 0 для января, плюс 1/12 для февраля, плюс 2/12 для марта, и так далее, для того, чтобы внутреннее представление дат соответствовало классу ts с frequency = 12.
yearqtr
zoo
Представляет квартальные данные. Внутри класса он хранит данные в виде год плюс 0 для первого квартала, год плюс 1/4 для второго, и так далее, для того, чтобы внутреннее представление дат соответствовало классу ts с frequency = 4.
POSIXct
Base
Представляет календарные даты в виде (знакового) числа секунд с начала 1970 года в виде числового вектора. Подерживает различные спецификации часовых поясов (GMT, PST, EST и т.д.)
POSIXlt
Base
Представляет даты и время в виде списка именованных векторов.
timeDate
(Sv4)
timeDate
Класс Rmetrics timeDate Sv4 соответствует стандартам ISO 8601, ANSI C и POSIX. Помимо этого Rmetrics добавила концепцию "Financial Center", которая позволяет обрабатывать данные, собранные в разных часовых поясах.
timeDate практически полностью совместим с классом timeDate class из S‐PLUS.

Класс Date работает с датами (без времени) и рекомендуется для представления финансовых данных, которые относятся к календарным датам (например дневные цены закрытия). Классы POSIXct and POSIXlt позволяют работать с датой и временем, учитывая часовые пояса. Эти классы рекомендуются для представления данных, ассоциируемых с финансовыми данными, наблюдаемыми в определенные периоды времени в течение суток (например цены на акции внутри торговой сессии). На них похож класс chron, но он используется не так часто, как классы POSIXt. Классы yearmon и yearqtr из пакета zoo подходят для представления регулярных месячных и квартальных данных, когда нет необходимости указывать точно, когда в течение месяца или квартала наблюдались данные. Класс timeDate из Rmetrics - это класс Sv4, очень похожий на класс timeDate из S‐PLUS, используемый в наборе пакетов Rmetrics.

Комментариев нет:

Отправить комментарий