77205

Декомпозиция временных рядов в СУБД Oracle

Курсовая

Информатика, кибернетика и программирование

Целью данной работы являлось создание пакета процедур и функций с помощью которых можно было бы легко и эффективно манипулировать временными рядами в СУБД ORCLE. Для хранения информации о рядах создает отдельная таблица Timeseries в которой хранятся имя или идентификатор ряда...

Русский

2015-02-02

102 KB

3 чел.

Курсовая работа

Декомпозиция временных рядов в СУБД Oracle.

Подкорытов Сергей, 444гр

Научный руководитель: Графеева Н.Г.

СПбГУ

Математико-Механический факультет

2009г

Вступление.

Одним из типов информации, которую приходится обрабатывать в базах данных, являются временные ряды, то есть дискретные измерения некоторой величины. Обычно такие наблюдения проводятся через определённый фиксированный период времени (минута, час, день, месяц и т.д.). Примерами таких рядов являются потребления электроэнергии, напряжение в сети, объем пассажиропотока, курсы валют, цены на газ, нефть и т.п. К сожалению, в СУБД отсутствуют  удобные средства для хранения и исследования временных рядов.

В качестве конкретной СУБД был выбран Oracle, так как он хорош при хранении больших объемов информации, а также из-за существования языка PL\SQL, позволяющего создавать процедуры и функции.

Целью данной работы являлось создание пакета процедур и функций, с помощью которых можно было бы легко и эффективно манипулировать временными рядами в СУБД ORACLE.

Хранение данных.

Для хранения информации о рядах создает отдельная таблица Timeseries, в которой хранятся имя или идентификатор ряда, величина шага и его описание, например:

Name:

Delta:

Description:

Electro

1

Потребление электроэнергии. Шаг – 1 месяц.

Имя ряда уникально в пределах одной пользовательской схемы.

Для хранения каждого ряда, заводится отдельная таблица с двумя полями: key и value. Поле key используется для упорядочивания значений по времени, а value хранит непосредственно сами значения. Поле key также является первичным ключом таблицы, что гарантирует упорядоченность значений (нет возможности сохранить два значения с одинаковым ключом). Для первичного ключа Oracle’ом автоматически создается индекс, который также используется для быстрого упорядочивания значений при обращении к ним.

Модели сезонности.

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

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

Данная модель позволяет строить хорошие прогнозы, если предполагается независимость сезонных колебаний от значения тренда. В реальных данных, в большинстве случаев, такая зависимость все же есть и их поведения описывается мультипликативной моделью, которая представляет ряд в виде произведения, где  и тренд и сезонная составляющая соответственно,  а – случайная ошибка, последовательность независимых случайных величин с постоянной дисперсией, но на этот раз с матожиданием 1. Однако эта модель логарифмированием сводится к аддитивной, работа с которой более проста в вычислительном плане.

Метод скользящего среднего.

Метод скользящего среднего используется для определения тренда. Суть метода в следующем: берем первые n элементов ряда (будем называть n – величиной окна) и вычисляем их среднее значение. Пусть первое значение соответствует моменту времени , а последнее , тогда полученное среднее значение будет соответствовать . Теперь сдвинемся на один шаг, и повторим то же самое для значений , вычислив  тем самым .

Заметим, что в случае нечетного размера окна полученные значения тренда будет соответствовать одному из исходных моментов времени , или находится между ними, если размер окна будет четным. Так как второй вариант не слишком удобен, изменим работу алгоритма, если n четное.

Для этого заметим  следующее:

Это можно обобщить следующим образом: пусть , тогда тренд будет вычисляться по формуле

где

Выделение сезонной компоненты (для рядов шагом 1 месяц).

Пусть у нас есть ряд . Предположим, что мы выделили его тренд с помощью метода скользящего среднего. Если мы вычтем тренд из исходного ряда, то получим остаток . В нем сезонная компонента искажена стохастической ошибкой. Чтобы избавится от неё, воспользуемся законом больших чисел. Согласно ему, среднеарифметическое независимых одинаково распределённых случайных величин стремится к их мат.ожиданию. Рассмотрим среднее значение ряда для каждого месяца:

Получившиеся  необязательно дают в сумме ноль, подкорректируем их следующим образом:

, где .

Полученные таким образом  являются оценками сезонных индексов,  причем

Пример

Рассмотрим потребление электроэнергии в целом по России  за период 1991 по 1999 годы. График этого ряда изображен на рисунке 1 синим цветом. Очевидно наличие четко выраженной сезонности. Желтым цветом выделен тренд оцененный методом скользящего среднего.

Рисунок

На рисунке 2 изображены оцененные сезонные индексы. На рисунке 3 синим цветом изображены исходные данные, а фиолетовым  - сумма оцененных сезонной компоненты и тренда. Видно, что оцененные значения близки к настоящим.

Рисунок

Рисунок 3

Описание процедур и функций пакета.

  •  Процедура Init()

 создает в схеме текущего пользователя таблицу Timeseries.

  •  Процедура CreateSeries(name varchar, delta number, description varchar)

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

  •  Процедура MovingAverage(source varchar, windowSize pls_integer, dest varchar)

