Статистический анализ и моделирование процессов авторегрессии и скользящего среднего
Исследование выборки из отсчётов стационарного эргодического случайного процесса. Моделирование нового процесса, подобного исходному, с использованием моделей авторегрессии и скользящего среднего различных порядков. Разработка программы моделирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.07.2013 |
Размер файла | 537,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
Высшего профессионального образования
"САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА" (СГАУ)
Кафедра технической кибернетики
СТАТИСТИЧЕСКИЙ АНАЛИЗ И МОДЕЛИРОВАНИЕ ПРОЦЕССОВ АВТОРЕГРЕССИИ И СКОЛЬЗЯЩЕГО СРЕДНЕГО
Курсовая работа по дисциплине "Теория случайных процессов"
Выполнил: студент Гайдель А.В.,
Проверил: профессор Храмов А.Г.
Самара 2009
Задание
Дана реализация стационарного в широком смысле эргодического случайного процесса с дискретным временем (стационарная случайная последовательность, временной ряд) - выборка из 5000 последовательных значений (отсчётов) процесса.
1. Оценить моментные функции случайного процесса, рассчитав выборочное среднее, выборочную дисперсию и выборочную нормированную корреляционную функцию. Оценить радиус корреляции случайного процесса. Изобразить графически оценку нормированной корреляционной функции.
2. Построить модели авторегрессии (АР), модели скользящего среднего (СС) и смешанные модели авторегрессии и скользящего среднего (АРСС) до третьего порядка включительно: АРСС (M, N), M = 0, 1, 2, 3; N = 0, 1, 2,3. Каждую из построенных моделей записать в явном виде с численными значениями параметров.
3. Рассчитать теоретические нормированные корреляционные функции выходной последовательности для каждой из построенных выше моделей. На основе сравнения выборочной и теоретических нормированных корреляционных функций выбрать наиболее адекватную модель АРСС случайного процесса. Построить графики теоретических нормированных корреляционных функций для трёх наилучших из классов АР, СС и АРСС.
4. Построить и изобразить графически параметрическую оценку спектральной плотности для трёх наилучших моделей.
5. Смоделировать случайный процесс АРСС с использованием наилучшей модели. Сравнить графически фрагменты реализаций исходного и смоделированного процессов.
6. Построить оценки моментных функций смоделированного процесса, сравнить их с оценками моментных функций исходного процесса и с теоретическими моментными функциями, соответствующими выбранной модели АРСС.
выборка авторегрессия программа моделирование
Аннотация
В данной курсовой работе проводится всестороннее исследование выборки из отсчётов некоторого неизвестного стационарного эргодического случайного процесса и моделирование нового процесса, подобного исходному, с использованием моделей авторегрессии и скользящего среднего различных порядков. Модели АРСС исследуются на качество, проводится построение графиков спектральной плотности мощности для исходного и смоделированных процессов. Для наглядности большинство результатов изображено графически и в виде таблиц. Программа, приведённая в приложении к курсовой работе, может служить основой для исследования любого стационарного эргодического случайного процесса и построения моделей АРСС любых порядков.
Содержание
- Задание
- Аннотация
- 1. Оценка моментных функций
- 2. Построение моделей
- 3. Анализ моделей
- 4. Спектральная плотность мощности
- 5. Моделирование
- 6. Анализ смоделированных процессов
- Выводы
- Список использованных источников
- Приложение A. Текст программы
1. Оценка моментных функций
Пусть дана выборка из отсчётов стационарного в широком смысле эргодического дискретного случайного процесса . Оценим моментные функции этого процесса.
Выборочное среднее - оценка математического ожидания - рассчитывается по формуле:
, где - соответствующие компоненты вектора .
В нашем случае, выполнив расчеты, получаем . Здесь и далее все данные расчётов приводятся с определённой разумной степенью точности.
Формула для расчёта выборочной дисперсии имеет вид:
, но мы воспользуемся исправленной дисперсией, рассчитывающейся по формуле , так как она является лучшей (несмещённой) оценкой дисперсии нашего процесса .
После несложных расчётов получаем: .
В соответствии с оценкой дисперсии выберем формулу для оценки корреляционной функции :
.
Это исправленная выборочная корреляционная функция.
В таблицу 1 запишем 11 первых неотрицательных значений этой функции, помня что :
Заметим, что , чего и следовало ожидать.
Оценим также и нормированную корреляционную функцию, которая поможет количественно оценить корреляцию сечений:
.
Её первые значения также занесём в таблицу 1.
Таблица 1 - Первые значения выборочных корреляционных функций
0 |
1 |
2 |
3 |
4 |
5 |
||
333.8049 |
-26.7346 |
-124.7274 |
55.6273 |
2.4389 |
1.0393 |
||
1.0000 |
-0.0801 |
-0.3737 |
0.1666 |
0.0073 |
0.0031 |
||
6 |
7 |
8 |
9 |
10 |
|||
-5.4030 |
9.4987 |
-0.7981 |
-9.0512 |
4.0367 |
|||
-0.0162 |
0.0285 |
-0.0024 |
-0.0271 |
0.0121 |
Заметим, , что опять же вполне логично.
Оценим радиус корреляции случайного процесса по формуле , только вместо используем , а будем полагать не слишком большим по сравнению с размером выборки во избежание чрезмерной ошибки:
.
В результате вычислений, полагая , получаем: .
Изобразим графически на рисунке 1 оценку корреляционной функции:
Рисунок 1 - Оценка нормированной корреляционной функции
2. Построение моделей
Теперь построим все модели АРСС для порядков и не превышающих 3. Здесь - это белый шум с нулевым математическим ожиданием и единичной дисперсией. Для простоты генерации будем считать его сечения распределёнными по нормальному закону.
Каждый раз будем руководствоваться следующим методом:
1. Сначала отыщем коэффициенты из системы линейных уравнений .
2. Далее подставляем в систему .
3. Здесь - смешанная корреляционная функция процессов и , формально выражающаяся как , где и - математические ожидания соответствующих случайных процессов, при чём, как указано выше, . Изначально нам, вообще говоря, неизвестны.
4. Для отыскания воспользуемся следующей системой уравнений:
5. . Для определённости . Подставляя из этой системы в предыдущую, получаем нелинейную систему уравнений относительно .
Выпишем для примера системы уравнений для моделей АР (3), СС (3) и АРСС (3,3).
Для модели АР (3) получаем:
, т.е.
Для модели СС (3):
, т.е.
Для модели АРСС (3,3):
, т.е.
,
где
Последняя система не была явно подставлена в основную систему по причине нехватки места на листе, чтобы разместить получающиеся в результате такой подстановки уравнения.
Все системы решаем численными методами. Полученные модели проверяем на устойчивость исходя из условия, что все корни характеристического уравнения лежат внутри единичной окружности на комплексной плоскости. Результаты вычислений занесём в таблицу 2.
Таблица 2 - Результат построения моделей АРСС
Порядок модели |
Параметры модели |
||||||||
M |
N |
||||||||
0 |
0 |
18.2703 |
|||||||
0 |
1 |
-1.4680 |
18.2113 |
||||||
0 |
2 |
-9.7289 |
-8.6484 |
12.8202 |
|||||
0 |
3 |
13.7652 |
4.4969 |
-10.3812 |
4.0411 |
||||
1 |
0 |
18.2116 |
-0.0801 |
||||||
1 |
1 |
Модель существует, но не устойчива |
|||||||
1 |
2 |
Модель не существует |
|||||||
1 |
3 |
13.6406 |
3.9211 |
-10.5418 |
4.4790 |
0.0438 |
|||
2 |
0 |
16.8266 |
-0.1107 |
-0.3825 |
|||||
2 |
1 |
16.7116 |
4.9417 |
-0.3597 |
-0.4025 |
||||
2 |
2 |
-4.1868 |
6.0857 |
16.4679 |
-0.4033 |
-0.1994 |
|||
2 |
3 |
13.6521 |
3.3721 |
-10.9224 |
4.8177 |
0.0781 |
0.0153 |
||
3 |
0 |
16.7215 |
-0.0680 |
-0.3702 |
0.1116 |
||||
3 |
1 |
Модель существует, но не устойчива |
|||||||
3 |
2 |
Модель не существует |
|||||||
3 |
3 |
14.4362 |
8.2885 |
-6.4464 |
2.5453 |
-0.3429 |
-0.1545 |
-0.0839 |
3. Анализ моделей
Будем анализировать качество построенных моделей, сравнивая их нормированную корреляционную функцию с оценкой нормированной корреляционной функции исходного процесса . Для сравнения возьмём первые 10 значений нормированных корреляционных функций и для каждой модели вычислим среднее квадратическое отклонение .
Результаты вычислений занесём в таблицу 3.
Таблица 3 - Оценка качества моделей АРСС через СКО
M |
N |
||||
0 |
1 |
2 |
3 |
||
0 |
0.1758 |
0.1694 |
0.0298 |
0.0020 |
|
1 |
0.1744 |
- |
0.0020 |
||
2 |
0.0292 |
0.0182 |
0.0040 |
0.0020 |
|
3 |
0.0262 |
- |
0.0015 |
В таблице тёмно-бирюзовым цветом отмечена лучшая модель АРСС, а серым цветом - лучшие модели из классов АР и СС. Как и следовало ожидать, это модели АРСС (3,3), АР (3) и СС (3) соответственно. Видно также, что все модели с СС-составляющей равной 3 оказались очень неплохими, чего нельзя сказать о соответствующих моделях с АР-составляющей равной 3.
Теперь построим графики теоретических нормированных корреляционных функций для указанных наилучших моделей и изобразим их на рисунках 2, 3 и 4 соответственно. Будем считать, что для всякой модели АРСС (M, N) (N+M+1) значение нормированной корреляционной функции совпадает, а остальные значения отыщем из системы:
.
Рисунок 2 - Теоретическая нормированная корреляционная функция для модели АР (3)
Рисунок 3 - Теоретическая нормированная корреляционная функция для модели СС (3)
Рисунок 4 - Теоретическая нормированная корреляционная функция для модели АРСС (3,3)
Смоделируем три процесса на основе лучших моделей, руководствуясь формулой из таблицы 2. Белый шум будем генерировать как последовательность из копий случайной величины, распределённой по нормальному закону с нулевым математическим ожиданием и единичной дисперсией. Несколько первых значений генерируемого случайного процесса положим нулевыми как основание рекурсии. Чтобы придать новому процессу нужное математическое ожидание (непосредственно после генерации оно близко к нулю), просто прибавим его к каждому отсчёту. Таким образом сгенерируем 6000 отсчётов, после чего отбросим первую 1000 как брак.
Построим ещё 3 рисунка, разместив на каждом из них график выборочной нормированной корреляционной функции исходной выборки, график параметрической оценки нормированной корреляционной функции для соответствующей модели и график выборочной нормированной корреляционной функции для сгенерированного по этой модели процесса. На рисунке 5 изобразим соответствующий график для модели АР (3), на рисунке 6 - для модели СС (3), а на рисунке 7 - для АРСС (3,3). Чтобы 3 графика не слишком мешали друг другу, придётся изобразить их линейную интерполяцию. При этом следует помнить, что на самом деле нормированные корреляционные функции дискретных процессов определены только в целых координатах, а всё остальное - это просто их линейное продолжение, которое сделано исключительно для наглядности.
Рисунок 5 - Анализ нормированной корреляционной функции модели АР (3)
Рисунок 6 - Анализ нормированной корреляционной функции модели СС (3)
Рисунок 7 - Анализ нормированной корреляционной функции модели АРСС (3,3)
На этих рисунках красные линии - выборочные нормированные корреляционные функции исходной выборки, зелёные - параметрические оценки нормированных корреляционных функций моделей, синие - выборочные нормированные корреляционные функции соответствующих смоделированных процессов.
4. Спектральная плотность мощности
Построим и изобразим на рисунках 8, 9 и 10 параметрическую оценку нормированной спектральной плотности мощности для трёх рассматриваемых моделей АР (3), СС (3) и АРСС (3,3) соответственно. Саму оценку спектральной плотности мощности будем искать в виде:
.
На тех же рисунках изобразим выборочную оценку нормированной спектральной плотности мощности для исходного процесса и для соответствующего смоделированного процесса. Такую оценку найдём из преобразования Фурье , используя первые 50 значений соответствующих оценок корреляционных функций вместо бесконечного числа. Все оценки спектральной плотности мощности нормируются на соответствующие оценки дисперсий.
Рисунок 8 - Спектральная плотность мощности для модели АР (3)
Рисунок 9 - Спектральная плотность мощности для модели СС (3)
Рисунок 10 - Спектральная плотность мощности для модели АРСС (3,3)
Цветографическая схема та же, что и на рисунках 5 - 7: красным отмечена оценка нормированной спектральной плотности мощности для исходного процесса, зелёным - параметрическая оценка для модели, а синим - выборочная оценка для соответствующего смоделированного процесса.
5. Моделирование
Итак, лучшая модель получилась АРСС (3,3). Приведём на рисунке 8 фрагменты реализаций исходного и построенного процесса из 100 первых отсчётов (не бракованных, конечно).
Рисунок 11 - Фрагмент реализации случайного процесса модели АРСС (3,3)
На этом рисунке красным цветом показана реализация исходного процесса, синим - смоделированного. Кроме того, для наглядности голубым цветом отмечено выборочное среднее исходного процесса, а зелёным - прямые вида . Видно, что характер реализаций совпадает.
6. Анализ смоделированных процессов
Наконец, приведём итоговую таблицу 4, в которую соберём все статистические и теоретические сведения, необходимые для наглядного анализа трёх лучших моделей.
Таблица 4 - Итоговый анализ построенных моделей
Параметры процесса |
Исходный процесс |
АР (3) |
СС (3) |
АРСС (3,3) |
||||
Теория |
Выборка |
Теория |
Выборка |
Теория |
Выборка |
|||
Минимум |
-45.3730 |
-65.3317 |
-56.5194 |
-64.7280 |
||||
Максимум |
68.3770 |
67.1167 |
72.4522 |
75.2665 |
||||
Среднее |
10.1545 |
10.1545 |
10.1294 |
10.1545 |
10.0735 |
10.1545 |
9.9608 |
|
Дисперсия |
333.8049 |
333.8049 |
321.0027 |
333.8049 |
336.8887 |
333.8049 |
336.8630 |
|
Стандартное отклонение |
18.2703 |
18.2703 |
17.9165 |
18.2703 |
18.3545 |
18.2703 |
18.3538 |
|
Нормированная корреляционная функция |
||||||||
r (0) |
1.0000 |
1.0000 |
1.0000 |
1.0000 |
1.0000 |
1.0000 |
1.0000 |
|
r (1) |
-0.0801 |
-0.0801 |
-0.0606 |
-0.0801 |
-0.0855 |
-0.0801 |
-0.0956 |
|
r (2) |
-0.3737 |
-0.3737 |
-0.3717 |
-0.3737 |
-0.3908 |
-0.3737 |
-0.3873 |
|
r (3) |
0.1666 |
0.1666 |
0.1479 |
0.1666 |
0.1877 |
0.1666 |
0.1799 |
|
r (4) |
0.0073 |
0.1180 |
0.1110 |
0.0000 |
0.0130 |
0.0073 |
0.0039 |
|
r (5) |
0.0031 |
-0.1114 |
-0.1048 |
0.0000 |
-0.0226 |
0.0031 |
-0.0044 |
|
r (6) |
-0.0162 |
-0.0175 |
-0.0118 |
0.0000 |
0.0097 |
-0.0162 |
-0.0061 |
|
r (7) |
0.0285 |
0.0556 |
0.0489 |
0.0000 |
0.0090 |
0.0045 |
0.0028 |
|
r (8) |
-0.0024 |
-0.0097 |
-0.0208 |
0.0000 |
0.0069 |
0.0007 |
-0.0050 |
|
r (9) |
-0.0271 |
-0.0219 |
-0.0167 |
0.0000 |
-0.0070 |
0.0004 |
0.0065 |
|
r (10) |
0.0121 |
0.0113 |
0.0226 |
0.0000 |
-0.0142 |
-0.0006 |
0.0057 |
|
СКО |
0.0000 |
0.0262 |
0.0241 |
0.0020 |
0.0037 |
0.0015 |
0.0026 |
Выводы
Задачи моделирования случайных процессов возникают на практике довольно часто. Это, прежде всего, связано с экономикой её экономическими процессами. Модели авторегрессии и скользящего среднего позволяют моделировать случайные процессы, подобные исходному, по уже имеющейся реализации такого исходного процесса. Общая модель, предложенная Боксом и Дженкинсом, включает как параметры авторегрессии, так и параметры скользящего среднего. Она позволяет добиться максимального подобия новых смоделированных процессов.
В этой работе было проведено исследование подобного рода моделирования для некоторого исходного неизвестного эргодического процесса. В ходе работы была проанализирована выборка из отсчётов исходного процесса, построены все смешанные модели АРСС до третьего порядка включительно, проведён поиск наилучшей модели и моделирование нового случайного процесса по ней. При этом написана универсальная программа, позволяющая строить, вообще говоря, смешанные модели любых порядков.
Методы исследования, использующиеся в работе, могут быть применены на практике для реального статистического анализа и моделирования любого эргодического случайного процесса. Подобные методы моделирования актуальны на сегодняшний день и находятся на стадии исследования.
Список использованных источников
1. Тараскин, А.Ф. Статистический анализ временных рядов авторегрессии и скользящего среднего: учебное пособие [Текст] // Самара: СГАУ, 1998. - 56с.
2. Тараскин, А.Ф. Статистическое моделирование и метод Монте-Карло: учебное пособие [Текст] // Самара: СГАУ, 1997. - 62с.
3. Храмов, А.Г. Анализ и моделирование процессов АРСС: интернет-ресурс к курсовой работе [Электронный ресурс] // Самара: СГАУ, 2009.
Приложение A. Текст программы
clear ();
// Initial settings
SOURCE_FILE_NAME = 'D: \temp\source. txt'; // File contains input data
FLOAT_FORMAT = '%16.4f'; // Floating point values representation format
INT_FORMAT = '%d'; // Decimal integer values representation format
EPSILON = 1.0E-6; // Precision
MAX_AR_LEVEL = 3;
MAX_MA_LEVEL = 3;
IMITATION_LENGTH = 5000;
// Input data
x = fscanfMat (SOURCE_FILE_NAME); // Sample
n = length (x); // Sample size
// Helpers
function printMat (M, mformat),
[n, m] = size (M);
for i = 1: n,
for j = 1: m,
printf (mformat + "", M (i, j));
end;
printf ("\n");
end;
endfunction;
// 1. Moment functions
// Correlation function esimation
function R = correlation (k, x)
if (k < 0),
k = - k;
end;
R = 0.0;
n = length (x);
meanx = mean (x);
for i = 1: (n-k),
R = R + (x (i) - meanx) * (x (i+k) - meanx);
end;
R = R / (n - k - 1);
endfunction;
// Normalized correlation function
function r = ncorrelation (k, x)
r = correlation (k, x) / correlation (0, x);
endfunction;
// Correlation distance
function T = corrdist (x)
coefficient = 0.01;
T = coefficient * length (x) - 2;
em1 = exp (-1);
while (T >= 0) & (abs (ncorrelation (T, x)) < em1),
T = T - 1;
end;
T = T + 1;
endfunction;
// Drawing normalized correlation function plot
function corrplot ()
p. thickness = 6;
m = 10;
t = [-m: m];
y = zeros (length (t), 1);
for i = 1: length (t),
y (i) = ncorrelation (t (i), x);
end;
plot2d3 (t, y, axesflag=5, style=2);
a = gca ();
p = a. children. children;
p. thickness = 3;
p. mark_mode = "on";
p. mark_size_unit = "point";
p. mark_style = 11;
p. mark_size = 3;
endfunction;
// Main
meanx = mean (x); // Sample mean
svx = variance (x); // Sample variance
m = 10; // Correlation values count
R = zeros (m, 1);
r = zeros (m, 1);
for i = 0: m,
R (i+1) = correlation (i, x);
r (i+1) = ncorrelation (i, x);
end;
Tcorr = corrdist (x);
printf ("Sample mean: " + FLOAT_FORMAT + "\n", meanx);
printf ("Sample variance: " + FLOAT_FORMAT + "\n", svx);
printf ("Correlation function estimation: \n");
printMat (R, FLOAT_FORMAT);
printf ("Normalized correlation function estimation: \n");
printMat (r, FLOAT_FORMAT);
printf ("Correlation distance: " + INT_FORMAT + "\n", Tcorr);
scf (1);
corrplot ();
// 2. Models building
// Autoregression coefficients search
function betas = ar (x, arLevel, maLevel)
R = zeros (2 * arLevel, 1);
for i = (maLevel - arLevel + 1): (maLevel + arLevel),
R (i - maLevel + arLevel) = correlation (i, x);
end;
Rmm = zeros (arLevel, arLevel);
_n = maLevel;
for i = 1: arLevel,
_m = _n;
for j = 1: arLevel,
Rmm (i, j) = R (_m - maLevel + arLevel);
_m = _m - 1;
end;
_n = _n + 1;
end;
Rm = - R (arLevel + 1: 2 * arLevel);
betas = linsolve (Rmm, Rm);
endfunction;
// Mutual Correlation Function
function rrr = mcorrelation (k, alph, betas)
rrr = alph (k+1);
len = min (k, length (betas));
for j = 1: len,
rrr = rrr + betas (j) * mcorrelation (k - j, alph);
end;
endfunction;
// Moving average coefficients search
function alphas = ma (x, arLevel, maLevel, betas)
for i = 0: max ([arLevel, maLevel]),
R (i+1) = correlation (i, x);
end;
function zr = syst (alph)
for k = 0: maLevel,
zr (k+1) = - R (k+1);
for i = k: maLevel,
zr (k+1) = zr (k+1) + alph (i+1) * mcorrelation (i - k, alph, betas);
end;
for j = 1: arLevel,
zr (k+1) = zr (k+1) + betas (j) * R (abs (k - j) + 1);
end;
end;
endfunction;
[alphas, values, info] = fsolve ([1: (maLevel+1)], syst);
for i = 1: length (values),
if (abs (values (i)) > EPSILON | info == 4) then
alphas (1) = %i;
break;
end;
end;
endfunction;
// Image vector
function s = image (v)
s = %F;
for i = 1: length (v),
if (imag (v (i)) <> 0) then
s = %T;
break;
end;
end;
endfunction;
// Model stability
function s = stable (betas)
p = poly ([pertrans (-betas) 1], "z", "coeff");
z = roots (p);
s = %T;
for i = 1: length (z),
if (abs (z (i)) >= 1) then
s = %F;
break;
end;
end;
endfunction;
// Main
alphas_list = list ();
betas_list = list ();
for i = 0: MAX_AR_LEVEL,
for j = 0: MAX_MA_LEVEL,
betas = ar (x, i, j);
alphas = ma (x, i, j, betas);
alphas_list ($+1) = alphas;
betas_list ($+1) = betas;
printf ("ARMA (" + INT_FORMAT + "," + INT_FORMAT + ") \n", i, j);
if (image (alphas)) then
printf ("Model does not exist. \n");
continue;
end;
if (~stable (betas)) then
printf ("Model exists, but not stable. \n");
continue;
end;
printf ("alpha: \n")
printMat (alphas, FLOAT_FORMAT);
printf ("beta: \n");
printMat (betas, FLOAT_FORMAT);
end;
end;
// 3. Models Analysis
// Theoretical correlation function for ARMA model
function R = theoretical_corr (betas, startR, k)
nm = length (startR) - 1;
k = abs (k);
if (k > nm) then
R = 0;
M = length (betas);
for j = 1: M,
R = R + betas (j) * theoretical_corr (betas, startR, k - j);
end;
else
R = startR (k + 1);
end;
endfunction;
// Normalized theoretical correlation function for ARMA model
function r = norm_theoretical_corr (betas, startR, k)
r = theoretical_corr (betas, startR, k) / theoretical_corr (betas, startR, 0);
endfunction;
// Quadratic Error
function epsilon = quadratic_error (x, y)
epsilon = 0;
m = min (length (x), length (y));
for j = 1: m,
epsilon = epsilon + (x (j) - y (j)) ^2;
end;
endfunction;
function corrplot2 (betas, R, N, M, m_)
p. thickness = 6;
m = m_;
t = [-m: m];
y = zeros (length (t), 1);
for i = 1: length (t),
y (i) = norm_theoretical_corr (betas, R (1: N + M + 1), t (i));
end;
plot2d3 (t, y, axesflag=5, style=2);
a = gca ();
p = a. children. children;
p. thickness = 3;
p. mark_mode = "on";
p. mark_size_unit = "point";
p. mark_style = 11;
p. mark_size = 3;
endfunction;
function eta = imitate (alphas, betas, meanx, count)
defect = 1000;
eta = zeros (count + defect + 1, 1);
ksi = grand (count + defect + 1, 1, 'nor', 0, 1);
N = length (alphas) - 1;
M = length (betas);
for k = 1: count + defect + 1,eta (k) = 0;
for i = 0: N,
if (k - i > 0) then
eta (k) = eta (k) + alphas (i+1) * ksi (k - i);
end;
end;
for j = 1: M,
if (k - j > 0) then
eta (k) = eta (k) + betas (j) * eta (k - j);
end;
end;
end;
eta = eta (defect + 2: count + defect + 1) + meanx;
endfunction;
m = 10; // Analysis Depth
epsilon = zeros (MAX_AR_LEVEL, MAX_MA_LEVEL);
best_ar_eps = %inf;
best_ma_eps = %inf;
best_arma_eps = %inf;
best_ar_alpha = [];
best_ma_alpha = [];
best_arma_alpha = [];
best_ar_beta = [];
best_arma_beta = [];
R = zeros (m+1, 1);
r = zeros (m+1, 1);
for k = 0: m,
R (k+1) = correlation (k, x);
r (k+1) = R (k+1) / R (1);
end;
r_model = zeros (m+1, 1);
for i = 0: MAX_AR_LEVEL,
for j = 0: MAX_MA_LEVEL,
alphas = alphas_list (i * (MAX_MA_LEVEL + 1) + j + 1);
betas = betas_list (i * (MAX_MA_LEVEL + 1) + j + 1);
for k = 0: m,
r_model (k+1) = norm_theoretical_corr (betas, R (1: (i + j + 1)), k);
end;
epsilon (i+1, j+1) = quadratic_error (r, r_model);
if (i == 0) & (epsilon (1, j+1) < best_ma_eps) then
best_ma_eps = epsilon (1, j+1);
best_ma_alpha = alphas;
elseif (j == 0) & (epsilon (i+1, 1) < best_ar_eps) then
best_ar_eps = epsilon (i+1, 1);
best_ar_alpha = alphas;
best_ar_beta = betas;
elseif (epsilon (i+1, j+1) < best_arma_eps) then
best_arma_eps = epsilon (i+1, j+1);
best_arma_alpha = alphas;
best_arma_beta = betas;
end;
end;
end;
printf ("Epsilon: \n");
printMat (epsilon, FLOAT_FORMAT);
printf ("Best models: \nAR (" + INT_FORMAT + "), MA (" + INT_FORMAT + "), ARMA (" + INT_FORMAT + "," + INT_FORMAT + "). \n", length (best_ar_beta), length (best_ma_alpha) - 1, length (best_arma_beta), length (best_arma_alpha) - 1);
scf (2);
corrplot2 (best_ar_beta, R, length (best_ar_beta), 0, m);
scf (3);
corrplot2 ([], R, 0, length (best_ma_alpha) - 1, m);
scf (4);
corrplot2 (best_arma_beta, R, length (best_arma_beta), length (best_arma_alpha) - 1, m);
eta_ar = imitate (best_ar_alpha, best_ar_beta, meanx, IMITATION_LENGTH);
eta_ma = imitate (best_ma_alpha, [], meanx, IMITATION_LENGTH);
eta_arma = imitate (best_arma_alpha, best_arma_beta, meanx, IMITATION_LENGTH);
r_ar = zeros (m+1, 1);
r_ma = zeros (m+1, 1);
r_arma = zeros (m+1, 1);
r_ar_imit = zeros (m+1, 1);
r_ma_imit = zeros (m+1, 1);
r_arma_imit = zeros (m+1, 1);
for k = 0: m,
r_ar (k + 1) = norm_theoretical_corr (best_ar_beta, R (1: length (best_ar_beta) + 1), k);
r_ma (k + 1) = norm_theoretical_corr ([], R (1: length (best_ma_alpha)), k);
r_arma (k + 1) = norm_theoretical_corr (best_arma_beta, R (1: length (best_arma_alpha) + length (best_arma_beta)), k);
r_ar_imit (k + 1) = ncorrelation (k, eta_ar);
r_ma_imit (k + 1) = ncorrelation (k, eta_ma);
r_arma_imit (k + 1) = ncorrelation (k, eta_arma);
end;
scf (5);
plot2d ([0: m], [r r_ar r_ar_imit], style= [5 3 2], axesflag=5, leg="Source@AR (" + string (length (best_ar_beta)) + ") @Imitation");
scf (6);
plot2d ([0: m], [r r_ma r_ma_imit], style= [5 3 2], axesflag=5, leg="Source@MA (" + string (length (best_ma_alpha) - 1) + ") @Imitation");
scf (7);
plot2d ([0: m], [r r_arma r_arma_imit], style= [5 3 2], axesflag=5, leg="Source@ARMA (" + string (length (best_arma_beta)) + "," + string (length (best_arma_alpha) - 1) + ") @Imitation");
// 4. Power Spectral Density
// Power Spectral Density
function Fi = pow_spec_dens_arma (omega, alphas, betas)
s_up = 0;
for k = 0: length (alphas) - 1,s_up = s_up + alphas (k+1) * exp (%i * k * omega);
end;
s_down = 1;
for k = 1: length (betas),
s_down = s_down - betas (k) * exp (%i * k * omega);
end;
Fi = abs (s_up / s_down) ^2;
endfunction;
function Fi = pow_spec_dens (omega, R)
Fi = R (1);
for k = 1: length (R) - 1,Fi = Fi + 2 * R (k + 1) * cos (omega * k);
end;
endfunction;
// Power Spectral Density Plot
function densplot (alphas, betas, R, R_imit)
omega = [0: 0.01: %pi];
len = length (omega);
dens = zeros (len, 1);
dens_source = zeros (len, 1);
dens_imit = zeros (len, 1);
for j = 1: len,
dens (j) = pow_spec_dens_arma (omega (j), alphas, betas) / R (1);
dens_source (j) = pow_spec_dens (omega (j), R) / R (1);
dens_imit (j) = pow_spec_dens (omega (j), R_imit) / R_imit (1);
end;
str = "";
if (length (alphas) == 1) then
str = "AR (" + string (length (betas)) + ")";
elseif (length (betas) == 0) then
str = "MA (" + string (length (alphas) - 1) + ")";
else
str = "ARMA (" + string (length (betas)) + "," + string (length (alphas) - 1) + ")";
end;
plot2d (omega, [dens_source dens dens_imit], style= [5 3 2], axesflag=5, leg="Source@" + str + "@Imitation");
endfunction;
perc = 0.01;
R_50 = zeros (perc * length (x), 1);
R_ar_imit_50 = zeros (perc * length (x), 1);
R_ma_imit_50 = zeros (perc * length (x), 1);
R_arma_imit_50 = zeros (perc * length (x), 1);
for k = 0: length (R_50) - 1,R_50 (k+1) = correlation (k, x);
R_ar_imit_50 (k+1) = correlation (k, eta_ar);
R_ma_imit_50 (k+1) = correlation (k, eta_ma);
R_arma_imit_50 (k+1) = correlation (k, eta_arma);
end;
scf (8);
densplot (best_ar_alpha, best_ar_beta, R_50, R_ar_imit_50);
scf (9);
densplot (best_ma_alpha, [], R_50, R_ma_imit_50);
scf (10);
densplot (best_arma_alpha, best_arma_beta, R_50, R_arma_imit_50);
// 5. Imitation
function imitation_plot (x, imitation, meanx, sv)
t = [1: 100];
q = [x (t) imitation (t) (zeros (length (t), 1) + meanx) (zeros (length (t), 1) + meanx + sqrt (sv)) (zeros (length (t), 1) + meanx - sqrt (sv))];
plot2d (t, q, style= [5 2 4 3 3], axesflag=5, leg="Source@Imitation@Mean@Standard deviation");
endfunction;
best_alphas = [];
best_betas = [];
if (best_ar_eps < best_ma_eps) then
if (best_ar_eps < best_arma_eps) then
best_alphas = best_ar_alpha;
best_betas = best_ar_beta;
else
best_alphas = best_arma_alpha;
best_betas = best_arma_beta;
end;
else
if (best_ma_eps < best_arma_eps) then
best_alphas = best_ma_alpha;
best_betas = best_ma_beta;
else
best_alphas = best_arma_alpha;
best_betas = best_arma_beta;
end;
end;
printf ("Best model: ARMA (" + INT_FORMAT + "," + INT_FORMAT + ") \n", length (best_betas), length (best_alphas) - 1);
for i = 1: length (r_model),
r_model (i) = norm_theoretical_corr (best_betas, R (1: (length (best_betas) + length (best_alphas))), i-1);
end;
imitation = imitate (best_alphas, best_betas, meanx, IMITATION_LENGTH);
scf (11);
imitation_plot (x, imitation, meanx, svx);
// 6. Imitation Analysis
function total_sample_analysis (x)
m = 10;
R = zeros (m + 1, 1);
R_src = zeros (m + 1, 1);
for k = 0: m,
R (k + 1) = correlation (k, x);
end;
printf ("Minimum: " + FLOAT_FORMAT + "\n", min (x));
printf ("Maximum: " + FLOAT_FORMAT + "\n", max (x));
printf ("Mean: " + FLOAT_FORMAT + "\n", mean (x));
printf ("Variance: " + FLOAT_FORMAT + "\n", R (1));
printf ("Standard devation: " + FLOAT_FORMAT + "\n", sqrt (R (1)));
printf ("Normalized correlation function: \n");
printMat (R / R (1), FLOAT_FORMAT);
printf ("Epsilon: " + FLOAT_FORMAT + "\n", quadratic_error (R / R (1), r));
endfunction;
function total_model_analysis (alphas, betas, R)
R_model = zeros (length (R), 1);
for k = 0: m,
R_model (k + 1) = theoretical_corr (betas, R (1: length (alphas) + length (betas)), k);
end;
printf ("Mean: " + FLOAT_FORMAT + "\n", meanx);
printf ("Variance: " + FLOAT_FORMAT + "\n", R_model (1));
printf ("Standard devation: " + FLOAT_FORMAT + "\n", sqrt (R_model (1)));
printf ("Normalized correlation function: \n");
printMat (R_model / R_model (1), FLOAT_FORMAT);
printf ("Epsilon: " + FLOAT_FORMAT + "\n", quadratic_error (R_model / R_model (1), r));
endfunction;
mean_imit = mean (imitation);
var_imit = variance (imitation);
m = 10;
r_imit = zeros (m, 1);
for k = 0: m,
r_imit (k+1) = ncorrelation (k, imitation);
end;
printf ("Imitation mean: " + FLOAT_FORMAT + "\n", mean_imit);
printf ("Imitation variance: " + FLOAT_FORMAT + "\n", var_imit);
printf ("Imitation normalized correlation function: \n");
printMat (r_imit, FLOAT_FORMAT);
printf ("ARMA model theoretical correlation function: \n");
printMat (r_model, FLOAT_FORMAT);
printf ("\nTotal table\n");
printf ("\nSource\n");
total_sample_analysis (x);
printf ("\nAR (" + INT_FORMAT + ") \n", length (best_ar_beta));
printf ("Theory\n");
total_model_analysis (best_ar_alpha, best_ar_beta, R);
printf ("Sample\n");
total_sample_analysis (eta_ar);
printf ("\nMA (" + INT_FORMAT + ") \n", length (best_ma_alpha) - 1);
printf ("Theory\n");
total_model_analysis (best_ma_alpha, [], R);
printf ("Sample\n");
total_sample_analysis (eta_ma);
printf ("\nARMA (" + INT_FORMAT + "," + INT_FORMAT + ") \n", length (best_arma_beta), length (best_arma_alpha) - 1);
printf ("Theory\n");
total_model_analysis (best_arma_alpha, best_arma_beta, R);
printf ("Sample\n");
total_sample_analysis (eta_arma);
Размещено на Allbest.ru
Подобные документы
Заданный стационарным временным рядом случайный процесс, способы его моделирования посредством применения авторегрессии. Оценка эффективности использования двух способов нахождения оценок параметров модели. Модели авторегрессии скользящего среднего.
курсовая работа [1,0 M], добавлен 27.04.2015Приведена оптимизация расходов и трудозатрат персонала. Реализация модели ARIMA (модели Бокса-Дженкинса), являющейся интегрированной композицией метода авторегрессии и модели скользящего среднего. Применение средств программного продукта Matlab 2013a.
дипломная работа [876,7 K], добавлен 19.09.2019Методика моделирования случайного процесса по заданной корреляционной функции и математическому ожиданию с использованием MatLab. Вычисление передаточной функций формирующего фильтра. Реализация случайного процесса. Значения корреляционной функции.
контрольная работа [1012,0 K], добавлен 23.12.2012Программные средства системного моделирования. Разработка программы процесса работы кладовой на фабрике с использованием языка имитационного моделирования GPSS. Сравнение результатов моделирующего алгоритма и аналитического расчета характеристик.
дипломная работа [757,1 K], добавлен 21.06.2011"Наивная" модель прогнозирования. Прогнозирование методом среднего и скользящего среднего. Метод опорных векторов, деревьев решений, ассоциативных правил, системы рассуждений на основе аналогичных случаев, декомпозиции временного ряда и кластеризации.
курсовая работа [2,6 M], добавлен 02.12.2014Изучение программы интегрированной компьютеризации производства. Моделирование процесса "Производство солнечных батарей". Статистический анализ процесса на основе информационных технологий. Оценка описательных статистик. Анализ стабильности процесса.
курсовая работа [5,6 M], добавлен 10.04.2017Формализация как важнейший этап моделирования. Методы описания и свойства моделей. Адекватность проекта целям моделирования. Основные принципы и значение формализации. Исследование на компьютере информационных моделей из различных предметных областей.
презентация [1,2 M], добавлен 24.01.2011Стадии процесса моделирования. Функция распределения непрерывной случайной величины. Методы моделирования (обратной функции, суперпозиции, исключения). Нормальные случайные величины. Метод Монте-Карло, точки равновесия. Моделирование динамических систем.
курсовая работа [1,2 M], добавлен 06.08.2013Моделирование процесса в нотациях IDEF, EPC, BPMN и в соответствии с требованиями ГОСТ 19.701-90. Описание предметной области. Формальное описание алгоритмов. Модель EPC, BPMN. Моделирование данных в нотации IDEF1X. Эффективность реинжиниринга процесса.
курсовая работа [1,2 M], добавлен 20.06.2015Моделирование бизнес-процессов как средство поиска путей оптимизации деятельности компании. Методология SADT (структурный анализ и проектирование), семейство стандартов IDEF и алгоритмические языки в основе методологий моделирования бизнес-процессов.
реферат [21,7 K], добавлен 14.12.2011