Перевод этой публикации с небольшими дополнениями и адаптацией. Автор оригинальной статьи - 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.
Комментариев нет:
Отправить комментарий