Параметры
процесса
|
Исходный
процесс
|
АР (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
|
Нормированная
корреляционная функция
|
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.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_FILE_NAME = 'D: \temp\source.
txt'; // File contains input data_FORMAT = '%16.4f'; // Floating point values
representation format_FORMAT = '%d'; // Decimal integer values representation
format= 1.0E-6; // Precision_AR_LEVEL = 3;_MA_LEVEL = 3;_LENGTH = 5000;
// Input data= fscanfMat (SOURCE_FILE_NAME); //
Sample= length (x); // Sample size
// HelpersprintMat (M, mformat),
[n, m] = size (M);i = 1: n,j = 1: m,(mformat +
"", M (i, j));;("\n");;;
// 1. Moment functions
// Correlation function esimationR = correlation
(k, x)(k < 0),= - k;;= 0.0;= length (x);= mean (x);i = 1: (n-k),= R + (x (i)
- meanx) * (x (i+k) - meanx);;
R = R / (n - k - 1);;
// Normalized correlation functionr =
ncorrelation (k, x)= correlation (k, x) / correlation (0, x);;
// Correlation distanceT = corrdist (x)= 0.01;=
coefficient * length (x) - 2;
em1 = exp (-1);(T >= 0) & (abs
(ncorrelation (T, x)) < em1),= T - 1;
end;= T + 1;;
// Drawing normalized correlation function
plotcorrplot (). thickness = 6;= 10;= [-m: m];= zeros (length (t), 1);i = 1:
length (t),(i) = ncorrelation (t (i), x);;d3 (t, y, axesflag=5, style=2);= gca
();= a. children. children;. thickness = 3;. mark_mode = "on";.
mark_size_unit = "point";
p. mark_style = 11;. mark_size = 3;
endfunction;
// Main= mean (x); // Sample mean= variance (x);
// Sample variance= 10; // Correlation values count
R = zeros (m, 1);= zeros (m, 1);
for i = 0: m,(i+1) = correlation (i, x);(i+1) =
ncorrelation (i, x);;= corrdist (x);("Sample mean: " + FLOAT_FORMAT +
"\n", meanx);("Sample variance: " + FLOAT_FORMAT +
"\n", svx);("Correlation function estimation: \n");(R,
FLOAT_FORMAT);("Normalized correlation function estimation: \n");(r,
FLOAT_FORMAT);("Correlation distance: " + INT_FORMAT +
"\n", Tcorr);(1);();
// 2. Models building
// Autoregression coefficients search
function betas = ar (x, arLevel, maLevel)= zeros
(2 * arLevel, 1);i = (maLevel - arLevel + 1): (maLevel + arLevel),(i - maLevel
+ arLevel) = correlation (i, x);;= zeros (arLevel, arLevel);
_n = maLevel;i = 1: arLevel,
_m = _n;j = 1: arLevel,(i, j) = R (_m - maLevel +
arLevel);
_m = _m - 1;;
_n = _n + 1;;
Rm = - R (arLevel + 1: 2 * arLevel);= linsolve
(Rmm, Rm);
endfunction;
// Mutual Correlation Functionrrr = mcorrelation
(k, alph, betas)
rrr = alph (k+1);= min (k, length (betas));
for j = 1: len,= rrr + betas (j) * mcorrelation
(k - j, alph);;;
// Moving average coefficients searchalphas = ma
(x, arLevel, maLevel, betas)i = 0: max ([arLevel, maLevel]),(i+1) = correlation
(i, x);;zr = syst (alph)k = 0: maLevel,(k+1) = - R (k+1);i = k: maLevel,(k+1) =
zr (k+1) + alph (i+1) * mcorrelation (i - k, alph, betas);;j = 1: arLevel,(k+1)
= zr (k+1) + betas (j) * R (abs (k - j) + 1);;;;
[alphas, values, info] = fsolve ([1:
(maLevel+1)], syst);i = 1: length (values),(abs (values (i)) > EPSILON |
info == 4) then(1) = %i;;;;;
// Image vectors = image (v)= %F;i = 1: length
(v),(imag (v (i)) <> 0) then= %T;;;;;
// Model stabilitys = stable (betas)= poly
([pertrans (-betas) 1], "z", "coeff");= roots (p);= %T;i =
1: length (z),(abs (z (i)) >= 1) then= %F;;;;;
// Main_list = list ();_list = list ();i = 0:
MAX_AR_LEVEL,j = 0: MAX_MA_LEVEL,
betas = ar (x, i, j);
alphas = ma (x, i, j, betas);_list ($+1) =
alphas;_list ($+1) = betas;("ARMA (" + INT_FORMAT + "," +
INT_FORMAT + ") \n", i, j);(image (alphas)) then("Model does not
exist. \n");;;(~stable (betas)) then("Model exists, but not stable.
\n");;;("alpha: \n")(alphas, FLOAT_FORMAT);("beta: \n");(betas,
FLOAT_FORMAT);;;
// 3. Models Analysis
R = R + betas (j) * theoretical_corr (betas,
startR, k - j);
end;= startR (k + 1);;;
// Normalized theoretical correlation function
for ARMA modelr = norm_theoretical_corr (betas, startR, k)= theoretical_corr
(betas, startR, k) / theoretical_corr (betas, startR, 0);;
// Quadratic Errorepsilon = quadratic_error (x,
y)= 0;= min (length (x), length (y));j = 1: m,
epsilon = epsilon + (x (j) - y (j)) ^2;
end;;corrplot2 (betas, R, N, M, m_). thickness =
6;= m_;= [-m: m];= zeros (length (t), 1);i = 1: length (t),
y (i) = norm_theoretical_corr (betas, R (1: N + M
+ 1), t (i));
end;d3 (t, y, axesflag=5, style=2);= gca ();= a.
children. children;. thickness = 3;. mark_mode = "on";.
mark_size_unit = "point";
p. mark_style = 11;. mark_size = 3;
endfunction;eta = imitate (alphas, betas, meanx,
count)
defect = 1000;= zeros (count + defect + 1, 1);
ksi = grand (count + defect + 1, 1, 'nor', 0,
1);= length (alphas) - 1;= length (betas);k = 1: count + defect + 1,eta (k) =
0;i = 0: N,(k - i > 0) then(k) = eta (k) + alphas (i+1) * ksi (k - i);;;j =
1: M,(k - j > 0) then(k) = eta (k) + betas (j) * eta (k - j);;;;= eta
(defect + 2: count + defect + 1) + meanx;;= 10; // Analysis Depth= zeros
(MAX_AR_LEVEL, MAX_MA_LEVEL);_ar_eps = %inf;_ma_eps = %inf;_arma_eps =
%inf;_ar_alpha = [];_ma_alpha = [];
best_arma_alpha = [];_ar_beta = [];_arma_beta =
[];= zeros (m+1, 1);= zeros (m+1, 1);k = 0: m,(k+1) = correlation (k, x);(k+1)
= R (k+1) / R (1);;_model = zeros (m+1, 1);
for i = 0: MAX_AR_LEVEL,j = 0: MAX_MA_LEVEL,=
alphas_list (i * (MAX_MA_LEVEL + 1) + j + 1);= betas_list (i * (MAX_MA_LEVEL +
1) + j + 1);k = 0: m,
r_model (k+1) = norm_theoretical_corr (betas, R
(1: (i + j + 1)), k);
end;(i+1, j+1) = quadratic_error (r, r_model);(i
== 0) & (epsilon (1, j+1) < best_ma_eps) then_ma_eps = epsilon (1,
j+1);_ma_alpha = alphas;(j == 0) & (epsilon (i+1, 1) < best_ar_eps)
then_ar_eps = epsilon (i+1, 1);_ar_alpha = alphas;_ar_beta = betas;(epsilon
(i+1, j+1) < best_arma_eps) then_arma_eps = epsilon (i+1, j+1);_arma_alpha =
alphas;_arma_beta = betas;;;;("Epsilon: \n");(epsilon,
FLOAT_FORMAT);("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);(2);(best_ar_beta, R,
length (best_ar_beta), 0, m);(3);([], R, 0, length (best_ma_alpha) - 1,
m);(4);(best_arma_beta, R, length (best_arma_beta), length (best_arma_alpha) -
1, m);_ar = imitate (best_ar_alpha, best_ar_beta, meanx, IMITATION_LENGTH);_ma
= imitate (best_ma_alpha, [], meanx, IMITATION_LENGTH);
eta_arma = imitate (best_arma_alpha,
best_arma_beta, meanx, IMITATION_LENGTH);_ar = zeros (m+1, 1);_ma = zeros (m+1,
1);_arma = zeros (m+1, 1);_ar_imit = zeros (m+1, 1);_ma_imit = zeros (m+1,
1);_arma_imit = zeros (m+1, 1);k = 0: m,_ar (k + 1) = norm_theoretical_corr
(best_ar_beta, R (1: length (best_ar_beta) + 1), k);_ma (k + 1) =
norm_theoretical_corr ([], R (1: length (best_ma_alpha)), k);_arma (k + 1) =
norm_theoretical_corr (best_arma_beta, R (1: length (best_arma_alpha) + length
(best_arma_beta)), k);_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;(5);d ([0: m], [r r_ar r_ar_imit], style= [5
3 2], axesflag=5, leg="Source@AR (" + string (length (best_ar_beta))
+ ") @Imitation");(6);d ([0: m], [r r_ma r_ma_imit], style= [5 3 2],
axesflag=5, leg="Source@MA (" + string (length (best_ma_alpha) - 1) +
") @Imitation");(7);d ([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 DensityFi = pow_spec_dens_arma
(omega, alphas, betas)_up = 0;k = 0: length (alphas) - 1,s_up = s_up + alphas
(k+1) * exp (%i * k * omega);;_down = 1;k = 1: length (betas),_down = s_down -
betas (k) * exp (%i * k * omega);;= abs (s_up / s_down) ^2;;Fi = pow_spec_dens
(omega, R)
Fi = R (1);k = 1: length (R) - 1,Fi = Fi + 2 * R
(k + 1) * cos (omega * k);
end;;
// Power Spectral Density Plotdensplot (alphas,
betas, R, R_imit)= [0: 0.01: %pi];= length (omega);
dens = zeros (len, 1);_source = zeros (len,
1);_imit = zeros (len, 1);
for j = 1: len,(j) = pow_spec_dens_arma (omega
(j), alphas, betas) / R (1);_source (j) = pow_spec_dens (omega (j), R) / R (1);_imit
(j) = pow_spec_dens (omega (j), R_imit) / R_imit (1);
end;= "";(length (alphas) == 1) then=
"AR (" + string (length (betas)) + ")";(length (betas) ==
0) then= "MA (" + string (length (alphas) - 1) + ")";=
"ARMA (" + string (length (betas)) + "," + string (length
(alphas) - 1) + ")";;d (omega, [dens_source dens dens_imit], style=
[5 3 2], axesflag=5, leg="Source@" + str + "@Imitation");;=
0.01;_50 = zeros (perc * length (x), 1);
R_ar_imit_50 = zeros (perc * length (x),
1);_ma_imit_50 = zeros (perc * length (x), 1);_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);_ma_imit_50 (k+1) = correlation (k, eta_ma);_arma_imit_50 (k+1) =
correlation (k, eta_arma);;(8);(best_ar_alpha, best_ar_beta, R_50,
R_ar_imit_50);(9);(best_ma_alpha, [], R_50,
R_ma_imit_50);(10);(best_arma_alpha, best_arma_beta, R_50, R_arma_imit_50);
// 5. Imitationimitation_plot (x, imitation,
meanx, sv)= [1: 100];= [x (t) imitation (t) (zeros (length (t), 1) + meanx)
(zeros (length (t), 1) + meanx + sqrt (sv)) (zeros (length (t), 1) + meanx -
sqrt (sv))];d (t, q, style= [5 2 4 3 3], axesflag=5,
leg="Source@Imitation@Mean@Standard deviation");;_alphas = [];_betas
= [];(best_ar_eps < best_ma_eps) then(best_ar_eps < best_arma_eps)
then_alphas = best_ar_alpha;
best_betas = best_ar_beta;
else_alphas = best_arma_alpha;
best_betas = best_arma_beta;
end;(best_ma_eps < best_arma_eps) then_alphas
= best_ma_alpha;
best_betas = best_ma_beta;
else_alphas = best_arma_alpha;
best_betas = best_arma_beta;
end;;("Best model: ARMA (" + INT_FORMAT
+ "," + INT_FORMAT + ") \n", length (best_betas), length
(best_alphas) - 1);i = 1: length (r_model),_model (i) = norm_theoretical_corr
(best_betas, R (1: (length (best_betas) + length (best_alphas))), i-1);;=
imitate (best_alphas, best_betas, meanx, IMITATION_LENGTH);(11);_plot (x,
imitation, meanx, svx);
// 6. Imitation Analysistotal_sample_analysis (x)
m = 10;= zeros (m + 1, 1);_src = zeros (m + 1,
1);
for k = 0: m,(k + 1) = correlation (k,
x);;("Minimum: " + FLOAT_FORMAT + "\n", min
(x));("Maximum: " + FLOAT_FORMAT + "\n", max
(x));("Mean: " + FLOAT_FORMAT + "\n", mean
(x));("Variance: " + FLOAT_FORMAT + "\n", R
(1));("Standard devation: " + FLOAT_FORMAT + "\n", sqrt (R
(1)));("Normalized correlation function: \n");
printMat (R / R (1),
FLOAT_FORMAT);("Epsilon: " + FLOAT_FORMAT + "\n",
quadratic_error (R / R (1), r));
endfunction;total_model_analysis (alphas, betas,
R)
R_model = zeros (length (R), 1);
for k = 0: m,_model (k + 1) = theoretical_corr
(betas, R (1: length (alphas) + length (betas)), k);;("Mean: " +
FLOAT_FORMAT + "\n", meanx);("Variance: " + FLOAT_FORMAT +
"\n", R_model (1));("Standard devation: " + FLOAT_FORMAT +
"\n", sqrt (R_model (1)));("Normalized correlation function:
\n");(R_model / R_model (1), FLOAT_FORMAT);
printf ("Epsilon: " + FLOAT_FORMAT +
"\n", quadratic_error (R_model / R_model (1), r));
endfunction;_imit = mean (imitation);
var_imit = variance (imitation);= 10;_imit =
zeros (m, 1);
for k = 0: m,_imit (k+1) = ncorrelation (k,
imitation);;("Imitation mean: " + FLOAT_FORMAT + "\n",
mean_imit);("Imitation variance: " + FLOAT_FORMAT + "\n",
var_imit);("Imitation normalized correlation function: \n");(r_imit,
FLOAT_FORMAT);("ARMA model theoretical correlation function:
\n");(r_model, FLOAT_FORMAT);("\nTotal
table\n");("\nSource\n");_sample_analysis (x);("\nAR
(" + INT_FORMAT + ") \n", length
(best_ar_beta));("Theory\n");_model_analysis (best_ar_alpha,
best_ar_beta, R);("Sample\n");_sample_analysis (eta_ar);("\nMA
(" + INT_FORMAT + ") \n", length (best_ma_alpha) -
1);("Theory\n");_model_analysis (best_ma_alpha, [], R);
printf ("Sample\n");_sample_analysis
(eta_ma);
printf ("\nARMA (" + INT_FORMAT +
"," + INT_FORMAT + ") \n", length (best_arma_beta), length
(best_arma_alpha) - 1);("Theory\n");_model_analysis (best_arma_alpha,
best_arma_beta, R);("Sample\n");_sample_analysis (eta_arma);