Оценка случайного параметра модели пространства состояний

Этот пример показывает, как оценить случайный, авторегрессивный коэффициент состояния в модели пространства состояний. То есть этот пример принимает байесовское представление оценки параметра модели пространства состояний с помощью метода оценки «zig-zag».

Предположим, что два состояния (x1,t и x2,t) представляют чистые экспорты двух стран на конец года.

  • x1,t является модуль корневым процессом с нарушением порядка отклонения из σ12.

  • x2,t является процессом AR (1) с неизвестным, случайным коэффициентом и отклонением нарушения порядка σ22.

  • Наблюдение (yt) - точная сумма двух чистых экспортов. То есть чистые экспорты отдельных состояний неизвестны.

Символически истинная модель пространства состояний

x1,t=x1,t-1+σ1u1,tx2,t=ϕx2,t-1+σ2u2,tyt=x1,t+x2,t

Моделирование данных

Моделирование 100-летних чистых экспортов из:

  • Корневой процесс модуля со средним нулем, Гауссов шумовой ряд, который имеет отклонение 0.12.

  • Процесс AR (1) с авторегрессионным коэффициентом 0,6 и средним нулем, ряд Гауссова шума, который имеет отклонение0.22.

  • x1,0=x2,0=0.

  • Создайте серию наблюдений, суммируя два чистых экспорта в год.

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');

Figure contains an axes. The axes contains 3 objects of type line. These objects represent x_1, x_2, y.

Метод оценки Зиг-Зага

Обработка ϕ как будто он неизвестен и случайен, и используйте метод zig-zag, чтобы восстановить его распределение. Для реализации метода zig-zag:

1. Выберите начальное значение для ϕ в интервале (-1,1), и обозначить его ϕz.

2. Создайте истинную модель пространства состояний, то есть ssm объект модели, который представляет процесс генерации данных.

3. Используйте более плавную симуляцию (simsmooth), чтобы нарисовать случайный путь из распределения вторых сглаженных состояний. Символически, x2,z,tP(x2,t|yt,x1,t,ϕ=ϕz).

4. Создайте другую модель пространства состояний, которая имеет эту форму

ϕz,t=ϕz,t-1x2,z,t=x2,z,t-1ϕz,t+0.8u2,t

На словах, ϕz,t является статическим состоянием и x2,z,t - «наблюдаемый» ряд с изменяющимся во времени коэффициентом Ct=x2,z,t-1.

5. Используйте более плавную симуляцию, чтобы нарисовать случайный путь из распределения сглаженных ϕz,t серия. Символически, ϕz,tP(ϕ|x2,z,t), где x2,z,t охватывает структуру истинной модели пространства состояний и наблюдений. ϕz,t является статическим, поэтому можно просто зарезервировать одно значение (ϕz).

6. Повторите шаги 2-5 много раз и храните ϕz каждую итерацию.

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 объект модели. The NaN действует как заполнитель для ϕ.

Повторите шаги 2-5 зигзагообразного способа.

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

Figure contains 3 axes. Axes 1 with title Trace Plot for \phi contains an object of type line. Axes 2 with title Trace Plot for \phi contains an object of type line. Axes 3 with title Trace Plot for \phi contains an object of type line.

Согласно первому графику, переходные эффекты гибнут после примерно 20 розыгрышей. Поэтому короткого периода ожога должно быть достаточно. График всей симуляции показывает, что серия оседает вокруг центра.

Постройте график автокорреляционной функции ряда после удаления первых 20 рисунок.

burnOut = 21:Z;

figure;
autocorr(phiz(burnOut));

Figure contains an axes. The axes with title Sample Autocorrelation Function contains 4 objects of type stem, line.

Автокорреляционная функция вымирает довольно быстро. Похоже, что автокорреляция в цепь - это не проблема.

Определите качества апостериорного распределения ϕ путем вычисления статистики симуляции и путем построения гистограммы уменьшенного набора случайных рисунков.

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;

Figure contains an axes. The axes contains 6 objects of type histogram, line. These objects represent Simulation Mean, True Mean, 95% CI.

Апостериорное распределение ϕ является примерно нормальным со средним и стандартным отклонениями приблизительно 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 of ϕ составляет 0,54. Обе оценки находятся в пределах одного стандартного отклонения или стандартной ошибки от истинного значения ϕ.

См. также

| | | |

Похожие примеры

Подробнее о