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


 

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

20474. Ефективність програмного забезпечення та її оцінка 36 KB
  Оптимізація – це покращення характеристик програмної системи або просто програми. Отже перший етап програмування – створення правильної програми і лише другий – її оптимізація. Але перед тим як починати покращувати ефективність програми слід перевірити наскільки це покращення буде корисним і точно визначити місце яке слід переробити. Справа у тому що існує правило 20 80: 20 об’єктного коду тексту програми виконується 80 часу роботи всієї програми.
20475. Абсолютна величина і норма матриці 139 KB
  За абсолютну величину модуль матриці будемо вважати матрицю де – модулі елементів матриці . Якщо і – матриці для яких операції і мають сенс то: а б в число. За норму матриці вважаємо дійсне число що задовольняє умови: а причому тоді і тільки тоді коли =0; б число і зокрема ; в ; г і матриці для яких відповідні операції мають сенс.
20476. Біном Ньютона 31 KB
  Запишемо його у вигляді добутку пронумерувавши дужки: Кожний доданок містить n множників: k множників a і nk множників b тобто має вигляд akbnk де k≤n k≥0.
20477. Візуальні мови проектування специфікацій 36 KB
  Складність сучасних обчислювальних систем а також висока вартість створення якісного та надійного програмного забезпечення ЕОМ стимулюють розвиток теоретично обгрунтованих методів та засобів розробки програмних систем. Особливо актуальним є застосування таких методів та засобів при об'єктноорієнтованому підході до створення програмних систем. Формалізовані візуальні мови набули широкого використання при проектуванні та розробці складних програмних систем. Об'єктноорієнтовані методи розробки програмного забезпечення широко застосовують...
20478. Властивості сполучень (Трикутник Паскаля) 25.5 KB
  Ряди трикутника Паскаля умовно пронумеровані згори починаючи з нульового й числа в нижньому ряді відносно чисел у попередньому ряді завжди розміщені ступінчасто й навскіс. Кожне число в кожному ряді одержуємо додавши два числа розміщені вгорі зліва і справа. Наприклад перше число в першому ряді 0 1 = 1 тоді як числа 1 і 3 в третьому ряді утворюють число 4 в четвертому ряді: 1 3 = 4. Правило Паскаля стверджує: якщо kй біноміальний коефіцієнт в біноміальному ряді для x yn тоді для будьякого додатного цілого n і будьякого...
20479. Графічний метод відокремлення коренів 39.5 KB
  Найчастіше в додатках використовуються трансцендентні рівняння. Для відокремлення коренів можна ефективно використати ЕОМ. Проте слід пам’ятати що дане твердження справедливе лише за умов монотонності на заданому відрізку і виборі достатньо малого кроку приросту аргументу з врахуванням характеристик. Слід аналізувати три можливості що можуть виникнути а саме: Якщо рис.
20481. Детальний розгляд критичних етапів життєвого циклу. Принципи структурного аналізу 34 KB
  Принципи структурного аналізу. Всі методології структурного аналізу базуються на ряді загальних принципів частина з яких регламентує організацію робіт на початкових етапах ЖЦ а частина використовується при виробленні рекомендацій щодо організації робіт. В якості двох базових принципів використовуються наступні: принцип розділяй і володарюй і принцип ієрархічного упорядкування. Перший є принципом вирішення важких проблем шляхом розбиття їх на безліч менших незалежних завдань легких для розуміння і вирішення.
20482. Совокупное предложение и кривая 94 KB
  Совокупное предложение базируется на производственных возможностях национальной экономики. Оно является функцией экономики от доступных на текущий момент факторов производства, технологии и уровня цен. В процессе анализа совокупного предложения важно различать совокупное предложение в краткосрочном и долгосрочном периодах.