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


 

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

7080. Комплекс механизированных работ по лесовосстановлению площадей после ветровала 694.6 KB
  Комплекс механизированных работ по лесовосстановлению площадей после ветровала Введение В данной курсовой работе мною представлен комплекс механизированных работ по лесовосстановлению участка после ветровала. Ветровал - деревья поваленны...
7081. Нелинейные резистивные элементы 105 KB
  Нелинейные резистивные элементы Цель работы: Изучение степенной (полиномиальной) и кусочно-линейной аппроксимаций вольт-амперных характеристик (ВАХ) нелинейных резистивных элементов. Изучение спектрального состава тока, протекающего через нелинейный...
7082. Изучение фазовых и структурных превращений сиcтемы железо-углерод 288 KB
  Цель работы - изучение фазовых и структурных превращений сиcтемы железо-углерод, металлографическое исследование микроструктуры углеродистых сталей в равновесной состоянии во взаимосвязи с их механическими свойствами. Основные теоретические с...
7083. Выбор расходомера для измерения расхода сжиженной пропан-бутановой фракции 1021.5 KB
  Выбор расходомера для измерения расхода сжиженной пропан-бутановой фракции Содержание Общие сведения об измерении расхода и массы веществ. Основные виды расходомеров: Расходомеры переменного перепада давления Расходомеры обт...
7084. Металлографические методы исследования структуры металлов и сплавов 578 KB
  Металлографические методы исследования структуры металлов и сплавов ЛАБОРАТОРНАЯ РАБОТА Цель работы - ознакомление с методами металлографического анализа металлических материалов, получение навыков работы с металлографиодским микроскопом и определен...
7085. Оператор цикла LOOP. Команды условных переходов 143 KB
  Оператор цикла LOOP. Команды условных переходов Цель работы: Научиться использовать оператор повторения и команды условных переходов. Задание: Составьте программу для подсчета выражения, где N - произвольное четное положительное число, без исп...
7086. Процеси теплообміну при нагріванні рідини 176.31 KB
  Мета роботи: дослідити процеси теплообміну при нагріванні рідини та виявити величину і причини розбіжності результатів експериментального і аналітичного дослідження. Обладнання: експериментальна установка для нагрівання рідини ТА...
7087. Электростатическое поле в вакууме 168.5 KB
  Тема: Электростатическое поле в вакууме. Основу электростатики составляют инвариантность электрического заряда к выбору системы отсчета, закон сохранения заряда, закон Кулона, принцип суперпозицииполейи теорема Остроградского...