прогноз

Класс: ssm

Предскажите состояния и наблюдения за моделями в пространстве состояний

Синтаксис

[Y,YMSE] = forecast(Mdl,numPeriods,Y0)
[Y,YMSE] = forecast(Mdl,numPeriods,Y0,Name,Value)
[Y,YMSE,X,XMSE] = forecast(___)

Описание

пример

[Y,YMSE] = forecast(Mdl,numPeriods,Y0) возвращает предсказанные наблюдения (Y) и их соответствующие отклонения (YMSE) от прогнозирования модели в пространстве состояний Mdl с помощью горизонта прогноза numPeriods и наблюдений в выборке Y0.

пример

[Y,YMSE] = forecast(Mdl,numPeriods,Y0,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value. Например, для моделей в пространстве состояний, которые включают компонент линейной регрессии в модель наблюдения, включайте данные о предикторе в выборке, данные о предикторе для горизонта прогноза и коэффициент регрессии.

пример

[Y,YMSE,X,XMSE] = forecast(___) использование любой из входных параметров в предыдущих синтаксисах, чтобы дополнительно возвратить прогнозы состояния (X) и их соответствующие отклонения (XMSE).

Входные параметры

развернуть все

Стандартная модель в пространстве состояний, заданная как объект модели ssm, возвращенный ssm или estimate.

Если Mdl не полностью задан (то есть, Mdl содержит неизвестные параметры), то задайте значения для неизвестных параметров с помощью аргумента пары "имя-значение" ' Params '. В противном случае программное обеспечение выдает ошибку. estimate возвращает полностью заданные модели в пространстве состояний.

Mdl не хранит наблюдаемые ответы или данные о предикторе. Снабдите данными везде, где необходимое использование соответствующего входа или аргументов пары "имя-значение".

Предскажите горизонт, заданный как положительное целое число. Таким образом, программное обеспечение возвращается 1.., прогнозы numPeriods.

Типы данных: double

В выборке, наблюдаемые ответы, заданные как вектор ячейки числовых векторов или матрицы.

  • Если Mdl независим от времени, то Y0 является T-by-n числовая матрица, где каждая строка соответствует периоду, и каждый столбец соответствует конкретному наблюдению в модели. Поэтому T является объемом выборки, и m является количеством наблюдений на период. Последняя строка Y содержит последние наблюдения.

  • Если Mdl время, отличаясь относительно уравнения наблюдения, то Y является T-by-1 вектор ячейки. Каждый элемент вектора ячейки соответствует периоду и содержит nt - размерный вектор наблюдений в течение того периода. Соответствующие размерности содействующих матриц в Mdl.C{t} и Mdl.D{t} должны быть сопоставимы с матрицей в Y{t} в течение всех периодов. Последняя ячейка Y содержит последние наблюдения.

Если Mdl является предполагаемой моделью в пространстве состояний (то есть, возвращенный estimate), то это - лучшая практика установить Y0 на тот же набор данных, что вы раньше соответствовали Mdl.

Элементы NaN указывают на недостающие наблюдения. Для получения дополнительной информации о том, как Фильтр Калмана размещает недостающие наблюдения, см. Алгоритмы.

Типы данных: double | cell

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Beta',beta,'Predictors',Z задает, чтобы выкачать наблюдения компонентом регрессии, состоявшим из данных о предикторе Z и матрица коэффициентов beta.

Горизонт прогноза, изменение состояния, содействующие матрицы, заданные как пара, разделенная запятой, состоящая из 'A' и вектор ячейки числовых матриц.

  • A должен содержать, по крайней мере, ячейки numPeriods. Каждая ячейка должна содержать матрицу, задающую как переход состояний в горизонте прогноза. Если длина A больше, чем numPeriods, то программное обеспечение использует первые ячейки numPeriods. Последняя ячейка указывает на последний период в горизонте прогноза.

  • Если Mdl независим от времени относительно состояний, то каждая ячейка A должна содержать m-by-m матрица, где m является количеством состояний в выборке на период. По умолчанию программное обеспечение использует Mdl.A в горизонте прогноза.

  • Если Mdl время, отличаясь относительно состояний, то размерности матриц в ячейках A могут отличаться, но размерности каждой матрицы должны быть сопоставимы с матрицами в B и C в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.A{end} в горизонте прогноза.

Примечание

Матрицы в A не могут содержать значения NaN.

Типы данных: cell

Горизонт прогноза, загрузка воздействия состояния, содействующие матрицы, заданные как пара, разделенная запятой, состоящая из 'B' и вектор ячейки матриц.

  • B должен содержать, по крайней мере, ячейки numPeriods. Каждая ячейка должна содержать матрицу, задающую как переход состояний в горизонте прогноза. Если длина B больше, чем numPeriods, то программное обеспечение использует первые ячейки numPeriods. Последняя ячейка указывает на последний период в горизонте прогноза.

  • Если Mdl независим от времени относительно состояний и воздействий состояния, то каждая ячейка B должна содержать m-by-k матрица, где m является количеством состояний в выборке на период, и k является количеством воздействий состояния, в выборке на период. По умолчанию программное обеспечение использует Mdl.B в горизонте прогноза.

  • Если Mdl время, отличаясь, то размерности матриц в ячейках B могут отличаться, но размерности каждой матрицы должны быть сопоставимы с матрицами в A в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.B{end} в горизонте прогноза.

Примечание

Матрицы в B не могут содержать значения NaN.

Типы данных: cell

Горизонт прогноза, чувствительность измерения, содействующие матрицы, заданные как пара, разделенная запятой, состоящая из 'C' и вектор ячейки матриц.

  • C должен содержать, по крайней мере, ячейки numPeriods. Каждая ячейка должна содержать матрицу, задающую как переход состояний в горизонте прогноза. Если длина C больше, чем numPeriods, то программное обеспечение использует первые ячейки numPeriods. Последняя ячейка указывает на последний период в горизонте прогноза.

  • Если Mdl независим от времени относительно состояний и наблюдений, то каждая ячейка C должна содержать n-by-m матрица, где n является количеством наблюдений в выборке на период, и m является количеством состояний в выборке на период. По умолчанию программное обеспечение использует Mdl.C в горизонте прогноза.

  • Если Mdl время, отличаясь относительно состояний или наблюдений, то размерности матриц в ячейках C могут отличаться, но размерности каждой матрицы должны быть сопоставимы с матрицами в A и D в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.C{end} в горизонте прогноза.

Примечание

Матрицы в C не могут содержать значения NaN.

Типы данных: cell

Горизонт прогноза, инновации наблюдения, содействующие матрицы, заданные как пара, разделенная запятой, состоящая из 'D' и вектор ячейки матриц.

  • D должен содержать, по крайней мере, ячейки numPeriods. Каждая ячейка должна содержать матрицу, задающую как переход состояний в горизонте прогноза. Если длина D больше, чем numPeriods, то программное обеспечение использует первые ячейки numPeriods. Последняя ячейка указывает на последний период в горизонте прогноза.

  • Если Mdl независим от времени относительно наблюдений и инноваций наблюдения, то каждая ячейка D должна содержать n-by-h матрица, где n является количеством наблюдений в выборке на период, и h является количеством в выборке, инноваций наблюдения на период. По умолчанию программное обеспечение использует Mdl.D в горизонте прогноза.

  • Если Mdl время, отличаясь относительно наблюдений или инноваций наблюдения, то размерности матриц в ячейках D могут отличаться, но размерности каждой матрицы должны быть сопоставимы с матрицами в C в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.D{end} в горизонте прогноза.

Примечание

Матрицы в D не могут содержать значения NaN.

Типы данных: cell

Коэффициенты регрессии, соответствующие переменным прогноза, заданным как пара, разделенная запятой, состоящая из 'Beta' и d-by-n числовая матрица. d является количеством переменных прогноза (см. Predictors0 и PredictorsF), и n является количеством наблюдаемого ряда ответа (см. Y0).

  • Если вы задаете Beta, то необходимо также задать Predictors0 и PredictorsF.

  • Если Mdl является предполагаемой моделью в пространстве состояний, то задайте предполагаемые коэффициенты регрессии, сохраненные в Mdl.estParams.

По умолчанию программное обеспечение исключает компонент регрессии из модели в пространстве состояний.

В выборке, переменные прогноза в уравнении наблюдения модели в пространстве состояний, заданном как пара, разделенная запятой, состоящая из 'Predictors0' и матрицы. Столбцы Predictors0 соответствуют отдельным переменным прогноза. Predictors0 должен иметь строки T, где строка t соответствует наблюдаемым предикторам в период t (Zt). Расширенное уравнение наблюдения

ytZtβ=Cxt+Dut.

Другими словами, программное обеспечение выкачивает наблюдения с помощью компонента регрессии. β является независимым от времени вектором коэффициентов регрессии, которые программное обеспечение оценивает со всеми другими параметрами.

  • Если существуют наблюдения n на период, то регрессы программного обеспечения весь ряд предиктора на каждое наблюдение.

  • Если вы задаете Predictors0, то Mdl должен быть независим от времени. В противном случае программное обеспечение возвращает ошибку.

  • Если вы задаете Predictors0, то необходимо также задать Beta и PredictorsF.

  • Если Mdl является предполагаемой моделью в пространстве состояний (то есть, возвращенный estimate), то это - лучшая практика установить Predictors0 на тот же набор данных предиктора, что вы раньше соответствовали Mdl.

По умолчанию программное обеспечение исключает компонент регрессии из модели в пространстве состояний.

Типы данных: double

В выборке, переменные прогноза в уравнении наблюдения модели в пространстве состояний, заданном как пара, разделенная запятой, состоящая из 'Predictors0' и T-by-d числовая матрица. T является количеством периодов в выборке, и d является количеством переменных прогноза. Строка t соответствует наблюдаемым предикторам в период t (Zt). Расширенное уравнение наблюдения

ytZtβ=Cxt+Dut.

Другими словами, программное обеспечение выкачивает наблюдения с помощью компонента регрессии. β является независимым от времени вектором коэффициентов регрессии, которые программное обеспечение оценивает со всеми другими параметрами.

  • Если существуют наблюдения n на период, то регрессы программного обеспечения весь ряд предиктора на каждое наблюдение.

  • Если вы задаете Predictors0, то Mdl должен быть независим от времени. В противном случае программное обеспечение возвращает ошибку.

  • Если вы задаете Predictors0, то необходимо также задать Beta и PredictorsF.

  • Если Mdl является предполагаемой моделью в пространстве состояний (то есть, возвращенный estimate), то это - лучшая практика установить Predictors0 на тот же набор данных предиктора, что вы раньше соответствовали Mdl.

По умолчанию программное обеспечение исключает компонент регрессии из модели в пространстве состояний.

Типы данных: double

Выходные аргументы

развернуть все

Предсказанные наблюдения, возвращенные как матрица или вектор ячейки числовых векторов.

Если Mdl является независимым от времени, моделью в пространстве состояний относительно наблюдений, то Y является numPeriods-by-n матрица.

Если Mdl является изменяющимся во времени, моделью в пространстве состояний относительно наблюдений, то Y является numPeriods-by-1 вектор ячейки числовых векторов. Ячейка t Y содержит nt-by-1 числовой вектор предсказанных наблюдений в течение периода t.

Ошибочные отклонения предсказанных наблюдений, возвращенных как матрица или вектор ячейки числовых векторов.

Если Mdl является независимым от времени, моделью в пространстве состояний относительно наблюдений, то YMSE является numPeriods-by-n матрица.

Если Mdl является изменяющимся во времени, моделью в пространстве состояний относительно наблюдений, то YMSE является numPeriods-by-1 вектор ячейки числовых векторов. Ячейка t YMSE содержит nt-by-1 числовой вектор ошибочных отклонений для соответствующих предсказанных наблюдений в течение периода t.

Прогнозы состояния, возвращенные как матрица или вектор ячейки числовых векторов.

Если Mdl является независимым от времени, моделью в пространстве состояний относительно состояний, то X является numPeriods-by-m матрица.

Если Mdl является изменяющимся во времени, моделью в пространстве состояний относительно состояний, то X является numPeriods-by-1 вектор ячейки числовых векторов. Ячейка t X содержит mt-by-1 числовой вектор предсказанных наблюдений в течение периода t.

Ошибочные отклонения прогнозов состояния, возвращенных как матрица или вектор ячейки числовых векторов.

Если Mdl является независимым от времени, моделью в пространстве состояний относительно состояний, то XMSE является numPeriods-by-m матрица.

Если Mdl является изменяющимся во времени, моделью в пространстве состояний относительно состояний, то XMSE является numPeriods-by-1 вектор ячейки числовых векторов. Ячейка t XMSE содержит mt-by-1 числовой вектор ошибочных отклонений для соответствующих предсказанных наблюдений в течение периода t.

Примеры

развернуть все

Предположим, что скрытый процесс является AR (1). Впоследствии, уравнение состояния

xt=0.5xt-1+ut,

где ut является Гауссовым со средним значением 0 и стандартным отклонением 1.

Сгенерируйте случайную последовательность 100 наблюдений от xt, предположение, что ряд запускается в 1,5.

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',1);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

Предположим далее, что скрытый процесс подвергается аддитивной погрешности измерения. Впоследствии, уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним значением 0 и стандартным отклонением 0.75. Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний.

Используйте случайный скрытый процесс состояния (x) и уравнение наблюдения, чтобы сгенерировать наблюдения.

y = x + 0.75*randn(T,1);

Задайте четыре содействующих матрицы.

A = 0.5;
B = 1;
C = 1;
D = 0.75;

Задайте модель в пространстве состояний с помощью содействующих матриц.

Mdl = ssm(A,B,C,D)
Mdl = 
State-space model type: ssm

State vector length: 1
Observation vector length: 1
State disturbance vector length: 1
Observation innovation vector length: 1
Sample size supported by model: Unlimited

State variables: x1, x2,...
State disturbances: u1, u2,...
Observation series: y1, y2,...
Observation innovations: e1, e2,...

State equation:
x1(t) = (0.50)x1(t-1) + u1(t)

Observation equation:
y1(t) = x1(t) + (0.75)e1(t)

Initial state distribution:

Initial state means
 x1 
  0 

Initial state covariance matrix
     x1   
 x1  1.33 

State types
     x1     
 Stationary 

Mdl является моделью ssm. Проверьте, что модель правильно задана с помощью отображения в Командном окне. Программное обеспечение выводит, что процесс состояния является стационарным. Впоследствии, программное обеспечение устанавливает среднее значение начального состояния и ковариацию к среднему значению и отклонению стационарного распределения модели AR (1).

Предскажите наблюдения 10 периодов в будущее и оцените их отклонения.

numPeriods = 10;
[ForecastedY,YMSE] = forecast(Mdl,numPeriods,y);

Постройте прогнозы с ответами в выборке, и 95% интервалов прогноза вальдового типа.

ForecastIntervals(:,1) = ForecastedY - 1.96*sqrt(YMSE);
ForecastIntervals(:,2) = ForecastedY + 1.96*sqrt(YMSE);

figure
plot(T-20:T,y(T-20:T),'-k',T+1:T+numPeriods,ForecastedY,'-.r',...
    T+1:T+numPeriods,ForecastIntervals,'-.b',...
    T:T+1,[y(end)*ones(3,1),[ForecastedY(1);ForecastIntervals(1,:)']],':k',...
    'LineWidth',2)
hold on
title({'Observed Responses and Their Forecasts'})
xlabel('Period')
ylabel('Responses')
legend({'Observations','Forecasted observations','95% forecast intervals'},...
    'Location','Best')
hold off

Предположим, что линейное соотношение между изменением в уровне безработицы и темпом роста номинального валового национального продукта (nGNP) представляет интерес. Предположим далее, что первым различием уровня безработицы является серия ARMA(1,1). Символически, и в форме пространства состояний, модель

[x1,tx2,t]=[ϕθ00][x1,t-1x2,t-1]+[11]u1,tyt-βZt=x1,t+σεt,

где:

  • x1,t изменение в уровне безработицы во время t.

  • x2,t фиктивное состояние для MA (1) эффект.

  • y1,t наблюдаемое изменение в уровне безработицы, выкачиваемом темпом роста nGNP (Zt).

  • u1,t серия Gaussian воздействий состояния, имеющих среднее значение 0 и стандартное отклонение 1.

  • εt серия Gaussian инноваций наблюдения, имеющих среднее значение 0 и стандартное отклонение σ.

Загрузите набор данных Нельсона-Плоссера, который содержит уровень безработицы и nGNP ряд, среди прочего.

load Data_NelsonPlosser

Предварительно обработайте данные путем взятия натурального логарифма nGNP ряда и первого различия каждого ряда. Кроме того, удалите стартовые значения NaN из каждого ряда.

isNaN = any(ismissing(DataTable),2);       % Flag periods containing NaNs
gnpn = DataTable.GNPN(~isNaN);
u = DataTable.UR(~isNaN);
T = size(gnpn,1);                          % Sample size
Z = [ones(T-1,1) diff(log(gnpn))];
y = diff(u);

Хотя этот пример удаляет отсутствующие значения, программное обеспечение может разместить ряд, содержащий отсутствующие значения в среде Фильтра Калмана.

Чтобы определить, как хорошо модель предсказывает наблюдения, удалите последние 10 наблюдений для сравнения.

numPeriods = 10;                   % Forecast horizon
isY = y(1:end-numPeriods);         % In-sample observations
oosY = y(end-numPeriods+1:end);    % Out-of-sample observations
ISZ = Z(1:end-numPeriods,:);       % In-sample predictors
OOSZ = Z(end-numPeriods+1:end,:);  % Out-of-sample predictors

Задайте содействующие матрицы.

A = [NaN NaN; 0 0];
B = [1; 1];
C = [1 0];
D = NaN;

Задайте модель в пространстве состояний с помощью ssm.

Mdl = ssm(A,B,C,D);

Оцените параметры модели и используйте случайный набор начальных значений параметров для оптимизации. Задайте компонент регрессии и его начальное значение для оптимизации с помощью аргументов пары "имя-значение" 'Predictors' и 'Beta0', соответственно. Ограничьте оценку σ ко всем положительным, вещественным числам. Для числовой устойчивости задайте Гессиан, когда программное обеспечение вычислит ковариационную матрицу параметра, с помощью аргумента пары "имя-значение" 'CovMethod'.

params0 = [0.3 0.2 0.1]; % Chosen arbitrarily
[EstMdl,estParams] = estimate(Mdl,isY,params0,'Predictors',ISZ,...
    'Beta0',[0.1 0.2],'lb',[-Inf,-Inf,0,-Inf,-Inf],'CovMethod','hessian');
Method: Maximum likelihood (fmincon)
Sample size: 51
Logarithmic  likelihood:     -87.2409
Akaike   info criterion:      184.482
Bayesian info criterion:      194.141
           |      Coeff       Std Err    t Stat     Prob  
----------------------------------------------------------
 c(1)      |  -0.31780       0.19429    -1.63572  0.10190 
 c(2)      |   1.21242       0.48882     2.48031  0.01313 
 c(3)      |   0.45583       0.63930     0.71301  0.47584 
 y <- z(1) |   1.32407       0.26313     5.03201   0      
 y <- z(2) | -24.48733       1.90115   -12.88024   0      
           |                                              
           |    Final State   Std Dev     t Stat    Prob  
 x(1)      |  -0.38117       0.42842    -0.88971  0.37363 
 x(2)      |   0.23402       0.66222     0.35339  0.72380 

EstMdl является моделью ssm, и можно получить доступ к ее свойствам с помощью записи через точку.

Предскажите наблюдения по горизонту прогноза. EstMdl не хранит набор данных, таким образом, необходимо передать его в соответствующих аргументах пары "имя-значение".

[fY,yMSE] = forecast(EstMdl,numPeriods,isY,'Predictors0',ISZ,...
    'PredictorsF',OOSZ,'Beta',estParams(end-1:end));

fY является вектором 10 на 1, содержащим предсказанные наблюдения, и yMSE является вектором 10 на 1, содержащим отклонения предсказанных наблюдений.

Получите 95% интервалов прогноза вальдового типа. Постройте предсказанные наблюдения с их истинными значениями и интервалами прогноза.

ForecastIntervals(:,1) = fY - 1.96*sqrt(yMSE);
ForecastIntervals(:,2) = fY + 1.96*sqrt(yMSE);

figure
h = plot(dates(end-numPeriods-9:end-numPeriods),isY(end-9:end),'-k',...
    dates(end-numPeriods+1:end),oosY,'-k',...
    dates(end-numPeriods+1:end),fY,'--r',...
    dates(end-numPeriods+1:end),ForecastIntervals,':b',...
    dates(end-numPeriods:end-numPeriods+1),...
    [isY(end)*ones(3,1),[oosY(1);ForecastIntervals(1,:)']],':k',...
    'LineWidth',2);
xlabel('Period')
ylabel('Change in the unemployment rate')
legend(h([1,3,4]),{'Observations','Forecasted responses',...
    '95% forecast intervals'})
title('Observed and Forecasted Changes in the Unemployment Rate')

Эта модель, кажется, предсказывает изменения в уровне безработицы хорошо.

Предположим, что скрытый процесс является AR (1). Впоследствии, уравнение состояния

xt=0.5xt-1+ut,

где ut является Гауссовым со средним значением 0 и стандартным отклонением 1.

Сгенерируйте случайную последовательность 100 наблюдений от xt, предположение, что ряд запускается в 1,5.

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',1);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

Предположим далее, что скрытый процесс подвергается аддитивной погрешности измерения. Впоследствии, уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним значением 0 и стандартным отклонением 0.75. Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний.

Используйте случайный скрытый процесс состояния (x) и уравнение наблюдения, чтобы сгенерировать наблюдения.

y = x + 0.75*randn(T,1);

Задайте четыре содействующих матрицы.

A = 0.5;
B = 1;
C = 1;
D = 0.75;

Задайте модель в пространстве состояний с помощью содействующих матриц.

Mdl = ssm(A,B,C,D);

Mdl является моделью ssm.

Предскажите состояния 10 периодов в будущее и оцените их отклонения.

numPeriods = 10;
[~,~,ForecastedX,XMSE] = forecast(Mdl,numPeriods,y);

Постройте прогнозы со сглаживавшими состояниями, и 95% интервалов прогноза вальдового типа.

smoothX = smooth(Mdl,y);
ForecastIntervals(:,1) = ForecastedX - 1.96*sqrt(XMSE);
ForecastIntervals(:,2) = ForecastedX + 1.96*sqrt(XMSE);

figure
plot(T-20:T,smoothX(T-20:T),'-k',T+1:T+numPeriods,ForecastedX,'-.r',...
    T+1:T+numPeriods,ForecastIntervals,'-.b',...
    T:T+1,[smoothX(end)*ones(3,1),[ForecastedX(1);ForecastIntervals(1,:)']],...
    ':k','LineWidth',2)
hold on
title({'Smoothed and Forecasted States'})
xlabel('Period')
ylabel('States')
legend({'Smoothed states','Forecasted states','95% forecast intervals'},...
    'Location','Best')
hold off

Советы

Mdl не хранит данные об ответе, данные о предикторе и коэффициенты регрессии. Предоставьте их каждый раз, когда необходимое использование соответствующего входа или аргументов пары "имя-значение".

Алгоритмы

Фильтр Калмана хранит недостающие данные, не обновляя отфильтрованное оценочное соответствие состояния недостающим наблюдениям. Другими словами, предположите, что существует недостающее наблюдение в период t. Затем прогноз состояния для периода t на основе предыдущего t – 1 наблюдение и отфильтрованное состояние в течение периода t эквивалентен.

Ссылки

[1] Дербин Дж. и С. Дж. Купмен. Анализ Временных рядов Методами Пространства состояний. 2-й редактор Оксфорд: Издательство Оксфордского университета, 2012.

Для просмотра документации необходимо авторизоваться на сайте