Выделяет из ряда source тренд методом скользящего среднего и записывает его в таблицу dest. Параметр windowSize отвечает за размер скользящего окна. Ряды source и dest должны быть созданы заранее, с помощью процедуры CreateSeries. Если ряд dest не пуст, то результат будет дописан в конец.

  •  Процедура  Seasonal(source varchar, trend varchar, dest varchar)

Из ряда source, при помощи заранее посчитанного тренда trend, выделяет сезонную компоненту и дописывает её в таблицу dest.

  •  Процедура Kill() удаляет из базы все данные ссылки на которые хранятся в таблице Timeseries и затем её саму.
    •  Процедура AggregateSeriesByAvg(source varchar, newDelta number, dest varchar) укрупняет ряд source, беря за новые значение среднее ряда за число шагов, указанное в параметре newDelta.

Список литературы.

  1.  В. И. Суслов, Н. М. Ибрагимов, Л. П. Талышева, А. А. Цыплаков Эконометрия

Издательство: Новосибирский государственный университет, 2005 г.

2. PL/SQL User's Guide and Reference


 

А также другие работы, которые могут Вас заинтересовать

50831. Создание одного однотабличного отчета (для 1-ой таблицы) с помощью мастера и редактирование его в режиме конструктора 154 KB
  Создание одного однотабличного отчета для 1ой таблицы с помощью мастера и редактирование его в режиме конструктора. Создание одного отчета по запросу для 1го запроса с помощью мастера и редактирование его в режиме конструктора. Создание одного многотабличного отчета по двум таблицам связанным связью одинкомногим с группировкой по полям главной таблицы. Создание отчета с помощью мастера и редактирование его в режиме конструктора.
50832. Создание однотабличной ленточной формы для таблиц, которые не являются подчиненными в связях 717.5 KB
  Создание однотабличной ленточной формы для таблиц которые не являются подчиненными в связях т. Создание однотабличной формы в один столбец для подчиненных таблиц т. Создание одной многотабличной формы в табличном виде с помощью мастера. Многотабличные формы создавать по двум таблицам связанным связью одинкомногим.
50833. Создать главную кнопочную форму, позволяющую открыть из нее по нажатию на кнопки 599.5 KB
  Создать главную кнопочную форму позволяющую открыть из нее по нажатию на кнопки следующие кнопочные формы: Список форм Список отчетов Список таблиц Список запросов и последний пункт Выход Каждая кнопочная форма должна содержать список кнопок для открытия ВСЕХ соответствующих объектов базы данных. Формы должны содержать осмысленный заголовок фоновый рисунок список кнопок с подписями. Создание Главной кнопочной формы Для создания главной кнопочной формы в ccess существует специальная служебная программа Диспетчер кнопочных форм....
50834. Создание однотабличной формы (для 2-х таблиц) с помощью мастера и редактирование ее в режиме конструктора 187.5 KB
  Создание однотабличной формы для 2х таблиц с помощью мастера и редактирование ее в режиме конструктора. Создание многотабличной формы с помощью мастера и редактирование ее в режиме конструктора. Обязательно использовать в каждой форме рисунки надписи элементы навигации кнопки заголовок формы. Изучить свойства формы в целом и каждого из ее элементов.
50835. Создание запросо 181 KB
  Создание запросов минимум 1 на создание таблицы запрос должен быть актуален для выбранной темы; Создание запросов минимум 1 на изменение запрос должен быть актуален для выбранной темы. Создание запросов минимум 1 на удаление запрос должен быть актуален для выбранной темы. Краткая теория Кроме запросов на выборку в ccess существует большая группа запросов которые называют запросамидействиями. Эти запросы позволяют быстро изменить создать удалить или же добавить набор данных в некоторую таблицу базы.
50836. Создание однотабличного отчета (для 1-ой таблицы) с помощью мастера и редактирование ее в режиме конструктора 153.5 KB
  Создание однотабличного отчета для 1ой таблицы с помощью мастера и редактирование ее в режиме конструктора. Создание многотабличного отчета с помощью мастера и редактирование ее в режиме конструктора. Отчеты созданные только с использованием мастера не принимаются Краткая теория Понятие отчета Отчет специальный объект предназначенный для вывода информации из базы данных на принтер. В отчетах данные формируют так чтобы их было удобно размещать на отдельных страницах.
50837. ПРИМЕНЕНИЕ СПЕЦИАЛЬНЫХ ФУНКЦИЙ LOGO! ПРИ ПРОЕКТИРОВАНИИ СИСТЕМ ПРОМЫШЛЕННОЙ АВТОМАТИКИ 400 KB
  Подать сигнал запуска ЛОГ. Через параметризуемое время наблюдать появление высокого уровня ЛОГ. Подать сигнал высокого уровня ЛОГ. 1 на вход I1 сигнал сброса на входе I2 равен ЛОГ.
50839. Применение программы РSpice для моделирования двухтактного полумостового преобразователя постоянного напряжения 218.5 KB
  При включении питания схема запуска кратковременно замыкает ключ S1. При замыкании S1 через первичную обмотку W11 силового трансформатора TV1 начинает протекать ток, являющийся суммой токов...