В этом примере показано, как оценить случайный авторегрессионный коэффициент состояния в модели состояния-пространства. То есть этот пример принимает байесовский вид оценки параметров модели состояния-пространства с использованием метода оценки «зиг-заг».
Предположим, что два государства (t и t) представляют чистый экспорт двух стран на конец года.
t - единичный корневой процесс с дисперсией возмущений
t - процесс AR (1) с неизвестным, случайным коэффициентом и дисперсией возмущений, равной start22 .
Наблюдение () представляет собой точную сумму двух чистых экспортных поставок. То есть чистый экспорт отдельных государств неизвестен.
Символично, что истинная модель состояния-пространства
Смоделировать 100-летний чистый экспорт из:
Единичный корневой процесс со средним нулевым гауссовым шумовым рядом, имеющим дисперсию .
Процесс AR (1) с авторегрессивным коэффициентом 0,6 и средним нулевым гауссовым шумовым рядом, который имеет дисперсию 0,22.
.
Создайте серию наблюдений, суммируя два чистых экспорта в год.
rng(100); % For reproducibility T = 150; sigma1 = 0.1; sigma2 = 0.2; phi = 0.6; u1 = randn(T,1)*sigma1; x1 = cumsum(u1); Mdl2 = arima('AR',phi,'Variance',sigma2^2,'Constant',0); x2 = simulate(Mdl2,T,'Y0',0); y = x1 + x2; figure; plot([x1 x2 y]) legend('x_1','x_2','y','Location','Best'); ylabel('Net exports'); xlabel('Period');

Относитесь, как если бы это было неизвестно и случайно, и используйте метод zig-zag, чтобы восстановить его распределение. Для реализации метода zig-zag:
1. Выберите начальное значение для в интервале (-1,1) и обозначьте его .
2. Создайте истинную модель состояния-пространства, то есть ssm объект модели, представляющий процесс генерации данных.
3. Используйте сглаживание моделирования (simsmooth), чтобы нарисовать случайный путь из распределения вторых сглаженных состояний. Символически, ,
4. Создать другую модель пространства состояния, имеющую эту форму
В словах, t - статическое состояние, а , t - «наблюдаемый» ряд с изменяющимся во времени z, t-1.
5. Используйте симуляцию более гладкой, чтобы нарисовать случайный путь из распределения сглаженных рядов, t. Символично, , t»), , z, t охватывает структуру модели истинного состояния-пространства и . / z/t/является статическим, поэтому можно зарезервировать только одно значение (/z/).
6. Повторите шаги 2-5 много раз и сохраните (сохраняйте, сохраняйте) каждой итерации.
7. Выполните диагностические проверки серии моделирования. То есть конструировать:
Проследите графики, чтобы определить ожог в периоде и хорошо ли перемешивается цепь Маркова.
Автокорреляционные графики для определения того, сколько вытягиваний необходимо удалить, чтобы получить хорошо смешанную цепь Маркова.
8. Оставшаяся серия представляет собой розыгрыши из апостериорного распределения . Можно вычислить описательную статистику или построить гистограмму, чтобы определить качества распределения.
Укажите начальные значения, предварительно распределите и создайте истинную модель пространства состояния.
phi0 = -0.3; % Initial value of phi Z = 1000; % Number of times to iterate the zig-zag method phiz = [phi0; nan(Z,1)]; % Preallocate A = [1 0; 0 NaN]; B = [sigma1; sigma2]; C = [1 1]; Mdl = ssm(A,B,C,'StateType',[2; 0]);
Mdl - это ssm объект модели. NaN выступает в качестве местозаполнителя
Выполните итерацию шагов 2-5 метода zig-zag.
for j = 2:(Z + 1); % Draw a random path from smoothed x_2 series. xz = simsmooth(Mdl,y,'Params',phiz(j-1)); % The second column of xz is a draw from the posterior distribution of x_2. % Create the intermediate state-space model. Az = 1; Bz = 0; Cz = num2cell(xz((1:(end - 1)),2)); Dz = sigma2; Mdlz = ssm(Az,Bz,Cz,Dz,'StateType',2); % Draw a random path from the smoothed phiz series. phizvec = simsmooth(Mdlz,xz(2:end,2)); phiz(j) = phizvec(1); % phiz(j) is a draw from the posterior distribution of phi end
phiz является марковской цепью. Прежде чем анализировать апостериорное распределение, вы должны оценить, следует ли навязывать период ожога или тяжесть автокорреляции в цепи.
Нарисуйте график трассировки для первых 100, 500 и всех случайных розыгрышей.
vec = [100 500 Z]; figure; for j = 1:3; subplot(3,1,j) plot(phiz(1:vec(j))); title('Trace Plot for \phi'); xlabel('Simulation number'); axis tight; end

По первому сюжету переходные эффекты спадают примерно после 20 розыгрышей. Поэтому короткого периода горения должно хватить. График всего моделирования показывает, что серия располагается вокруг центра.
Постройте график автокорреляционной функции ряда после удаления первых 20 розыгрышей.
burnOut = 21:Z; figure; autocorr(phiz(burnOut));

Функция автокорреляции вымирает довольно быстро. Не похоже, что автокорреляция в цепи является проблемой.
Определите качества заднего распределения, вычисляя статистику моделирования и строя гистограмму уменьшенного набора случайных розыгрышей.
xbar = mean(phiz(burnOut))
xbar = 0.5104
xstd = std(phiz(burnOut))
xstd = 0.0988
ci = norminv([0.025,0.975],xbar,xstd); % 95% confidence interval figure; histogram(phiz(burnOut),'Normalization','pdf'); h = gca; hold on; simX = linspace(h.XLim(1),h.XLim(2),100); simPDF = normpdf(simX,xbar,xstd); plot(simX,simPDF,'k','LineWidth',2); h1 = plot([xbar xbar],h.YLim,'r','LineWidth',2); h2 = plot([0.6 0.6],h.YLim,'g','LineWidth',2); h3 = plot([ci(1) ci(1)],h.YLim,'--r',... [ci(2) ci(2)],h.YLim,'--r','LineWidth',2); legend([h1 h2 h3(1)],{'Simulation Mean','True Mean','95% CI'}); h.XTick = sort([h.XTick xbar]); h.XTickLabel{h.XTick == xbar} = xbar; h.XTickLabelRotation = 90;

Апостериорное распределение нормальное со средним и стандартным отклонением приблизительно 0,51 и 0,1 соответственно. Истинное среднее значение, 0,6, и оно меньше одного стандартного отклонения справа от среднего значения моделирования.
Вычислите максимальную оценку правдоподобия, То есть, рассматривайте фиксированный, но неизвестный параметр, а затем оцените Mdl с использованием фильтра Калмана и максимальной вероятности.
[~,estParams] = estimate(Mdl,y,phi0)
Method: Maximum likelihood (fminunc)
Sample size: 150
Logarithmic likelihood: -10.1434
Akaike info criterion: 22.2868
Bayesian info criterion: 25.2974
| Coeff Std Err t Stat Prob
-------------------------------------------------------
c(1) | 0.53590 0.19183 2.79360 0.00521
|
| Final State Std Dev t Stat Prob
x(1) | -0.85059 0.00000 -6.45811e+08 0
x(2) | 0.00454 0 Inf 0
estParams = 0.5359
Значение MLE, равное . Обе оценки находятся в пределах одного стандартного отклонения или стандартной ошибки от истинного значения
estimate | refine | simsmooth | simulate | ssm