Преобразование довольно сложной модели пространства состояний в R (MARSS / DLM) - PullRequest
1 голос
/ 25 апреля 2019

В настоящее время я пытаюсь получить те же результаты оценки, что и в статье " Сезонные изменения температуры в центральной Англии - Proietti & Hillebrand (2015) "

В этой модели они определяют следующая модель пространства состояний , которую я переписал с использованием «стандартных» уравнений пространства состояний от Koopman & Durbin (2012).Синие переменные - это те, которые необходимо оценить, ожидаемые результаты представлены в первом документе (стр. 14).

Очень небольшая сводка для понимания модели: y_t - это вектор 1xT сданных в месяц, X_t является вектором «выбора» 12x1, так что y_t учитывает различные значения параметров в месяц, в котором он находится.

Я попытался сначала оценить модель, игнорируя при этом матрицу X_t, котораясначала выдал несколько ошибок ... Например, первый элемент в Q не мог быть нулевым, что, на мой взгляд, странно .. \ mu не имеет инноваций и, следовательно, не имеет дисперсии для вектора инноваций, верно?Кроме того, даже при 1000 итерациях конвергенция все еще не достигнута.Я думаю, что завтра утром я попытаюсь пройти 10 000 итераций, возможно, это поможет.

Однако главное, что меня озадачило, - как разрешить X_t в этой модели пространства состояний ... это, в свою очередь, изменит модель на 60 параметров (поскольку каждый параметр является вектором 12x1).Любая помощь будет прекрасна:)

library(KFAS)

yTOT = yTOT[yTOT$YR > 1771,]
yTOT = yTOT[yTOT$YR < 2014,]

y = t(as.matrix(yTOT$VAL))

B = matrix(list(0,"b1",0,0,1,0,0,0,"b2"),3,3, byrow=TRUE)
U = matrix(list("u1",0,0),3,1)                           
C = 0
c = 0
G = matrix(list(1,0,0, 0,1,0, 0,0,1),3,3, byrow=TRUE)
w = matrix(list(0,"w1","w2"),3,1)
Z = matrix(c(1,0,1),1,3)                                  
A = matrix(0, 1,1)                                        
D = 0
d = 0
H = 0
v = 0
R = matrix(0, 1,1)                                        
Q = matrix(list(1,0,0, 0,1,0, 0,0,"q1"),3,3, byrow=TRUE) 
x0 = matrix(0, 3,1)
V0 = matrix(0, 3,3)

model.gen=list(Z=Z,A=A,R=R,B=B,U=U,Q=Q,x0=x0,V0=V0,tinitx=0)
kemfit = MARSS(y, model=model.gen, control=list(maxit=1000))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...