Um modelo muito geral que engloba toda uma classe de casos especiais de interesse, em grande parte da mesma maneira que a regressão linear faz, é o modelo de espaço de estados ou o modelo linear dinâmico, que foi introduzido em Kalman (1960) e Kalman and Bucy (1961).

O modelo surgiu na configuração de rastreamento espacial, onde a equação de estado define as equações de movimento para a posição ou estado de uma espaçonave com localização \(X_t\) e os dados \(Y_t\) refletem informações que podem ser observadas em um dispositivo de rastreamento como velocidade e azimute.

Embora introduzido como um método principalmente para uso em pesquisas relacionadas à aeroespaço, o modelo foi aplicado à modelagem de dados da economia (Harrison and Stevens, 1976; Harvey and Pierse, 1984; Harvey and Todd, 1983; Kitagawa and Gersch 1984, Shumway and Stoffer, 1982), medicina (Jones, 1984) e ciências do solo (Shumway, 1988). Um excelente tratamento da análise de séries temporais com base no modelo de espaço de estados é o texto de Durbin and Koopman (2001). Um tratamento moderno de modelos de espaço de estados não lineares pode ser encontrado em Douc, Moulines and Stoffer (2014).

Em geral, o modelo de espaço de estados é caracterizado por dois princípios. Primeiro, há um processo oculto ou latente \(X_t\) chamado processo de estado. O processo de estado é assumido como sendo um processo de Markov; significa que os futuros efeitos \(\{X_s \, : \, s>t\}\) e os efeitos passados \(\{X_s \, : \, s\leq t\}\), são condicionalmente independentes no presente, \(X_t\).

A segunda condição é que as observações \(Y_t\) sejam independentes, dados os estados \(X_t\). Isso significa que a dependência entre as observações é gerada pelos estados. Os princípios são exibidos na figura abaixo.

Figura VI.1: Diagrama de um modelo de espaço de estados.

Neste capítulo, focaremos principalmente nos modelos lineares gaussianos de espaço de estados. Apresentamos várias formas do modelo, introduzimos os conceitos de previsão, filtragem e suavização de modelos de espaço de estados e incluímos suas derivações. Explicamos como executar a estimação de máxima verossimilhança usando várias técnicas e incluímos métodos para lidar com dados ausentes.

Além disso, apresentamos vários tópicos especiais, como Modelos Ocultos de Markov (HMM), regressões automáticas de comutação, splines de suavização, modelos ARMAX, bootstrapping, volatilidade estocástica e modelos de espaço de estado com comutação. Finalmente, discutimos uma abordagem bayesiana para ajustar modelos de espaço de estados usando técnicas de Monte Carlo de Cadeias de Markov (MCMC).



VI.1 Modelo Gaussiano linear


O modelo de espaço de estados linear gaussiano ou modelo linear dinâmico (DLM), em sua forma básica, emprega um modelo autoregressivo de ordem um, de dimensão \(p\), como equação de estado, \[\begin{equation} X_t \, = \, \Phi X_{t-1}+W_t\cdot \end{equation}\]

Os \(W_t\) são vetores normais independentes com mesma distribuição de média zero, com matriz de covariância \(Q\); escrevemos isso como \(W_t \sim N_p(0,Q)\) independentes identicamente distribuídos. No DLM, assumimos que o processo começa com um vetor normal \(X_0\), de modo que \(X_0\sim N_p(\mu_0,\Sigma_0)\).

Não observamos diretamente o vetor de estado \(X_t\), mas apenas uma versão linear transformada dele com ruído adicionado, digamos \[\begin{equation} Y_t \, = \, A_t X_t+\nu_t, \end{equation}\] onde \(A_t\) é uma matriz de medição ou observação \(q\times p\); o sistema de equações acima é chamado de equações de observação. O vetor de dados observado, \(Y_t\), é \(q\)-dimensional, o qual pode ser maior ou menor que \(p\), a dimensão da matriz de estados. O ruído de observação aditivo é \(\nu_t\sim N(0,R)\) independentes. Além disso, assumimos inicialmente que, por simplicidade, \(X_0\), \(\{W_t\}\) e \(\{\nu_t\}\) não estão correlacionados; essa suposição não é necessária, mas ajuda na explicação dos primeiros conceitos. O caso de erros correlatos é discutido na Seção VI.6.


Definição VI.1. Modelo Linear Dinâmico (DLM).
Chamamos de modelo linear dinâmico ou modelo de espaço de estados linear gaussiano ao sistema de equações \[\begin{array}{rcl} (A) \qquad X_t & = & \Phi X_{t-1} \, + \, \Upsilon U_t \, + \, W_t, \\[0.4em] (B) \qquad Y_t & = & A_t X_t \, + \, \Gamma U_t \, + \, \nu_t, \end{array}\]

onde a equação \((A)\) é chamada de equações de estados e \((B)\) de equações de observações. O vetor \(r\times 1\), \(U_t\) é conhecido como vetor de entradas; \(Y_t\), de dimensão \(q\) as respostas, \(X_t\) os estados de dimensão \(p\) e \(\Upsilon\) é \(p\times r\) e \(\Gamma\) é \(q\times r\), qualquer uma destas matrizes pode ser a matriz zero.


Como no modelo ARMAX da Seção V.6, variáveis exógenas ou entradas fixas, podem entrar nos estados ou nas observações.


Exemplo VI.1. Um exemplo biomédico.


Suponha que consideremos o problema de monitorar o nível de vários marcadores biomédicos após um paciente com câncer ser submetido a um transplante de medula óssea. Os dados da figura abaixo, usados por Jones (1984), são medições feitas por 91 dias em três variáveis: WBC, logaritmo da contagem de glóbulos brancos; PLT, logaritmo do número plaquetas e HCT, hematócrito, denotado \(Y_t = (Y_{t,1},Y_{t,2},Y_{t,3})^\top\).

Aproximadamente 40% dos valores estão ausentes, com valores ausentes ocorrendo principalmente após o 35to. dia. Os principais objetivos são modelar as trâs variáveis usando a abordagem de espaço de estados e estimar os valores ausentes. De acordo com Jones, “a contagem de plaquetas cerca de 100 dias após o transplante já demonstrou ser um bom indicador de sobrevida a longo prazo”.

Para essa situação específica, modelamos as três variáveis em termos da equação de estado; isso é, \[\begin{equation} \begin{pmatrix} X_{t,1} \\ X_{t,2} \\ X_{t,3} \end{pmatrix} \, = \, \begin{pmatrix} \phi_{1,1} & \phi_{1,2} & \phi_{1,3} \\ \phi_{2,1} & \phi_{2,2} & \phi_{2,3} \\ \phi_{3,1} & \phi_{3,2} & \phi_{3,3} \end{pmatrix} \begin{pmatrix} X_{t-1,1} \\ X_{t-1,2} \\ X_{t-1,3} \end{pmatrix} + \begin{pmatrix} W_{t,1} \\ W_{t,2} \\ W_{t,3} \end{pmatrix} \cdot \end{equation}\]

As equações de observação seriam \(Y_t = A_tX_t + V_t\), onde a matriz de observação \(3\times 3\), \(A_t\), é a matriz de identidade ou a matriz zero, dependendo se uma amostra de sangue foi coletada naquele dia. As matrizes de covariâncias \(R\) e \(Q\) são, cada uma, matrizes \(3\times 3\).

library(astsa)
plot(blood, type='o', pch=19, xlab='dias', main='')
grid()

Figura VI.2: Série longitudinal de parâmetros sanguíneos monitorados: WBC, logaritmo da contagem de glóbulos brancos; PLT, logaritmo do número de plaquetas e HCT, hematócrito, após um transplante de medula óssea, \(n = 91\) dias.


À medida que avançamos no texto, ficará claro que, embora o modelo pareça simplista, é bastante geral. Por exemplo, se o processo de estado for VAR(2), podemos escrever a equação de estado como um processo \(2p\)-dimensional \[\begin{equation} \underbrace{\begin{pmatrix} X_t \\ X_{t-1} \end{pmatrix}}_{2p\times 1} \, = \, \underbrace{\begin{pmatrix} \Phi_1 & \Phi_2 \\ \mbox{I} & 0 \end{pmatrix}}_{2p\times 2p} \underbrace{\begin{pmatrix} X_{t-1} \\ X_{t-2} \end{pmatrix}}_{2p\times 1} + \underbrace{\begin{pmatrix} W_t \\ 0 \end{pmatrix}}_{2p\times 1}, \end{equation}\] e a equação de observação como o processo \(q\)-dimensional, \[\begin{equation} \underbrace{Y_t}_{q\times 1} \, = \, \underbrace{\begin{pmatrix} A_t & | & 0 \end{pmatrix}}_{q\times 2p} \underbrace{\begin{pmatrix} X_{t} \\ X_{t-1} \end{pmatrix}}_{2p\times 1} + \underbrace{V_t}_{q\times 1}\cdot \end{equation}\]

As vantagens reais da formulação do espaço de estados, no entanto, não surgem realmente no exemplo simples dado acima. As formas especiais que podem ser desenvolvidas para várias versões da matriz \(A_t\) e para o esquema de transição definido pela matriz permitem ajustar estruturas mais parcimoniosas com menos parâmetros necessários para descrever uma série temporal multivariada.

Veremos vários exemplos ao longo do texto. A Seção VI.5 sobre modelos estruturais é um bom exemplo da flexibilidade do modelo. O exemplo simples mostrado abaixo é instrutivo.


Exemplo VI.2. Aquecimento global.


A figura abaixo mostra duas formas diferentes de mensuração para a série de temperatura global de 1880 a 2015. Uma é globtemp, considerada no Capítulo I e são os dados médios globais do índice de temperatura terra-oceano.

A segunda série, globtempl, são os dados do índice de temperatura do ar da superfície usando apenas dados de estações meteorológicas.

Conceitualmente, ambas as séries devem medir o mesmo sinal climático subjacente, e podemos considerar o problema de extrair esse sinal subjacente.

par(mar=c(4,4,2,1))
ts.plot(globtemp, globtempl, col=c(6,4), ylab='Desvios de temperatura', xlab="Tempo", lwd=2)
grid()
legend(1880,1.0, legend = c("Terra / Oceano", "Somente terra"), lty=1, lwd=2, col=c(6,4))

Figura VI.3: Série anual de desvio de temperatura global em graus centígrados, entre 1880–2015. As séries diferem quanto à inclusão ou não de dados oceânicos.


A introdução da abordagem de espaço de estados como uma ferramenta para modelar dados nas ciências sociais e biológicas requer identificação do modelo e estimação de parâmetros, porque raramente existe uma equação diferencial bem definida que descreve a transição de estado.

As questões de interesse geral para o modelo linear dinâmico dizem respeito à estimativa dos parâmetros desconhecidos contidos em \(\Phi\), \(\Upsilon\), \(Q\), \(\Gamma\), \(A_t\) e \(R\); que definem o modelo específico e estimam ou prevêem valores do processo não observado subjacente \(X_t\).

As vantagens da formulação do espaço de estados estão na facilidade com que podemos tratar várias configurações de dados ausentes e na incrível variedade de modelos que podem ser gerados a partir deles. A analogia entre a matriz de observação \(A_t\) e a matriz de projeto na configuração usual de regressão e análise de variância é útil.

Podemos gerar estruturas de efeitos fixos e aleatórios que são constantes ou variam ao longo do tempo, simplesmente fazendo escolhas apropriadas para a matriz \(A_t\) e a estrutura de transição \(\Phi\).

Antes de continuar nossa investigação do modelo geral é instrutivo considerar um modelo simples de espaço de estados univariado, no qual um processo AR(1) é observado usando um instrumento barulhento.


Exemplo VI.3. Um processo AR(1) com ruído observacional.


Considere um modelo de espaço de estados univariado onde as observações são barulhentas, \[\begin{equation} Y_t \, = \, X_t+\nu_t, \end{equation}\] e o sinal (estado) é um processo AR(1), \[\begin{equation} X_t \, = \, \phi X_{t-1}+W_t, \end{equation}\] onde \(\nu_t\sim N(0,\sigma_\nu^2)\), \(W_t\sim N(0,\sigma_{_W}^2)\), \(X_0 \sim N(0, \sigma_{_W}^2/(1-\phi^2))\), \(\{\nu_t\}\), \(\{W_t\}\) e \(X_0\) são todas independentes para \(t=1,2,\cdots\).

No Capítulo III investigamos as propriedades do estado \(X_t\), porque é um processo estacionário AR(1). Por exemplo, sabemos que a função de autocovariância do \(X_t\) é \[\begin{equation} \gamma_{_X}(h) \, = \, \dfrac{\sigma_{_W}^2}{1-\phi^2}\phi^h, \qquad h=0,1,2,\cdots\cdot \end{equation}\]

Mas aqui, devemos investigar como a adição de ruído de observação afeta a dinâmica. Embora não seja uma suposição necessária, assumimos neste exemplo que \(X_t\) é estacionário. Nesse caso, as observações também são estacionárias porque \(Y_t\) é a soma de dois componentes estacionários independentes \(X_t\) e \(\nu_t\). Nós temos \[\begin{equation} \gamma_{_Y}(0) \, = \, \mbox{Var}(Y_t) \, = \, \mbox{Var}(X_t+\nu_t) \, = \, \dfrac{\sigma_{_W}^2}{1-\phi^2}+\sigma_\nu^2, \end{equation}\] e, quando \(h>1\), \[\begin{equation} \gamma_{_Y}(h) \, = \, \mbox{Cov}(Y_t,Y_{t+1}) \, = \, \mbox{Cov}(X_t+\nu_t, \, X_{t-h}+\nu_{t-h}) \, = \, \gamma_{_X}(h)\cdot \end{equation}\]

Consequentemente, para \(h>1\), a ACF ámostral é \[\begin{equation} \rho_{_Y}(h) \, = \, \dfrac{\gamma_{_Y}(h)}{\gamma_{_Y}(0)} \, = \, \left(1+\dfrac{\sigma_\nu^2}{\sigma_{_W}^2}(1-\phi^2) \right)^{-1}\phi^h\cdot \end{equation}\]

Deveria ficar claro a partir da estrutura de correlação mostrada acima que as observações, \(Y_t\), não são AR(1), a menos que \(\sigma_\nu^2 = 0\). Além disso, a estrutura de autocorrelação de \(Y_t\) é idêntica à estrutura de autocorrelação de um processo ARMA( 1,1), conforme apresentado no Exemplo III.14.

Assim, as observações também podem ser escritas na forma ARMA(1,1), \[\begin{equation} Y_t \, = \, \phi Y_{t-1}+\theta U_{t-1}+U_t, \end{equation}\] onde \(U_t\) é ruído branco gaussiano com variância \(\sigma_{_U}^2\) e com \(\theta\) e \(\sigma_{_U}^2\) escolhidos adequadamente. Adiamos a discussão para a Seção VI.6; em particular, veja o Exemplo VI.11.


Embora exista uma equivalência entre modelos ARMA estacionários e modelos estacionários de espaço de estados (ver Seção VI.6), às vezes é mais fácil trabalhar na estrutura de modelos de espaço de estados.


VI.2 Filtragem, alisamento e previsão


Do ponto de vista prático, um objetivo primário de qualquer análise envolvendo o modelo de espaço de estados (Definição VI.1) seria produzir estimadores para o sinal não observado subjacente \(X_t\), dados os dados \(Y_{1:s} = \{Y_1,\cdots,Y_s\}\), para o tempo \(s\).

Como será visto, a estimação de estado é um componente essencial da estimação dos parâmetros. Quando \(s < t\), o problema é chamado de prognótico ou previsão. Quando \(s = t\), o problema é chamado de filtragem e quando \(s > t\), o problema é chamado de alisamento ou suavização.

Além dessas estimativas, também queremos medir sua precisão. A solução para esses problemas é realizada através do filtro e suavização de Kalman e é o foco desta seção.

Ao longo deste texto, usaremos as seguintes definições: \[\begin{equation} X_t^s \, = \, \mbox{E}(X_t \, | \, Y_{1:s}) \end{equation}\] e \[\begin{equation} P_{t_1,t_2}^s \, = \, \mbox{E}\big((X_{t_1}-X_{t_1}^s)(X_{t_2}-X_{t_2}^s)^\top \big)\cdot \end{equation}\] Quando \(t_1=t_2\) escrevemos \(P_t^s\) por conveniência.

Ao obter as equações de filtragem e suavização, confiaremos fortemente na suposição gaussiana. Algum conhecimento do material abordado no Apêndice B será útil para entender os detalhes desta seção, embora esses detalhes possam ser ignorados em uma leitura casual do material.

Mesmo no caso não gaussiano, os estimadores que obtemos são os estimadores de mínimos do erro quadrático médio dentro da classe de estimadores lineares. Ou seja, podemos pensar em \(\mbox{E}(X_t \, | \, Y_{1:s})\) como o operador de projeção no sentido da Seção VIII.1, em vez de esperança e \(Y_{1:s}\) como o espaço das combinações lineares de \(\{Y_1,\cdots,Y_s\}\); nesse caso, \(P^s_t\) é o correspondente ao erro quadrático médio.

Como os processos são gaussianos, \(P_{t_1,t_2}^s\) também é a covariância condicional do erro; isso é, \[\begin{equation} P_{t_1,t_2}^s \, = \, \mbox{E}\big((X_{t_1}-X_{t_1}^s)(X_{t_2}-X_{t_2}^s)^\top \, | \, Y_{1:s}\big)\cdot \end{equation}\] Esse fato pode ser visto, por exemplo, observando a matriz de covariância entre \((X_{t}-X_{t}^s)\) e \(Y_{1:s}\), para qualquer \(t\) e \(s\), é zero; poderíamos dizer que eles são ortogonais no sentido da Seção VIII.1. Esse resultado implica que \((X_{t}-X_{t}^s)\) e \(Y_{1:s}\), são independentes, por causa da normalidade e, portanto, a distribuição condicional de \((X_{t}-X_{t}^s)\) dado \(Y_{1:s}\), é a distribuição incondicional de \((X_{t}-X_{t}^s)\).

Derivações das equações de filtragem e suavização de uma perspectiva Bayesiana são dadas em Meinhold and Singpurwalla (1983); abordagens mais tradicionais baseadas no conceito de projeção e na teoria multivariada da distribuição normal são apresentadas em Jazwinski (1970) e Anderson and Moore (1979).

Primeiro, apresentamos o filtro Kalman, que fornece as equações de filtragem e previsão. O nome de filtro vem do fato de que \(X_t^t\) é um filtro linear das observações \(Y_{1:t}\); isto é, \[\begin{equation} X_t^t = \displaystyle \sum_{s=1}^t B_s Y_s, \end{equation}\] para matrizes \(p\times q\) adequadamente escolhidas \(B_s\).

A vantagem do filtro Kalman é que ele especifica como atualizar o filtro de \(X_{t-1}^{t-1}\) para \(X_t^t\) depois que uma nova observação \(Y_t\) é obtida, sem ter que reprocessar todo o conjunto de dados \(Y_{1:t}\).



Teorema VI.1. Filtro de Kalman
Para o modelo de espaço de estados especificado na Definição V.1, com condições iniciais \(X_0^0=\mu_0\) e \(P_0^0=\Sigma_0\), para \(t=1,2,\cdots,n\), \[\begin{array}{rcl} X_t^{t-1} & = & \displaystyle \Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t, \\[0.4em] P_t^{t-1} & = & \displaystyle \Phi P_{t-1}^{t-1} \Phi' \, + \, Q, \end{array}\] com \[\begin{array}{rcl} X_t^{t} & = & \displaystyle X_{t}^{t-1} \, + \, K_t\big( Y_t-A_t X_t^{t-1}-\Gamma U_t \big), \\[0.4em] P_t^{t} & = & \displaystyle \big(\mbox{I}-K_t A_t \big) P_{t}^{t-1}, \end{array}\]

onde \[\begin{equation} K_t \, = \, P_t^{t-1} A_t' \big( A_t P_t^{t-1} A_t' + R\big)^{-1}, \end{equation}\] é chamado de ganho de Kalman. Previsões para \(t >n\) são realizadas avaliando \(X_t^{t-1}\) e \(P_t^{t-1}\), nas duas primeiras equações com as condições iniciais \(X_n^n\) e \(P_n^n\). Subprodutos do filtro são as inovações ou erros de previsão \[\begin{equation} \epsilon_t \, = \, Y_t \, - \, \mbox{E}(Y_t \, | \, Y_{1:t-1}) \, = \, Y_t \, - \, A_t X_t^{t-1} \, - \, \Gamma U_t, \end{equation}\] e as matrizes de variâncias e covariâncias correspondentes \[\begin{equation} \Sigma_t \, = \, \mbox{Var}(\epsilon_t) \, = \, \mbox{Var}\big( A_t(X_t-X_t^{t-1})+\nu_t\big) \, = \, A_t P_t^{t-1} A_t' \, + \, R, \end{equation}\] para \(t=1,2,\cdots,n\). Assumimos que \(\Sigma_t> 0\), ou seja, aassumimos que \(\Sigma\) é uma matriz definida positiva, o que é garantido, por exemplo, se \(R> 0\). Essa suposição não é necessária e pode ser relaxada.

Demonstração. As derivações de \(X_t^{t-1} = \displaystyle \Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t\) e \(P_t^{t-1} = \displaystyle \Phi P_{t-1}^{t-1} \Phi' \, + \, Q\), seguem de cálculos diretos, porque das equações de estados (A) temos \[\begin{equation*} X_t^{t-1} \, = \, \mbox{E}(X_t \, | \, Y_{1:t-1}) \, = \, \mbox{E}(\Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t \, + \, W_t \, | \, Y_{1:t-1}) \, = \, \Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t, \end{equation*}\] e assim \[\begin{equation*} \begin{array}{rcl} P_t^{t-1} & = & \displaystyle \mbox{E}\big( (X_t-X_t^{t-1})(X_t-X_t^{t-1})^\top\big) \\ & = & \displaystyle \mbox{E}\Big( \big(\Phi(X_{t-1}-X_{t-1}^{t-1})+W_t\big)\big(\Phi(X_{t-1}-X_{t-1}^{t-1})+W_t\big)^\top\Big) \\ & = & \displaystyle \Phi P_{t-1}^{t-1}\Phi^\top \, + \, Q\cdot \end{array} \end{equation*}\] Para demonstrarmos que \(X_t^{t} = \displaystyle X_{t}^{t-1} \, + \, K_t\big( Y_t-A_t X_t^{t-1}-\Gamma U_t \big)\) notamos que \(\mbox{Cov}(\epsilon_t,Y_s) = 0\) para \(s < t\), que tendo em vista o fato da sequência de inovações ser um processo gaussiano, implica que as inovações são independentes das observações anteriores. Além disso, a covariância condicional entre \(X_t\) e \(\epsilon_t\) dado \(Y_{1:t-1}\) é \[\begin{equation*} \begin{array}{rcl} \mbox{Cov}(X_t, \epsilon_t \, | \,Y_{1:t-1}) & = & \mbox{Cov}(X_t, Y_t \, - \, A_t X_t^{t-1} - \, \Gamma U_t \, | \,Y_{1:t-1}) \\ & = & \mbox{Cov}(X_t - X_t^{t-1}, Y_t \, - \, A_t X_t^{t-1} - \, \Gamma U_t \, | \, Y_{1:t-1} ) \\ & = & \mbox{Cov}(X_t - X_t^{t-1}, A_t (X_t-X_t^{t-1})+\nu_t) \, = \, P_t^{t-1} A_t^\top\cdot \end{array} \end{equation*}\] Usando esses resultados, temos que a distribuição condicional conjunta de \(X_t\) e \(\epsilon_t\) dado \(Y_{1:t-1}\) é normal \[\begin{equation*} \begin{pmatrix} X_t \\ \epsilon_t \end{pmatrix} \Big| Y_{1:t-1} \, \sim \, N\left( \begin{pmatrix} X_t^{t-1} \\ 0 \end{pmatrix}, \begin{pmatrix} P_t^{t-1} & P_t^{t-1}A_t^\top \\ A_tP_t^{t-1} & \Sigma_t \end{pmatrix}\right)\cdot \end{equation*}\] Utilizando o resultado (B.9) no Apêndice B, podemos escrever \[\begin{equation*} X_t^t \, = \, \mbox{E}(X_t \, | \, Y_{1:t}) \, = \, \mbox{E}(X_t \, | \, Y_{1:t-1},\epsilon_t) \, = \, X_t^{t-1} \, + \, K_t \epsilon_t, \end{equation*}\] onde \[\begin{equation*} K_t \, = \, P_t^{t-1} A_t^\top \Sigma_t^{-1} \, = \, P_t^{t-1} A_t^\top (A_t P_t^{t-1} A_t^\top +R)^{-1}\cdot \end{equation*}\] A avaliação de \(P_t^t\) pode ser realizada utilizando os resultados anteriores como \[\begin{equation*} P_t^t \, = \, \mbox{Cov}(X_t \, | \, Y_{1:t-1},\epsilon_t) \, = \, P_t^{t-1} \, - \, P_t^{t-1}A_t^\top\Sigma_t^{-1}A_t P_t^{t-1}, \end{equation*}\] que implica em \(P_t^{t} = \displaystyle \big(\mbox{I}-K_t A_t \big) P_{t}^{t-1}\).



Nada na demonstração do Teorema VI.1 exclui os casos em que alguns ou todos os parâmetros variam com o tempo ou onde a dimensão da observação muda com o tempo, o que leva ao resultado a seguir.



Corolário VI.1. Filtro de Kalman: o caso variável no tempo.
Se, na Definição VI.1 um ou todos os parâmetros dependem do tempo, \(\Phi=\Phi_t\), \(\Upsilon=\Upsilon_t\), \(Q=Q_t\) na equação de estados ou \(\Gamma=\Gamma_t\), \(R = R_t\) na equação de observação ou a dimensão da equação observacional depende do tempo, \(q = q_t\), o Teorema VI.1 é válido com as substituições apropriadas.



Em seguida exploramos o modelo, a previsão e a filtragem do ponto de vista da densidade. Para facilitar a notação, removeremos as entradas do modelo. Existem dois ingredientes principais para o modelo de espaço de estado.

Denotando por \(p_\Theta(\cdot)\) uma função de densidade genérica com parâmetros representados por \(\Theta\), temos que o processo de estados é Markoviano: \[\begin{equation} p_\Theta(x_t \, | \, x_{t-1},x_{t-2},\cdots,x_0) \, = \, p_\Theta(x_t \, | \, x_{t-1}), \end{equation}\] e as observações são condicionalmente independentes, dados os estados: \[\begin{equation} p_\Theta(y_{1:n} \, | \, x_{1:n}) \, = \, \prod_{t=1}^n p_\Theta(y_t \, | \, x_t)\cdot \end{equation}\]

Como estamos focando no modelo linear gaussiano, se consideramos \(g(x;\mu,\Sigma)\) como a densidade normal multivariada com matriz de média \(\mu\) e covariância \(\Sigma\), então \[\begin{equation} p_\Theta(x_t \, | \, x_{t-1}) \, = \, g(x_t; \Phi x_{t-1},Q) \qquad \mbox{e} \qquad p_\Theta(y_t \, | \, x_t) \, = \, g(y_t; A_t x_t, R), \end{equation}\] com condição inicial \(p_\Theta(x_0)=g(x_0;\mu_0,\Sigma_0)\).

Em termos de densidades, o filtro Kalman pode ser visto como um esquema de atualização simples onde, para determinar as densidades de previsão, temos \[\begin{array}{rcl} p_\Theta(x_t \, | \, y_{1:t-1}) & = & \displaystyle \int_{\mathbb{R}^p} p_\Theta(x_t,x_{t-1} \, | \, y_{1:t-1})\mbox{d}x_{t-1} \\[0.6em] & = & \displaystyle \int_{\mathbb{R}^p} p_\Theta(x_t \, | \, x_{t-1}) \, p_\Theta(x_{t-1} \, | \, y_{1:t-1}) \mbox{d}x_{t-1} \\[0.6em] & = & \displaystyle \int_{\mathbb{R}^p} g(x_t;\Phi x_{t-1},Q) \, g(x_{t-1}; x_{t-1}^{t-1},P_{t-1}^{t-1}) \mbox{d}x_{t-1} \\[0.6em] & = & g(x_{t}; x_{t}^{t-1},P_{t}^{t-1}), \end{array}\]

onde os valores de \(x_{t}^{t-1}\), \(P_{t}^{t-1}\) são dados no Teorema VI.1.

Esses valores são obtidos ao avaliar a integral usando o truque usual de completar o quadrado. Como estávamos procurando um procedimento iterativo, introduzimos \(x_{t-1}\) acima porque, presumivelmente, avaliamos anteriormente a densidade do filtro \(p_\Theta(x_{t-1} \, | \, y_{1:t-1})\).

Uma vez que temos o preditor, a densidade do filtro é obtida como \[\begin{array}{rcl} p_\Theta(x_t \, | \, y_{1:t}) & = & p_\Theta(x_t \, | \, y_t,y_{1:t-1}) \, \approx \, p_\Theta(y_t \, | \, x_t) \, p_\Theta(x_t \, | \, y_{1:t-1}) \\[0.4em] & = & g(y_t;A_t \, x_t, R) \, g(x_t; x_t^{t-1}, P_t^{t-1}), \end{array}\]

do qual deduzimos \(g(x_t; x_t^{t}, P_t^{t})\), onde \(x^t\) e \(P^t_t\), são dados no Teorema VI.1.

O exemplo a seguir ilustra essas ideias para um caso simples e univariado.


Exemplo VI.4. Modelo de nível local


Neste exemplo, supomos que observamos uma série univariada \(Y_t\) que consiste em um componente de tendência \(\mu_t\) e um componente de ruído, \(\nu_t\), em que \[\begin{equation} Y_t \, = \, \mu_t+\nu_t \end{equation}\] e \(\nu_t \sim N(0,\sigma^2_\nu)\) independentes. Em particular, assumimos que a tendência é uma caminhada aleatória dada por \[\begin{equation} \mu_t \, = \, \mu_{t-1}+\omega_t, \end{equation}\] onde \(\omega_t\sim N(0,\sigma^2_\omega)\) independentes e independentes de \(\{\nu_t\}\).

O modelo é um modelo de espaço de estados com \(Y_t = \mu_t+\nu_t\) sendo a equação de observação e \(\mu_t = \mu_{t-1}+\omega_t\) sendo a equação de estados. Usaremos a seguinte notação introduzida em Blight (1974). Seja \[\begin{equation} \{x\, ;\mu,\sigma^2\} \, = \, \exp\Big( -\dfrac{1}{2\sigma}^2(x-\mu)^2\Big), \end{equation}\] então, uma manipulação simples mostra \[\begin{equation} \{x\, ;\mu,\sigma^2\} \, = \, \{\mu \, ; x,\sigma^2\} \end{equation}\] e, completando os quadrados, \[\begin{equation} \big\{x\, ;\mu_1,\sigma_1^2\big\} \times \big\{x\, ;\mu_2,\sigma_2^2\big\} \, = \, \left\{ x \, ; \dfrac{\frac{\mu_1}{\sigma_1^2}+\frac{\mu_2}{\sigma_2^2}}{\frac{1}{\sigma_1^2}+\frac{1}{\sigma_2^2}},\dfrac{1}{\frac{1}{\sigma_1^2}+\frac{1}{\sigma_2^2}}\right\} \times \big\{\mu_1 \, ; \mu_2,\sigma_1^2+\sigma_2^2\big\}\cdot \end{equation}\]

Então, utilizando o Filtro de Kalman, temos \[\begin{array}{rcl} p(\mu_t \, | \, y_{1:t-1}) & \approx & \displaystyle \int \big\{\mu_t \, ; \mu_{t-1},\sigma_\omega^2\big\}\times \big\{ \mu_{t-1} \,; \mu_{t-1}^{t-1},P_{t-1}^{t-1}\big\}\mbox{d}\mu_{t-1} \\[0.4em] & = & \displaystyle \int \big\{\mu_t \, ; \mu_{t-1},\sigma_\omega^2\big\}\times \big\{ \mu_{t-1} \,; \mu_{t-1}^{t-1},P_{t-1}^{t-1}\big\}\mbox{d}\mu_{t-1} \\[0.4em] & = & \displaystyle \big\{ \mu_t \,; \mu_{t-1}^{t-1},P_{t-1}^{t-1}+\sigma_\omega^2\big\}\cdot \end{array}\]

Da expressão acima concluímos que \[\begin{equation} \mu_t \, | \, y_{1:t-1} \, \sim \, N\big(\mu_t^{t-1},P_{t}^{t-1} \big) \end{equation}\] onde \(\mu_t^{t-1}=\mu_{t-1}^{t-1}\) e \(P_t^{t-1}=P_{t-1}^{t-1}+\sigma_\omega^2\) que concorda com a primeira parte do Teorema VI.1.

Para derivar a densidade do filtro, temos \[\begin{equation} p(\mu_t \, | \, y_{1:t}) \, \approx \, \big\{y_t \,; \mu_t,\sigma_\nu^2 \big\}\times \big\{ \mu_t \, ; \mu_t^{t-1},P_t^{t-1}\big\} \, = \, \big\{\mu_t \,; y_t,\sigma_\nu^2 \big\}\times \big\{ \mu_t \, ; \mu_t^{t-1},P_t^{t-1}\big\} \cdot \end{equation}\] Isto fornece \[\begin{equation} \mu_t \, | \, y_{1:t} \, \sim \, N\big( \mu_t^t,P_t^t\big), \end{equation}\] com \[\begin{equation*} \mu_t^\top \, = \, \dfrac{\sigma_\nu^2 \mu_t^{t-1}}{P_t^{t-1}+\sigma_\nu^2} \, + \, \dfrac{P_t^{t-1}Y_t}{P_t^{t-1}+\sigma_\nu^2} \, = \, \mu_t^{t-1}\, + \, K_t(Y_t-\mu_t^{t-1}), \end{equation*}\] onde definimos \[\begin{equation*} K_t \, = \, \dfrac{P_t^{t-1}}{P_t^{t-1}+\sigma_\nu^2}, \end{equation*}\] e \[\begin{equation*} P_t^t \, = \, \left(\dfrac{1}{\sigma_\nu^2} \, + \, \dfrac{1}{P_t^{t-1}}\right)^{-1} \, = \, \dfrac{\sigma_\nu^2 P_t^{t-1}}{P_t^{t-1}+\sigma_\nu^2} \, = \, (1-K_t)P_t^{t-1}\cdot \end{equation*}\] O filtro para este caso específico, é claro, está de acordo com o Teorema VI.1.


A seguir, consideramos o problema de obter estimadores para \(X_t\) com base em toda a amostra de dados \(Y_1,\cdots,Y_n\), onde \(t\leq n\), ou seja, \(X_t^n\). Esses estimadores são chamados alisadores porque um gráfico de tempo da sequência \(\{X_t^n : \, t = 1,\cdots,n\}\) é tipicamente mais suave do que àquele das previsões \(\{X_t^{t-1} : \, t = 1,\cdots,n\}\) ou dos filtros \(\{X_t^t : \, t = 1,\cdots,n\}\).

Como é óbvio, pelas observações acima, a suavização implica que cada valor estimado é uma função do presente, futuro e passado, enquanto o estimador filtrado depende do presente e do passado. A previsão depende apenas do passado, como de costume.



Teorema VI.2. Alisamento de Kalman
Para o modelo de espaço de estados especificado na Definição V.1, com condições iniciais \(X_n^n\) e \(P_n^n\), obtidas segundo o Filtro de Kalman (Teorema VI.1), para \(t=n,n-1,\cdots,1\), \[\begin{array}{rcl} X_{t-1}^n & = & \displaystyle X_{t-1}^{t-1} \, + \, J_{t-1}\big(X_t^n-X_t^{t-1}\big), \\[0.4em] P_{t-1}^n & = & \displaystyle P_{t-1}^{t-1} \, + \, J_{t-1}\big(P_t^n - P_t^{t-1}\big)J_{t-1}^\top, \end{array}\]

onde \[\begin{equation} J_{t-1} \, = \, P_{t-1}^{t-1} \Phi^\top \big( P_t^{t-1}\big)^{-1}\cdot \end{equation}\]

Demonstração. Referência: Ansley and Kohn (1982). Primeiro, para \(1\leq t\leq n\), definamos \[\begin{equation*} Y_{1:t-1} \, = \, \{Y_1,\cdots,Y_{t-1}\} \qquad \mbox{e} \qquad \eta_t \, = \, \{\nu_1,\cdots,\nu_n,W_{t+1},\cdots,W_{n}\}, \end{equation*}\] com \(Y_{1:0}\) sendo vazio e seja \[\begin{equation*} m_{t-1} \, = \, \mbox{E}\big( X_{t-1} \, | \, Y_{1:t-1},X_t-X_t^{t-1},\eta_t\big)\cdot \end{equation*}\] Então, devido a \(Y_{1:t-1}\), \(\{X_t-X_t^{t-1}\}\) e \(\eta_t\) serem mutuamente independentes e \(X_{t-1}\) e \(\eta_t\) independentes, utilizando o resultado no Apêndice B, resultado B.9, temos \[\begin{equation*} m_{t-1} \, = \, X_{t-1}^{t-1} \, + \, J_{t-1}(X_t-X_t^{t-1}), \end{equation*}\] onde \[\begin{equation*} J_{t-1} \, = \, \mbox{Cov}\big( X_{t-1},X_t-X_t^{t-1}\big)\big( P_t^{t-1}\big)^{-1} \, = \, P_{t-1}^{t-1}\Phi^\top \big( P_t^{t-1}\big)^{-1}\cdot \end{equation*}\] Por último, devido a que \(Y_{1:t-1}\), \(X_t-X_t^{t-1}\) e \(\eta_t\) geram \(Y_{1:n}=\{Y_1,\cdots,Y_n\}\), \[\begin{equation*} X_{t-1}^n \, = \, \mbox{E}(X_{t-1} \, | \, Y_{1:n}) \, = \, \mbox{E}(m_{t-1} \, | \, Y_{1:n}) \, = \, X_{t-1}^{t-1} \, + \, J_{t-1}\big(X_t^n - X_t^{t-1}\big), \end{equation*}\] com o qual provamos a primeira rela&ccedilão do teorema. A recursão para a covariância do erro \(P_{t-1}^n\) é obtida por cálculo direto. Utilizando a primeira relação do teorema obtemos \[\begin{equation*} X_{t-1}-X_{t-1}^{n} \, = \, X_{t-1} \, - \, X_{t-1}^{t-1} \, - \ J_{t-1}\big(X_t^n - \Phi X_{t-1}^{t-1} \big) \end{equation*}\] ou \[\begin{equation*} \big(X_{t-1}-X_{t-1}^{n}\big) \, + \, J_{t-1} X_t^n \, = \, \big(X_{t-1} \, - \, X_{t-1}^{t-1}\big) \, + \ J_{t-1}\Phi X_{t-1}^{t-1}\cdot \end{equation*}\] Multiplicando cada lado da expressão acima pela transposta de si mesmo e tomando a esperança, temos \[\begin{equation*} P_{t-1}^n \, + \, J_{t-1}\mbox{E}\big(X_t^n (X_t^n)^\top\big) J_{t-1}^\top \, = \, P_{t-1}^{t-1} \, + \, J_{t-1} \Phi \mbox{E}\big(X_{t-1}^{t-1}(X_{t-1}^{t-1})^\top\big)\Phi^\top J_{t-1}^\top \end{equation*}\] usando o fato de que os termos de produtos cruzados são zero. Mas, \[\begin{equation*} \mbox{E}\big( X_{t}^{n}(X_{t}^{n})^\top \big) \, = \, \mbox{E}\big( X_{t}(X_{t})^\top \big) \, - \, P_{t}^{n} \, = \, \Phi \mbox{E}\big( X_{t-1} X_{t-1}^\top \big)\Phi^\top \, + \, Q \, - \, P_t^n \end{equation*}\] e \[\begin{equation*} \mbox{E}\big(X_{t-1}^{t-1}(X_{t-1}^{t-1})^\top\big) \, = \, \mbox{E}\big(X_{t-1}(X_{t-1})^\top\big) \, - \, P_{t-1}^{t-1}\cdot \end{equation*}\]




Exemplo VI.5. Predição, filtro e alisamento


Simulamos \(n = 50\) observações do modelo de tendência de nível local discutido no Exemplo VI.4. Geramos um passeio aleatório \[\begin{equation*} \mu_t \, = \, \mu_{t-1} \, + \, W_t, \end{equation*}\] onde \(W_t\sim N(0,1)\) independentes identicamente distribuídos e \(\mu_0\sim N(0,1)\). Supomos então que observamos a série \(Y_t\) consistindo da componente de tendência \(\mu_t\) e do componente de ruído branco \(\nu_t\sim N(0,1)\), onde \[\begin{equation*} Y_t \, = \, \mu_t\, + \, \nu_t\cdot \end{equation*}\]

As sequências \(\{W_t\}\), \(\{\nu_t\}\) e \(\{\mu_0\}\) foram geradas independentemente e, em seguida, executamos o filtro e o alisamento de Kalman, Toerema VI.1 e Teorema VI.2, usando os parâmetros verdadeiros.

O painel superior da Figura VI.4 mostra os valores reais de \(\mu_t\) como pontos e as previsões \(\mu_t^{t-1}\), para \(t = 1,2,\cdots,50\), sobreposto no gráfico como uma linha. Além disso, exibimos \(\mu_t^{t-1}\pm a\sqrt{P_t^{t-1}}\) como linhas tracejadas no gráfico. O painel do meio exibe o filtro, \(\mu_t^t\), para \(t = 1,2,\cdots,50\), como uma linha com \(\mu_t^{t}\pm a\sqrt{P_t^{t}}\) como linhas tracejadas. O painel inferior da Figura VI.4 mostra um gráfico semelhante para o alisamento \(\mu_t^n\).

library(astsa)
# gerando os dados
set.seed(1); num = 50
w = rnorm(num+1,0,1); v = rnorm(num,0,1)
mu = cumsum(w) # estados: mu[0], mu[1],..., mu[50]
y = mu[-1] + v # obs: y[1],..., y[50]
# filtro e alisamento (Ksmooth0 faz ambos)
ks = Ksmooth(y, A=1, mu0=0, Sigma0=1, Phi=1, sQ=1, sR=1)
# 
par(mfrow=c(3,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19); Time = 1:num
plot(Time, mu[-1], main='Preditos', ylim=c(-5,10), ylab=expression(mu[t]))
lines(ks$Xp); grid()
lines(ks$Xp+2*sqrt(ks$Pp), lty=2, col=4)
lines(ks$Xp-2*sqrt(ks$Pp), lty=2, col=4)
plot(Time, mu[-1], main='Filtro de Kalman', ylim=c(-5,10), ylab=expression(mu[t]))
lines(ks$Xf); grid()
lines(ks$Xf+2*sqrt(ks$Pf), lty=2, col=4)
lines(ks$Xf-2*sqrt(ks$Pf), lty=2, col=4)
plot(Time, mu[-1], main='Alisamento de Kalman', ylim=c(-5,10), ylab=expression(mu[t]))
lines(ks$Xs); grid()
lines(ks$Xs+2*sqrt(ks$Ps), lty=2, col=4)
lines(ks$Xs-2*sqrt(ks$Ps), lty=2, col=4)

Figura VI.4: Valores simulados de \(\mu_t\), para \(t = 1,\cdots,50\), mostrados como pontos. O gráfico no topo mostra as previsões \(\mu_t^{t-1}\) como uma linha de limites de erro \(\pm a\sqrt{P_t^{t-1}}\) como linhas tracejadas. O gráfico do meio é semelhante, mostrando \(\mu_t^{t}\pm a\sqrt{P_t^{t}}\). A parte inferior mostra \(\mu_t^{n}\pm a\sqrt{P_t^{n}}\).

mu[1]; ks$X0n; sqrt(ks$P0n) # valores iniciais
## [1] -0.6264538
##            [,1]
## [1,] -0.3241541
##           [,1]
## [1,] 0.7861514

A Tabela VI.1 mostra as primeiras 10 observações simuladas, bem como os valores de estado correspondentes, as previsões, filtros e suavizadores. Observe que a previsão de um passo à frente é mais incerta do que o valor filtrado correspondente que, por sua vez, é mais incerto do que o valor mais suave correspondente, isto é \(P_t^{t-1}\geq P_t^t \geq P_t^n\). Além disso, em cada caso, as variações do erro se estabilizam rapidamente.

print(cbind(y[1:10],ks$Xp[1:10],ks$Xf[1:10],ks$Xs[1:10],ks$Pp[1:10],ks$Pf[1:10],ks$Ps[1:10]), digits=3)
##          [,1]   [,2]   [,3]   [,4] [,5]  [,6]  [,7]
##  [1,] -1.0548  0.000 -0.703 -0.648 2.00 0.667 0.472
##  [2,] -0.9373 -0.703 -0.850 -0.566 1.67 0.625 0.451
##  [3,] -0.8125 -0.850 -0.827 -0.112 1.62 0.619 0.448
##  [4,]  2.0794 -0.827  0.970  1.042 1.62 0.618 0.447
##  [5,]  1.8063  0.970  1.487  1.159 1.62 0.618 0.447
##  [6,] -0.0539  1.487  0.535  0.628 1.62 0.618 0.447
##  [7,]  0.0075  0.535  0.209  0.778 1.62 0.618 0.447
##  [8,]  2.1971  0.209  1.438  1.699 1.62 0.618 0.447
##  [9,]  1.1870  1.438  1.283  2.123 1.62 0.618 0.447
## [10,]  5.2354  1.283  3.726  3.481 1.62 0.618 0.447

Tabela VI.1. Primeiras 10 observações.

No exemplo, usamos a função Ksmooth. Nos valores retornados de Ksmooth, as letras p, f, s denotam a previsão, filtro e alisamento, respectivamente. Por exemplo, Xp é \(X_t^{t-1}\), Xf é \(x_t^t\), Xs é \(X_t^n\) e assim por diante. Esses scripts usam uma decomposição do tipo Cholesky de \(Q\) e \(R\); eles são denotados por sQ e sR.


No Exemplo VI.5 mencionamos a utilização da decomposição de Cholesky a qual explicamos agora. Dada uma matriz definida positiva \(A\), sua decomposição de Cholesky é uma matriz triangular superior \(U\) com entradas diagonais estritamente positivas tais que \(A = U^\top U\). No R, use chol(A). Para o caso univariado, é simplesmente a raiz quadrada positiva de \(A\).

Quando discutirmos a estimação por máxima verossimilhança por meio do algoritmo EM na próxima seção, precisaremos de um conjunto de iterações para obter \(P_{t,t-1}^n\), conforme definido no começo desta seção. Fornecemos as recursões necessárias no Teorema a seguir.



Teorema VI.3. O retardo de primeira ordem para o alisamento da covariância
Para o modelo de espaço de estados especificado na Definição V.1, com \(K_t\), \(J_t\), \(t=1,\cdots,n\) e \(P_n^n\), obtidas segundo o filtro de Kalman (Teorema VI.1) e o alisamento de Kalman (Teorema VI.2), e com condição inicial \[\begin{array}{rcl} P_{n,n-1}^n & = & \displaystyle (\mbox{I} \, - \, K_nA_n)\Phi P_{n-1}^{n-1}, \end{array}\]

para \(t=n,n-1,\cdots,2\), \[\begin{equation} P_{t-1,t-2}^n \, = \, P_{t-1}^{t-1}J_{t-2}^\top \, + \, J_{t-1} \big(P_{t,t-1}^n \, - \, \Phi P_{t-1}^{t-1}\big)J_{t-2}^\top\cdot \end{equation}\]

Demonstração. Como estamos calculando covariâncias, podemos assumir que \(U_t= 0\) sem perda de generalidade. Para derivar o termo inicial de \[\begin{array}{rcl} P_{n,n-1}^n & = & \displaystyle (\mbox{I} \, - \, K_nA_n)\Phi P_{n-1}^{n-1}, \end{array}\] primeiro definimos \(\widetilde{X}_t^s = X_t-X_t^s\). Então, usando que \[\begin{equation*} X_t^{t} \, = \, X_{t}^{t-1} \, + \, K_t\big( Y_t-A_t X_t^{t-1}-\Gamma U_t \big) \end{equation*}\] e \[\begin{equation*} X_{t-1}^n \, = \, X_{t-1}^{t-1} \, + \, J_{t-1}(X_t^n-X_t^{t-1} \end{equation*}\] escrevemos \[\begin{array}{rcl} P_{t,t-1}^t & = & \displaystyle \mbox{E}\big(\widetilde{X}_t^t {\widetilde{X}_{t-1}^t}^\top\big) \\ & = & \displaystyle \mbox{E}\Big(\big(\widetilde{X}_t^{t-1}-K_t\big( Y_t-A_t X_t^{t-1}\big)\big)\big(\widetilde{X}_{t-1}^{t-1}-J_{t-1} K_t\big( Y_t-A_t X_t^{t-1}\big) \big)^\top \Big) \\ & = & \displaystyle \mbox{E}\Big(\big(\widetilde{X}_t^{t-1}-K_t\big( A_t X_t^{t-1}+\nu_t\big)\big)\big(\widetilde{X}_{t-1}^{t-1}-J_{t-1} K_t\big( A_t X_t^{t-1}+\nu_t\big) \big)^\top \Big)\cdot \end{array}\]

Expandindo os termos e tomando a esperança, chegamos a \[\begin{equation*} P_{t,t-1}^{t} \, = \, P_{t,t-1}^{t-1} - P_{t}^{t-1}A_t^\top K_t^\top J_{t-1}^\top - K_t A_t P_{t,t-1}^{t-1}+K_t \big(A_t P_t^{t-1}A_t^\top +R\big)K_t^\top J_{t-1}^\top, \end{equation*}\] notando que \(\mbox{E}\big(\widetilde{X}_{t}^{t-1}\nu_t^\top\big)=0\). A simplificação final ocorre ao perceber que \[\begin{equation*} K_t \big(A_t P_t^{t-1}A_t^\top +R\big) \, = \, P_t^{t-1}A_t^\top \qquad \mbox{e} \qquad P_{t,t-1}^{t-1} \, = \, \Phi P_{t-1}^{t-1}\cdot \end{equation*}\] Essas relações são válidas para qualquer \(t = 1,\cdots,n\) e \(P_{n,n-1}^n \, = \, (\mbox{I} \, - \, K_nA_n)\Phi P_{n-1}^{n-1},\) no caso \(t = n\).

Damos os passos básicos na derivação de \[\begin{equation*} P_{t-1,t-2}^n \, = \, P_{t-1}^{t-1}J_{t-2}^\top \, + \, J_{t-1} \big(P_{t,t-1}^n \, - \, \Phi P_{t-1}^{t-1}\big)J_{t-2}^\top\cdot \end{equation*}\] O primeiro passo é usar \(X_{t-1}^n \, = \, X_{t-1}^{t-1} \, + \, J_{t-1}\big(X_t^n-X_t^{t-1}\big)\) para escrever \[\begin{equation*} \widetilde{X}_{t-1}^n + J_{t-1}X_t^n \, = \, \widetilde{X}_{t-1}^{t-1} + J_{t-1}\Phi X_{t-1}^{t-1} \end{equation*}\] e \[\begin{equation*} \widetilde{X}_{t-2}^n + J_{t-2}X_{t-1}^n \, = \, \widetilde{X}_{t-2}^{t-2} + J_{t-2}\Phi X_{t-2}^{t-2}\cdot \end{equation*}\] Em seguida, multiplicando o lado esquerdo da primeira expressão acima pela transposição do lado esquerdo da segunda expressão acima e igualando isso ao resultado correspondente dos lados direitos de ambas expressões. Então, tomando as espreranças de ambos os lados, o resultado do lado esquerdo se reduz a \[\begin{equation*} P_{t-1,t-2}^n + J_{t-1}\mbox{E}\big({X}_{t}^{n}{{X}_{t-1}^{n}}^\top\big)J_{t-2}^\top \end{equation*}\] e o resultado do lado direito se reduz a \[\begin{equation*} P_{t-1,t-2}^{t-2}-K_{t-1}A_{t-1}P_{t-1,t-2}^{t-2}+J_{t-1}\Phi K_{t-1}A_{t-1} P_{t-1,t-2}^{t-2}+J_{t-1}\Phi \mbox{E}\big({X}_{t-1}^{t-1}{{X}_{t-2}^{t-2}}^\top\big)\Phi^\top J_{t-2}^\top\cdot \end{equation*}\] Escrevendo \[\begin{equation*} \mbox{E}\big({X}_{t-1}^{t-1}{{X}_{t-2}^{t-2}}^\top\big) \, = \, \mbox{E}\big({X}_{t-1}^{t-2}{{X}_{t-2}^{t-2}}^\top\big) \, = \, \mbox{E}\big({X}_{t-1}{{X}_{t-2}}^\top\big) - P_{t-1,t-2}^{t-2}\cdot \end{equation*}\] Equacionando os resultados acima e simplificando o resultado leva a \[\begin{equation*} P_{t-1,t-2}^n \, = \, P_{t-1}^{t-1}J_{t-2}^\top \, + \, J_{t-1} \big(P_{t,t-1}^n \, - \, \Phi P_{t-1}^{t-1}\big)J_{t-2}^\top\cdot \end{equation*}\]




VI.3 Estimação por máxima verossimilhança


A estimação dos parâmetros que especificam o modelo de espaço de estados, na Definição VI.1, é bastante complexa. Usamos \(\Theta\) para representar o vetor de parâmetros desconhecidos na média inicial \(\mu_0\) e covariância \(\Sigma_0\), matriz de transição \(\Phi\) e as matrizes de estado e de covariância de observação \(Q\) e \(R\) e as matrizes de coeficientes de entrada \(\Upsilon\) e \(\Gamma\).

Usamos a máxima verossimilhança assumindo que o estado inicial é normal, \(X_0\sim N_p(\mu_0\Sigma_0)\) e que os erros são normais \(W_t\sim N(0,Q)\) e \(\nu_t\sim N(0,R)\). Continuamos assumindo, para simplificar, que \(\{W_t\}\) e \(\{\nu_t\}\) não estão correlacionados.

A verossimilhança é calculada usando as inovações \(\epsilon_1,\epsilon_2,\cdots,\epsilon_n\), definido por \[\begin{equation*} \epsilon_t \, = \, Y_t \, - \, A_tX_t^{t-1} \, - \, \Gamma U_t\cdot \end{equation*}\] A forma da verossimilhança das inovações dos dados \(Y_{1:n}\), que foi dada pela primeira vez por Schweppe (1965), é obtida usando um argumento semelhante ao que leva a \[\begin{equation} L(\beta,\sigma_{_W}^2) \, = \, \frac{1}{\displaystyle \big(2\pi \sigma_{_W}^2\big)^\frac{n}{2}} \frac{1}{\sqrt{r_1(\beta)r_2(\beta)\cdots r_n(\beta)}}\exp\left(-\frac{S(\beta)}{2\sigma_{_W}^2}\right), \end{equation}\] onde \[\begin{equation} S(\beta) \, = \, \sum_{t=1}~n \frac{\big( X_t-X_t^{t-1}(\beta)\big)^2}{r_t(\beta)}, \end{equation}\] obtida na Seção III.5 e prossegue notando que as inovações são vetores aleatórios Gaussianos independentes com médias zero e matrizes de covariância \[\begin{equation*} \Sigma_t \, = \, A_t P_t^{t-1}A_t^\top \, + \, R\cdot \end{equation*}\]

Portanto, ignorando uma constante, podemos escrever a verossimilhança \(L_Y(\Theta)\), como \[\begin{equation*} -\ln\big( L_Y(\Theta)\big) \, = \, \dfrac{1}{2}\sum_{t=1}^n \ln\big(|\Sigma_t(\Theta)|\big) \, + \, \dfrac{1}{2}\sum_{t=1}^n \epsilon_t(\Theta)^\top \Sigma_t(\Theta)^{-1} \epsilon_t(\Theta), \end{equation*}\] onde enfatizamos a dependência das inovações dos parâmetros.

Obviamente, a expressão acima, é uma função altamente não linear e complicada dos parâmetros desconhecidos. O procedimento usual é fixar \(X_0=x_0\) e então desenvolver um conjunto de iterações para a função de log-verossimilhança e suas duas primeiras derivadas (por exemplo, Gupta and Mehra, 1974). Então, o algoritmo de Newton-Raphson pode ser usado sucessivamente para atualizar os valores dos parâmetros até que o negativo da log-verossimilhança seja minimizado.

Essa abordagem é defendida, por exemplo, por Jones (1980), que desenvolveu a estimação ARMA, colocando o modelo ARMA na forma de espaço de estado.

As etapas envolvidas na execução do procedimento de estimação de Newton-Raphson são as seguintes:


Exemplo VI.6. Newton-Raphson para o Exemplo VI.3.


Neste exemplo, geramos \(n=100\) observações, \(Y_{1:100}\) do modelo AR com ruído dado no Exemplo VI.3, para realizar a estimação dos parâmetros \(\phi\), \(\sigma_{_W}^2\) e \(\sigma_{_\nu}^2\) utilizando o algoritmo de Newton-Raphson. Na notação da Seção VI.2, teriamos \(\Phi=\phi\), \(Q=\sigma_{_W}^2\) e \(R=\sigma_{\nu}^2\). Os valores reais dos parâmetros são \(\phi=0.8\), \(\sigma_{_W}^2=\sigma_{\nu}^2=1\).

No caso simples de um modelo AR(1) com ruído observacional, a estimativa inicial pode ser realizada usando os resultados do Exemplo VI.3. Por exemplo, definindo \[\begin{equation*} \phi^{(0)} \, = \, \dfrac{\widehat{\rho}_Y(2)}{\widehat{\rho}_Y(1)}\cdot \end{equation*}\] Da mesma forma, \(\gamma_{_X}(1)=\gamma_{_Y}(1)=\phi\sigma_{_W}^2/(1-\phi^2)\); de modo que, inicialmente, definimos \[\begin{equation*} {\sigma_{_W}^2}^{(0)} \, = \, \dfrac{\big(1-{\phi^{(0)}}^2\big)\widehat{\gamma}_{_Y}(1)}{\phi^{(0)}}\cdot \end{equation*}\] Finalmente, obtemos uma estimativa inicial de \(\sigma_{\nu}^2\), a saber \[\begin{equation*} {\sigma_{\nu}^2}^{(0)} \, = \, \widehat{\gamma}_{_Y}(0) \, - \, \dfrac{{\sigma_{_W}^2}^{(0)}}{1-{\phi^{(0)}}^2}\cdot \end{equation*}\]

A estimação por Newton-Raphson foi realizada usando a função R optim. O código usado para este exemplo é fornecido abaixo. Nesse programa, devemos fornecer uma avaliação da função a ser minimizada, a saber, \(-\ln\big(L_Y(\Theta)\big)\). Nesse caso, a função chamada combina as etapas (ii) e (iii), usando os valores atuais dos parâmetros \(\Theta^{(j-1)}\), para obter primeiro os valores filtrados, depois os valores de inovação e, em seguida, calculando a função critério \(-\ln\big(L_Y(\Theta^{(j-1)})\big)\), a ser minimizada.

Fornecemos também formas analíticas do gradiente ou vetor escore \[\begin{equation*} -\dfrac{\partial}{\partial\Theta}\ln\big(L_Y(\Theta)\big), \end{equation*}\] e a matriz Hessiana \[\begin{equation*} -\dfrac{\partial^2}{\partial\Theta\partial\Theta^\top}\ln\big(L_Y(\Theta)\big), \end{equation*}\] na rotina de otimização, ou permitir que o programa calcule esses valores numericamente.

Neste exemplo, deixamos o programa proceder numericamente e observamos a necessidade de ser cauteloso ao calcular gradientes numericamente. Sugere-se, em diversos trabalhos, por exemplor em Press et al. (1993) que é melhor usar métodos numéricos para as derivadas, pelo menos para o Hessiano, junto com o método Broyden – Fletcher – Goldfarb – Shanno (BFGS). Detalhes sobre o gradiente e o Hessiano são fornecidos nos exercícios VI.9 e VI.10; ver Gupta and Mehra (1974).

library(astsa)
# Gerando os dados
set.seed(999); num = 100
x = arima.sim(n=num+1, list(ar=.8), sd=1)
y = ts(x[-1] + rnorm(num,0,1))
# Initial Estimates
u = ts.intersect(y, lag(y,-1), lag(y,-2))
varu = var(u); coru = cor(u)
phi = coru[1,3]/coru[1,2]
q = (1-phi^2)*varu[1,2]/phi
r = varu[1,1] - q/(1-phi^2)
(init.par = c(phi, sqrt(q), sqrt(r))) # = .91, .51, 1.03
## [1] 0.9087024 0.5107053 1.0291205
# Função para avaliar a verossimilhança
Linn = function(para){
   phi = para[1]; sigw = para[2]; sigv = para[3]
   Sigma0 = (sigw^2)/(1-phi^2); Sigma0[Sigma0<0]=0
   kf = Kfilter(y, 1, mu0=0, Sigma0, phi, sigw, sigv)
   return(kf$like) }
(est = optim(init.par, Linn, gr=NULL, method='BFGS', hessian=TRUE, control=list(trace=1, REPORT=1)))
## initial  value 81.313627 
## iter   2 value 80.169051
## iter   3 value 79.866131
## iter   4 value 79.222846
## iter   5 value 79.021504
## iter   6 value 79.014723
## iter   7 value 79.014453
## iter   7 value 79.014452
## iter   7 value 79.014452
## final  value 79.014452 
## converged
## $par
## [1] 0.8137623 0.8507863 0.8743968
## 
## $value
## [1] 79.01445
## 
## $counts
## function gradient 
##       23        7 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##           [,1]     [,2]     [,3]
## [1,] 253.36290 67.39775 -9.64101
## [2,]  67.39775 78.99067 48.61052
## [3,]  -9.64101 48.61052 92.20472
# Estimação
(est = optim(init.par, Linn, gr=NULL, method='BFGS', hessian=TRUE, control=list(trace=1, REPORT=1)))
## initial  value 81.313627 
## iter   2 value 80.169051
## iter   3 value 79.866131
## iter   4 value 79.222846
## iter   5 value 79.021504
## iter   6 value 79.014723
## iter   7 value 79.014453
## iter   7 value 79.014452
## iter   7 value 79.014452
## final  value 79.014452 
## converged
## $par
## [1] 0.8137623 0.8507863 0.8743968
## 
## $value
## [1] 79.01445
## 
## $counts
## function gradient 
##       23        7 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##           [,1]     [,2]     [,3]
## [1,] 253.36290 67.39775 -9.64101
## [2,]  67.39775 78.99067 48.61052
## [3,]  -9.64101 48.61052 92.20472
SE = sqrt(diag(solve(est$hessian)))
cbind(estimate=c(phi=est$par[1],sigw=est$par[2],sigv=est$par[3]),SE)
##       estimate         SE
## phi  0.8137623 0.08060636
## sigw 0.8507863 0.17528895
## sigv 0.8743968 0.14293192

Como pode ser visto na saída, as estimativas finais (estimate), junto com seus erros padrão (SE, entre parênteses), são \(\widehat{\phi}=0.81 (0.08)\), \(\widehat{\sigma}_{_W}^2=0.85 (0.18)\) e \(\widehat{\sigma}_{\nu}^2=0.87 (0.14)\).

Observe que o algoritmo convergiu em sete etapas com o valor final do negativo da log-verossimilhança sendo 79.014452. Os erros padrão são um subproduto do procedimento de estimação e discutiremos sua avaliação posteriormente nesta seção, após o Teorema VI.4.



Exemplo VI.7.
Newton-Raphson para os desvios de temperatura global.


No Exemplo VI.2, consideramos duas séries diferentes de temperatura global de \(n = 136\) observações cada, e elas são mostradas na Figura VI.3. Nesse exemplo, argumentamos que ambas as séries deveriam medir o mesmo sinal climático subjacente, \(X_t\), que modelamos como um passeio aleatório com tendência, \[\begin{equation*} X_t \, =\, \delta + X_{t-1} + W_t\cdot \end{equation*}\]

Lembre-se de que a equação de observação foi escrita como \[\begin{equation*} \begin{pmatrix} Y_{t1} \\ Y_{t2} \end{pmatrix} \, = \, \begin{pmatrix} 1 \\ 1 \end{pmatrix}X_t \, + \, \begin{pmatrix} \nu_{t1} \\ \nu_{t2} \end{pmatrix} \end{equation*}\] e as matrizes de covariâncias do modelo são dadas por \(Q = q_{_{11}}\) e \[\begin{equation*} R \, = \, \begin{pmatrix} r_{_{11}} & r_{_{12}} \\ r_{_{21}} & r_{_{22}}\end{pmatrix}\cdot \end{equation*}\]

Portanto, são cinco parâmetros para estimar \(\delta\), a tendência e os componentes da variância, \(q_{_{11}}\), \(r_{_{11}}\), \(r_{_{12}}\) e \(r_{_{22}}\), observando que \(r_{_{21}} = r_{_{12}}\). Mantemos os parâmetros do estado inicial fixos neste exemplo em \(\mu_0 = -0.35\) e \(\Sigma_0 = 1\), que é grande em relação aos dados.

# Configuração
library(astsa)
y = cbind(globtemp, globtempl); num = nrow(y); input = rep(1,num)
A = array(rep(1,2), dim=c(2,1,num))
mu0 = -.35; Sigma0 = 1; Phi = 1
# Função para calcular a verossimilhança
Linn = function(para){
   cQ = para[1] # sigma_w
   cR1 = para[2] # 11 elemento de chol(R)
   cR2 = para[3] # 22 elemento de chol(R)
   cR12 = para[4] # 12 elemento de chol(R)
   cR = matrix(c(cR1,0,cR12,cR2),2) # juntando os elementos da matriz
#   drift = para[5]
   kf = Kfilter(y,A,mu0,Sigma0,Phi,cQ,cR)
   return(kf$like) }
# Estimação
init.par = c(.1,.1,.1,0) # valores inicias
(est = optim(init.par, Linn, NULL, method='BFGS', hessian=TRUE, control=list(trace=1,REPORT=1))) 
## initial  value -421.921085 
## iter   2 value -428.773042
## iter   3 value -434.096856
## iter   4 value -436.797424
## iter   5 value -437.370540
## iter   6 value -440.010586
## iter   7 value -441.965082
## iter   8 value -442.090727
## iter   9 value -442.107926
## iter  10 value -442.109705
## iter  11 value -442.109716
## iter  12 value -442.109774
## iter  13 value -442.109818
## iter  14 value -442.109835
## iter  15 value -442.109887
## iter  15 value -442.109887
## iter  15 value -442.109888
## final  value -442.109888 
## converged
## $par
## [1] 0.05867391 0.04968343 0.18381399 0.05466742
## 
## $value
## [1] -442.1099
## 
## $counts
## function gradient 
##       69       15 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##           [,1]      [,2]       [,3]       [,4]
## [1,] 16177.285 16593.693  -1161.971   5576.737
## [2,] 16593.693 35921.560   2457.076   5756.835
## [3,] -1161.971  2457.076  12572.135 -13529.351
## [4,]  5576.737  5756.835 -13529.351  20559.385
SE = sqrt(diag(solve(est$hessian)))
# Mostrando as estimativas
u = cbind(estimate=est$par, SE)
rownames(u)=c('sigw','cR11', 'cR22', 'cR12'); u
##        estimate          SE
## sigw 0.05867391 0.011140096
## cR11 0.04968343 0.008238601
## cR22 0.18381399 0.019898157
## cR12 0.05466742 0.015822556
# Alisamento (primeiro defina os parâmetros para suas estimativas finais)
cQ = est$par[1]
cR1 = est$par[2]
cR2 = est$par[3]
cR12 = est$par[4]
cR = matrix(c(cR1,0,cR12,cR2), 2)
(R = t(cR)%*%cR) # para ver a matriz R estimada
##             [,1]        [,2]
## [1,] 0.002468444 0.002716065
## [2,] 0.002716065 0.036776111
drift = est$par[5]
ks = Ksmooth(y,A,mu0,Sigma0,Phi,cQ,cR)
# Gráfico
xsm = ts(as.vector(ks$Xs), start=1880)
rmse = ts(sqrt(as.vector(ks$Ps)), start=1880)
par(mar=c(4,4,2,1))
plot(xsm, ylim=c(-.6, 1), xlab='Tempo', ylab='Desvios de temperatura')
xx = c(time(xsm), rev(time(xsm)))
yy = c(xsm-2*rmse, rev(xsm+2*rmse))
polygon(xx, yy, border=NA, col=gray(.6, alpha=.25))
lines(globtemp, type='o', pch=2, col=4, lty=6)
lines(globtempl, type='o', pch=3, col=3, lty=6)
grid()
legend(1880,1.0, legend = c("Terra / Oceano", "Somente terra"), lty=1, lwd=2, col=c(4,3))

Figura VI.5: As linhas tracejadas com pontos identificados como + e \(\Delta\) correspondem aos dois desvios de temperatura média global mostrados na Figura VI.3. A linha sólida mostra o alisamento estimado \(\widehat{X}_t^n\) e o limite do erro quadrático médio obtido pelas duas raízes correspondentes em cinza.

As observações e as estimativas suavizadas \(\widehat{X}_t^n \pm 2\sqrt{\widehat{P}_t^n}\) são mostradas na Figura VI.5. Observe que o código acima utiliza as funções Kfilter e Ksmooth.


Além do algoritmo Newton-Raphson, Shumway and Stoffer (1982) apresentaram um procedimento de estimação conceitualmente mais simples com base no algoritmo Baum-Welch (Baum et al., 1970), também conhecido como algoritmo EM (Dempster et al. ., 1977). Por uma questão de brevidade, consideraremos o modelo segundo a Definição VI.1 com as matrizes \(\Upsilon = \Gamma =0\).

A ideia básica do algoritmo EM é que, se pudéssemos observar os estados \(X_{0:n} = \{X_0,X_1,\cdots,X_n\}\), além das observações \(Y_{1:n}=\{Y_1,\cdots,Y_n\}\), então consideraríamos \(\{X_{0:n}, Y_{1:n}\}\) como o conjunto de dados completos, com densidade conjunta \[\begin{equation*} f_\Theta(x_{0:n},y_{1:n}) \, = \, f_{\mu_0,\Sigma_0}(x_0)\prod_{t=1}^n f_{\Phi,Q}(x_t \, | \, x_{t-1})\prod_{t=1}^n f_R(y_t \, | \, x_t)\cdot \end{equation*}\]

Sob a suposição gaussiana e ignorando constantes, a verossimilhança dos dados completos acima, pode ser escrita como \[\begin{array}{rcl} -2\ln\big(L_{X,Y}(\Theta)\big) & = & \displaystyle \ln\big( |\Sigma_0|\big) \, + \, (x_0-\mu_0)^\top \Sigma_0^{-1}(x_0-\mu_0) \\ & & \displaystyle \qquad + \, n\ln\big( |Q|\big) \, + \, \sum_{t=1}^n \big(x_t-\Phi x_{t-1} \big)^\top Q^{-1}\big(x_t-\Phi x_{t-1} \big) \\ & & \displaystyle \qquad + \, n\ln\big( |R|\big) \, + \, \sum_{t=1}^n \big(y_t-A_t x_{t} \big)^\top R^{-1}\big(y_t-A_t x_{t} \big)\cdot \end{array}\]

Assim, na visão da expressão acima, se tivéssemos os dados completos, poderíamos então usar os resultados da teoria normal multivariada para obter os estimadores de máxima verossimilhança. Embora não tenhamos os dados completos, o algoritmo EM fornece um método iterativo para encontrar os estimadores de máxima verossimilhança de \(\Theta\) com base nos dados incompletos, \(y_{1:n}\), maximizando sucessivamente a esperança condicional da verossimilhança dos dados completos.

Para implementar o algoritmo EM, escrevemos, na iteração \(j\), \(j = 1,2,\cdots\) como \[\begin{equation*} Q\big(\Theta \, | \, \Theta^{(j-1)}\big) \, = \, \mbox{E}\Big( -2\ln\big(L_{X,Y}(\Theta)\big) \, | \, y_{1:n}, \Theta^{(j-1)} \Big)\cdot \end{equation*}\] O cálculo da expressão acima é o passo da eesperança. Obviamente, dado o valor atual dos parâmetros \(\Theta^{(j-1)}\), podemos usar o Teorema VI.2 para obter as esperanças condicionais desejadas como alisamentos. Esta propriedade rende \[\begin{array}{rcl} Q\big(\Theta \, | \, \Theta^{(j-1)}\big) & = & \displaystyle \ln\big(|\Sigma_0|\big) \, + \, \mbox{tr}\Big(\Sigma_0^{-1}\big(P_0^n+(x_0^n-\mu_0)(x_0^n-\mu_0)^\top\big)\Big) \\ & & \displaystyle \qquad n\ln\big(|Q|\big) \, + \, \mbox{tr}\Big(Q^{-1}\big(S_{11}-S_{10}\Phi^\top-\Phi S_{10}^\top+\Phi S_{00}\Phi^\top\big)\Big) \\ & & \displaystyle \qquad n\ln\big(|R|\big) \, + \, \mbox{tr}\Big(R^{-1}\sum_{t=1}^n \big((y_t-A_t x_t^n)(y_t - A_t x_t^n)^\top + A_t P_t^n A_t^\top\big)\Big), \end{array}\]

onde \[\begin{equation*} S_{11} \, = \, \sum_{t=1}^n \big( x_t^n (x_t^n)^\top+P_t^n\big), \qquad S_{10} \, = \, \sum_{t=1}^n \big( x_t^n (x_{t-1}^n)^\top+P_{t,t-1}^n\big) \end{equation*}\] e \[\begin{equation*} S_{00} \, = \, \sum_{t=1}^n \big( x_{t-1}^n (x_{t-1}^n)^\top+P_{t-1}^n\big)\cdot \end{equation*}\]

Nas expressões anteriore, os suavizadores são calculados sob o valor atual dos parâmetros \(\Theta^{(j-1)}\); para simplificar, não exibimos explicitamente esse fato. Na obtenção \(Q(\cdot \, | \, \cdot)\), fizemos uso repetido do fato \[\begin{equation*} \mbox{E}\big( X_s X_t^\top \, | \, Y_{1:n}=y_{1:n}\big) \, = \, x_s^n (x_t^n)^\top + P_{st}^n\cdot \end{equation*}\] É importante notar que não se substitui simplesmente \(x_t\) por \(x_t^n\) na verossimilhança.

Minimizar \(Q\big(\Theta \, | \, \Theta^{(j-1)}\big)\) com relação aos parâmetros, na iteração \(j\), constitui a etapa de maximização e é análoga à abordagem de regressâo multivariada usual, que produz as estimativas atualizadas \[\begin{equation*} \Phi^{(j)} \, = \, S_{10} S_{0}^{-1}, \qquad Q^{(j)} \, = \, \dfrac{1}{n}\big(S_{11}-S_{10}S_{00}^{-1}S_{10}^\top \big) \end{equation*}\] e \[\begin{equation*} R^{(j)} \, = \, \dfrac{1}{n}\sum_{t=1}^n \big((y_t-A_t x_t^n)(y_t -A_t x_t^n)^\top + A_t P_t^n A_t^\top \big)\cdot \end{equation*}\] As atualizações para a média inicial e a matriz de variâncias e covariância são \[\begin{equation*} \mu_0^{(j)} \, = \, x_0^n \qquad \mbox{e} \qquad \Sigma_0^{(j)} \, = \, P_0^n, \end{equation*}\] obtidos a partir da minimização de \(Q\big(\Theta \, | \, \Theta^{(j-1)}\big)\).

O procedimento geral pode ser considerado simplesmente alternando entre o filtro de Kalman e as recursões de suavização e os estimadores multivariados de máxima verossimilhança normal. Os resultados da convergência para o algoritmo EM em condições gerais podem ser encontrados em Wu (1983). Uma discussão completa da convergência do algoritmo EM e métodos relacionados podem ser encontrados em Douc et al. (2014).

Resumimos o procedimento iterativo da seguinte maneira.

Exemplo VI.8. Algoritmo EM para o Exemplo VI.3.


Usando os mesmos dados gerados no Exemplo VI.6, realizamos a estimação dos parâmetros \(\phi\), \(\sigma_{_W}^2\) e \(\sigma_{\nu}^2\) pelo algoritmo EM, bem como os parâmetros iniciais \(\mu_0\) e \(\Sigma_0\), usando o script EM0. A taxa de convergência do algoritmo EM em comparação com o procedimento de Newton-Raphson é lenta.

Neste exemplo, com a convergência sendo reivindicada quando a mudança relativa na log-verossimilhaça é menor que 0.00001; a convergência foi alcançada após 47 iterações. As estimativas finais, junto com seus erros padrão, estão listadas abaixo e os resultados são próximos aos do Exemplo VI.6.

library(astsa); library(nlme) # lendo o pacote nlme
# Gerando os dados (igual ao Example VI.6)
set.seed(999); num = 100
x = arima.sim(n=num+1, list(ar = .8), sd=1)
y = ts(x[-1] + rnorm(num,0,1))
# Estimativas iniciais (igual ao Example VI.6)
u = ts.intersect(y, lag(y,-1), lag(y,-2))
varu = var(u); coru = cor(u)
phi = coru[1,3]/coru[1,2]
q = (1-phi^2)*varu[1,2]/phi
r = varu[1,1] - q/(1-phi^2)
# Procedimento EM 
(em = EM(y, A=1, mu0=0, Sigma0=2.8, Phi=phi, Q=sqrt(q), R=sqrt(r), max.iter=75, tol=.00001))
## iteration    -loglikelihood 
##     1          80.06323 
##     2          78.91486 
##     3          78.69396 
##     4          78.56839 
##     5          78.47927 
##     6          78.40996 
##     7          78.35368 
##     8          78.30696 
##     9          78.2677 
##     10          78.23446 
##     11          78.20617 
##     12          78.18201 
##     13          78.1613 
##     14          78.14349 
##     15          78.12813 
##     16          78.11485 
##     17          78.10333 
##     18          78.09331 
##     19          78.08456 
##     20          78.07689 
##     21          78.07015 
##     22          78.06421 
##     23          78.05895 
##     24          78.05428 
##     25          78.05011 
##     26          78.04637 
##     27          78.04302 
##     28          78.04 
##     29          78.03726 
##     30          78.03477 
##     31          78.03251 
##     32          78.03044 
##     33          78.02853 
##     34          78.02678 
##     35          78.02517 
##     36          78.02367 
##     37          78.02228 
##     38          78.02099 
##     39          78.01978 
##     40          78.01865 
##     41          78.0176 
##     42          78.0166 
##     43          78.01567 
##     44          78.01478 
##     45          78.01395 
##     46          78.01316 
##     47          78.01241
## $Phi
## [1] 0.8077047
## 
## $Q
## [1] 0.7334653
## 
## $R
##           [,1]
## [1,] 0.7414475
## 
## $mu0
##           [,1]
## [1,] -2.103782
## 
## $Sigma0
##            [,1]
## [1,] 0.03807792
## 
## $like
##  [1] 80.06323 78.91486 78.69396 78.56839 78.47927 78.40996 78.35368 78.30696
##  [9] 78.26770 78.23446 78.20617 78.18201 78.16130 78.14349 78.12813 78.11485
## [17] 78.10333 78.09331 78.08456 78.07689 78.07015 78.06421 78.05895 78.05428
## [25] 78.05011 78.04637 78.04302 78.04000 78.03726 78.03477 78.03251 78.03044
## [33] 78.02853 78.02678 78.02517 78.02367 78.02228 78.02099 78.01978 78.01865
## [41] 78.01760 78.01660 78.01567 78.01478 78.01395 78.01316 78.01241
## 
## $niter
## [1] 47
## 
## $cvg
## [1] 9.59294e-06
# Erros padrão (utilizando nlme)
phi = em$Phi; cq = sqrt(em$Q); cr = sqrt(em$R)
mu0 = em$mu0; Sigma0 = em$Sigma0
para = c(phi, cq, cr)
Linn = function(para){ # avaliando a verossimilhan&ccedil;a nas estimativas
   kf = Kfilter(y, 1, mu0, Sigma0, para[1], para[2], para[3])
   return(kf$like) }
emhess = fdHess(para, function(para) Linn(para))
SE = sqrt(diag(solve(emhess$Hessian)))
# Exibindo o resumo das estimativas
estimate = c(para, em$mu0, em$Sigma0); SE = c(SE, NA, NA)
u = cbind(estimate, SE)
rownames(u) = c('phi','sigw','sigv','mu0','Sigma0'); u
##           estimate         SE
## phi     0.80770475 0.07827525
## sigw    0.85642590 0.16295337
## sigv    0.86107346 0.13644243
## mu0    -2.10378197         NA
## Sigma0  0.03807792         NA

A avaliação dos erros padrão utilizou uma chamada da função fdHess no pacote R nlme para avaliar o Hessiano nas estimativas finais.



Estado estacionário e distribuição assintótica dos estimadores de máxima verossimilhança


A distribuição assintótica dos estimadores dos parâmetros do modelo \(\widehat{\Theta}_n\) é estudada em termos muito gerais em Douc, Moulines and Stoffer (2014). Tratamentos anteriores podem ser encontrados em Caines (1988) e em Hannan and Deistler (1988). Nessas referências, a consistência e normalidade assintótica dos estimadores são estabelecidos em condições gerais.

Uma condição essencial é a estabilidade do filtro. A estabilidade do filtro garante que, para \(t\) grande, as inovações \(\epsilon_t\) sejam basicamente cópias umas das outras com uma matriz de covariância estável \(\Sigma\) que não depende de \(t\) e que, assintoticamente, as inovações contenham todas as informações sobre os parâmetros desconhecidos.

Embora não seja necessário, para simplificar, assumiremos aqui que \(A_t= A\) para todo \(t\). Detalhes sobre desvios dessa suposição podem ser encontrados em Jazwinski (1970). Também eliminamos as entradas e usamos o modelo na forma da Definição VI.1 quando \(\Upsilon=\Gamma=0\).

Para a estabilidade do filtro, assumimos que os autovalores de \(\Phi\) são menores que um em valor absoluto; essa suposição pode ser enfraquecida (por exemplo, ver Harvey, 1991), mas a mantemos para simplificar. Essa suposição é suficiente para garantir a estabilidade do filtro na medida em que \(t\to \infty\), a matriz de covariância de erro de filtro \(P_t^t\) converge para \(P\), a matriz de covariância de erro de estado estacionário e a matriz de ganho \(K_t\) converge para \(K\), a matriz de ganho em estado estacionário. A partir desses fatos, segue-se que a matriz de covariâncias das inovações \(\Sigma_t\) converge para \(\Sigma\), a matriz de covariâncias de estado estacionário das inovações estáveis; detalhes podem ser encontrados em Jazwinski (1970) e Anderson and Moore (1979).

Em particular, a matriz de covariâncias do erro do filtro de estado estacionário \(P\), satisfaz a equação de Riccati: \[\begin{equation*} P \, = \, \Phi \Big(P-P A^\top \big(APA^\top+R\big)^{-1} AP\Big)\Phi^\top+Q, \end{equation*}\] a matriz de ganho do estado estacionário satisfaz \(K = PA\big( APA^\top + R\big)^{-1}\). No Exemplo VI.5, para todos os fins práticos, a estabilidade foi alcançada pela terceira observação.

Quando o processo está em estado estacionário, podemos considerar \(X_{t+1}^t\) como o preditor de estado estacionário e interpretá-lo como \[\begin{equation*} X_{t+1}^t \, = \, \mbox{E}\big(X_{t+1} \, | \, Y_t,Y_{t-1},\cdots \big)\cdot \end{equation*}\] Como pode ser visto no Teorema VI.1, o preditor de estado estacionário pode ser escrito como \[\begin{equation*} X_{t+1}^t \, = \, \Phi (\mbox{I}-KA)X_t^{t-1} \, + \, \Phi K Y_t \, = \, \Phi X_t^{t-1} \, + \, \Phi K \epsilon_t, \end{equation*}\] onde \(\epsilon_t\) é o processo de inovação em estado estacionário dado por \[\begin{equation*} \epsilon_t \, = \, Y_t - \mbox{E}\big(Y_{t} \, | \, Y_{t-1},Y_{t-2}, \cdots \big)\cdot \end{equation*}\]

No caso gaussiano, \(\epsilon_t \sim N(0,\Sigma)\) são independentes identicamente distribuídos, sendo \[\begin{equation*} \Sigma=APA^\top+R\cdot \end{equation*}\] Em estado estacionário, as observações podem ser escritas como \[\begin{equation*} Y_t \, = \, A X_t^{t+1}+\epsilon_t\cdot \end{equation*}\] Juntas, as expressões de \(X_{t+1}^t\) e \(Y_t\) compõem a forma das inovações de estado estacionário do modelo linear dinâmico.

No Teorema a seguir, assumimos que o modelo de espaço de estado gaussiano na forma da Definição VI.1 quando \(\Upsilon=\Gamma=0\) é invariante no tempo, ou seja, em \(A_t=A\), os autovalores de \(\Phi\) estão dentro do círculo unitário e o modelo possui a menor dimensão possível (Hannan and Deistler, 1988).

Denotamos os parâmetros verdadeiros por \(\Theta_0\) e assumimos que sua dimensão corresponde à dimensão do espaço de parâmetros. Embora não seja necessário assumir que \(W_t\) e \(\nu_t\) sejam gaussianos, certas condições adicionais teriam que ser aplicadas e ajustes é matriz de covariância assintótica teriam que ser feitos; ver Douc et al. (2014).



Teorema VI.4. Distribuição assintótica dos estimadores
Em condições gerais, seja \(\widehat{\Theta}_n\) o vetor de estimadores de \(\Theta_0\) obtido pela maximização da verossimilhança das inovações, \(L_Y(\Theta)\) dada por \[\begin{equation*} -\ln\big( L_Y(\Theta)\big) \, = \, \dfrac{1}{2}\sum_{t=1}^n \ln\big(|\Sigma_t(\Theta)|\big) \, + \, \dfrac{1}{2}\sum_{t=1}^n \epsilon_t(\Theta)^\top \Sigma_t(\Theta)^{-1} \epsilon_t(\Theta)\cdot \end{equation*}\] Então, para \(n\to\infty\) \[\begin{equation*} \sqrt{n} \Big( \widehat{\Theta}_n-{\Theta}_0\Big) \, = \, N\big(0, I(\Theta_0)^{-1}\big), \end{equation*}\] onde \(I(\Theta)\) é a matriz de informação assintótica dada por \[\begin{equation*} I(\Theta) \, = \, \lim_{n\to\infty} \dfrac{1}{n}\mbox{E}\left(-\dfrac{\partial^2 \ln L_Y(\Theta)}{\partial\Theta\partial\Theta^\top} \right)\cdot \end{equation*}\]

Demonstração. Hannan and Deistler (1988).



Para um procedimento de Newton, a matriz Hessiana (conforme descrito no Exemplo 6.6) no momento da convergência pode ser usada como uma estimativa de \(nI(\Theta_0)\) para obter estimativas dos erros padrão. No caso do algoritmo EM, nenhuma derivada é calculada, mas podemos incluir uma avaliação numérica da matriz Hessiana no momento da convergência para obter erros padrão estimados. Além disso, existem extensões do algoritmo EM, como o algoritmo SEM (Meng and Rubin, 1991), que incluem um procedimento para a estimativa de erros padrão.

Nos exemplos desta seção, os erros padrão estimados foram obtidos a partir da matriz numérica Hessiana de \(-\ln L_Y(\widehat{\Theta})\), onde \(\widehat{\Theta}\) é o vetor de estimativas dos parâmetros no momento da convergência.


VI.4 Modificações de dados ausentes


Um recurso atraente disponível na estrutura do espaço de estados é sua capacidade de tratar séries temporais que foram observadas irregularmente ao longo do tempo. Por exemplo, Jones (1980) usou a representação de espaço de estados para ajustar modelos ARMA a séries com observações ausentes, e Palma and Chan (1997) usaram o modelo para estimação e previsão de séries ARFIMA com observações ausentes. Shumway and Stoffer (1982) descreveram as modificações necessárias para ajustar modelos multivariados de espaço de estados através do algoritmo EM quando há dados ausentes.

Discutiremos o procedimento em detalhes nesta seção. Ao longo desta seção, para simplicidade de notação, assumimos que o modelo tem a forma da Definição VI.1 quando \(\Upsilon=\Gamma=0\).

Suponha que, em um determinado momento \(t\), definamos a partição do vetor \(q\times 1\) de observações em duas partes: a primeira parte \(Y_t^{(1)}\), a componente \(q_{1t}\times 1\) dos valores observados e a segunda parte \(Y_t^{(2)}\), a componente \(q_{2t}\times 1\) dos valores não observados, onde \(q_{1t} + q_{2t} = q\). Em seguida, escrevemos a equação de observações particionada como \[\begin{equation*} \begin{pmatrix} Y_t^{(1)} \\ Y_t^{(2)} \end{pmatrix} \, = \, \begin{pmatrix} A_t^{(1)} \\ A_t^{(2)} \end{pmatrix} X_t \, + \, \begin{pmatrix} \nu_t ^{(1)} \\ \nu_t^{(2)} \end{pmatrix}, \end{equation*}\] onde \(A_t^{(1)}\) e \(A_t^{(2)}\) são, respectivamente, as matrizes de observações particionadas, de dimesões \(q_{1t}\times p\) e \(q_{2t}\times p\) e \[\begin{equation*} \mbox{Cov}\begin{pmatrix} \nu_t ^{(1)} \\ \nu_t^{(2)} \end{pmatrix} \, = \, \begin{pmatrix} R_{{11}_{t}} & R_{{12}_{t}} \\ R_{{21}_{t}} & R_{{22}_{t}} \end{pmatrix} \end{equation*}\] denota a matriz de covariâncias dos erros de medição entre as partes observadas e não observadas.

No caso de dados ausentes em que \(Y_t^{(2)}\) não é observado, podemos modificar a equação de observação no modelo linear dinâmico, como na Definição VI.1 quando \(\Upsilon=\Gamma=0\), de modo que o modelo seja \[\begin{equation*} X_t \, = \, \Phi X_{t-1} \, + \, W_t \qquad \mbox{e} \qquad Y_t^{(1)} \, = \, A_t^{(1)} X_t \, + \, \nu_t^{(1)}, \end{equation*}\] onde agora, a equação de observação é \(q_{1t}\)-dimensional no tempo \(t\).

Nesse caso, segue diretamente do Teorema VI.1 que as equações do filtro são válidas com as substituições notacionais apropriadas. Se não houver observações no tempo \(t\), defina a matriz de ganho, \(K_t\), para a matriz \(p\times q\) zero no Teorema VI.1, caso em que \(X_t^t = X_t^{t-1}\) e \(P_t^t = P_t^{t1}\).

Em vez de lidar com dimensões observacionais variáveis, é computacionalmente mais fácil modificar o modelo zerando certos componentes e mantendo uma equação de observação \(q\)-dimensional por toda parte. Em particular, o Teorema VI.1 vale para o caso de dados perdidos se, na atualização \(t\), substituirmos \[\begin{equation*} Y_{(t)} \, = \, \begin{pmatrix} Y_t^{(1)} \\ 0 \end{pmatrix}, \qquad A_{(t)} \, = \, \begin{pmatrix} A_t^{(1)} \\ 0 \end{pmatrix} \qquad \mbox{e} \qquad R_{(t)} \, = \, \begin{pmatrix} R_{{11}_t} & 0 \\ 0 & \mbox{I}_{{22}_t} \end{pmatrix}, \end{equation*}\] para \(Y_t\), \(A_t\) e \(R\), respectivamente, nas expressões correspondentes no Teorema VI.1, sendo \(\mbox{I}_{{22}_t}\) uma matriz identidade de dimensão \(q_{2t}\times q_{2t}\).

Com as substituições sugeridas acima, os valores das inovações passarão a ser da forma \[\begin{equation*} \epsilon_{(t)} \, = \, \begin{pmatrix} \epsilon_t^{(1)} \\ 0 \end{pmatrix}, \qquad \Sigma_{(t)} \, = \, \begin{pmatrix} A_t^{(1)} P_t^{t-1} {A_t^{(1)}}^\top + R_{{11}_t} & 0 \\ 0 & \mbox{I}_{{22}_t} \end{pmatrix}, \end{equation*}\] de forma que a verossimilhança das inovações dadas anteriormente estão corretas para este caso e assim com as devidas substituições, a estimação por máxima verossimilhança por meio da verossimilhança das inovações pode proceder como no caso de dados completos.

Uma vez que os valores filtrados dos dados perdidos foram obtidos, Stoffer (1982) também estabeleceu que os valores mais suaves podem ser processados usando os resultados dos Teoremas VI.2 e Teorema VI.3 com os valores obtidos a partir dos valores filtrados pelos dados perdidos. No caso de dados ausentes, os estimadores de estado são denotados \[\begin{equation*} X_t^{(s)} \, = \, \mbox{E}\big( X_t \, | \, Y_t^{(1)},\cdots,Y_s^{(1)}\big) \end{equation*}\] com matriz de variâncias-covariâncias do erro \[\begin{equation*} P_t^{(s)} \, = \, \mbox{E}\Big( \big(X_t-X_t^{(s)}\big) \big(X_t-X_t^{(s)}\big)^\top \Big)\cdot \end{equation*}\] A matriz de covariâncias dos dados perdidos alisados por um retardo de ordem um será denotada por \(P_{t,t-1}^{(n)}\).

Os estimadores de máxima verossimilhança obtidos pelo procedimento EM requerem modificações adicionais para o caso de dados ausentes. Agora, vamos considerar \[\begin{equation*} Y_{1:n}^{(n)} \, = \, \{Y_1^{(1)},\cdots,Y_1^{(1)}\} \end{equation*}\] como o vetor dos dados incompletos e \(X_{0:n},Y_{1:n}\), conforme definido anteriormente, como os dados completos. Neste caso, a verossimilhança dos dados completos coincide com a apresentada anteriormente mas, para implementar o Passo-E do algoritmo EM, na iteração \(j\), devemos calcular \[\begin{array}{rcl} Q\big(\Theta \, | \, \Theta^{(j-1)} \big) & = & \displaystyle \mbox{E}\Big( -2\ln\big(L_{X,Y}(\Theta) \big) \, | \, Y_{1:n}^{(1)},\Theta^{(j-1)} \Big) \\ & = & \displaystyle \mbox{E}_*\Big( \ln\big(|\Sigma_0|\big)+\mbox{tr}\big(\Sigma_0^{-1}(X_0-\mu_0)(X_0-\mu_0)^\top\big) \, | \, Y_{1:n}^{(1)} \Big) \\ & & \displaystyle \qquad + \mbox{E}_*\Big( n\ln\big(|Q|\big)+\sum_{j=1}^n \mbox{tr}\big(Q^{-1}(X_t-\Phi X_{t-1})(X_t-\Phi X_{t-1})^\top\big) \, | \, Y_{1:n}^{(1)}\Big) \\ & & \displaystyle \qquad + \mbox{E}_*\Big( n\ln\big(|R|\big)+\sum_{t=1}^n \mbox{tr}\big(R^{-1}(Y_t-A_t X_t)(Y_t - A_t X_t)^\top\big) \, | \, Y_{1:n}^{(1)}\Big), \end{array}\]

onde \(\mbox{E}_*\) denota a esperança condicional sob \(\Theta^{(j-1)}\) e \(\mbox{tr}\) denota a função traço. Os primeiros dois termos em serão como os dois primeiros termos da expressão do Passo-E anterio com os mais alisadores \(X_t^n\), \(P_t^n\) e \(P_{t,t-1}^n\) substituídos por suas contrapartes de dados ausentes, \(X_t^{(n)}\), \(P_t^{(n)}\) e \(P_{t,t-1}^{(n)}\).

No terceiro termo da expressão acima devemos avaliar adicionalmente \[\begin{equation*} \mbox{E}_*\big( Y_t^{(2)} \, | \, Y_{1:n}^{(1)} \big) \qquad \mbox{e} \qquad \mbox{E}_*\big( Y_t^{(2)}{Y_t^{(2)}}^\top \, | \, Y_{1:n}^{(1)} \big)\cdot \end{equation*}\] Em Stoffer (1982), é mostrado que \[\begin{array}{l} \mbox{E}_*\Big((Y_t-A_t X_t)(Y_t - A_t X_t)^\top \, | \, Y_{1:n}^{(1)}\Big) \, = \\ \qquad \qquad \begin{pmatrix} Y_t^{(1)}-A_t^{(1)} X_t^{(n)} \\ R_{{*21}_t}R_{{*11}_t}^{-1}\big(Y_t^{(1)}-A_t^{(1)} X_t^{(n)} \big) \end{pmatrix} \begin{pmatrix} Y_t^{(1)}-A_t^{(1)} X_t^{(n)} \\ R_{{*21}_t}R_{{*11}_t}^{-1}\big(Y_t^{(1)}-A_t^{(1)} X_t^{(n)} \big) \end{pmatrix}^\top \\ \qquad \qquad + \begin{pmatrix} A_t^{(1)} \\ R_{{*21}_t}R_{{*11}_t}^{-1}A_t^{(1)} \end{pmatrix} P_t^{(n)} \begin{pmatrix} A_t^{(1)} \\ R_{{*21}_t}R_{{*11}_t}^{-1}A_t^{(1)} \end{pmatrix}^\top \, + \, \begin{pmatrix} 0 & 0 \\ 0 & R_{{*22}_t}-R_{{*21}_t}R_{{*11}_t}^{-1}R_{{*12}_t} \end{pmatrix}\cdot \end{array}\]

Na expressão acima, os valores de \(R_{{*ik}_t}\), para \(i,k=1,2\) são os valores atuais especificados por \(\Theta^{(j-1)}\). Além disso, \(X_t^{(n)}\) e \(P_t^{(n)}\) são os valores obtidos executando o alisamento sob as estimativas dos parãmetros atuais especificados por \(\Theta^{(j-1)}\).

No caso em que os componentes observados e não observados têm erros não correlacionados, ou seja, \(R_{{*12}_t}\) é uma matriz nula, a espressão acima pode ser simplificada como \[\begin{array}{l} \mbox{E}_*\Big((Y_t-A_t X_t)(Y_t - A_t X_t)^\top \, | \, Y_{1:n}^{(1)}\Big) \, = \\ \qquad \qquad \big(Y_{(t)}-A_{(t)}X_t^{(n)}\big)\big(Y_{(t)}-A_{(t)}X_t^{(n)}\big)^\top \, + \, A_{(t)}P_t^{(n)}A_{(t)}^\top \, + \, \begin{pmatrix} 0 & 0 \\ 0 & R_{{*22}_t} \end{pmatrix}, \end{array}\]

onde \(Y_{(t)}=\begin{pmatrix} Y_t^{(1)} \\ 0 \end{pmatrix}\) e \(A_{(t)}=\begin{pmatrix} A_t^{(1)} \\ 0 \end{pmatrix}\).

Neste caso simplificado, o Passo-M de dados ausentes se parece com o Passo-M fornecido anteriormente. Significa com \[\begin{equation*} S_{11} \, = \, \sum_{t=1}^n \big( x_t^n (x_t^n)^\top+P_t^n\big), \qquad S_{10} \, = \, \sum_{t=1}^n \big( x_t^n (x_{t-1}^n)^\top+P_{t,t-1}^n\big) \end{equation*}\] e \[\begin{equation*} S_{00} \, = \, \sum_{t=1}^n \big( x_{t-1}^n (x_{t-1}^n)^\top+P_{t-1}^n\big), \end{equation*}\] onde os suavizadores são calculados sob o valor presente dos parâmetros \(\Theta^{(j-1)}\) usando as modificações de dados ausentes, na iteração \(j\), a etapa de maximização é \[\begin{equation*} \Phi^{(j)} \, = \, S_{10}S_{00}^{-1}, \qquad Q^{(j)} \, = \, \dfrac{1}{n}\big(S_{11}-S_{10}S_{00}^{-1}S_{10}^\top\big) \end{equation*}\] e \[\begin{equation*} R^{(j)} \, = \, \dfrac{1}{n}\sum_{t=1}^n D_t \left(\big(Y_{(t)}-A_{(t)}X_t^{(n)}\big)\big(Y_{(t)}-A_{(t)}X_t^{(n)}\big)^\top \, + \, A_{(t)}P_t^{(n)}A_{(t)}^\top \, + \, \begin{pmatrix} 0 & 0 \\ 0 & R_{{22}_t}^{(j-1)} \end{pmatrix}\right)D_t^\top, \end{equation*}\] onde \(D_t\) é uma matriz da permutação que reordena as variáveis no tempo \(t\) em sua ordem original e \(Y_{(t)}\) e \(A_{(t)}\) foram definidos anteriormente. Por exemplo, suponha que \(q = 3\) e no tempo \(t\), \(Y_{t2}\) esteja faltando. Então, \[\begin{equation*} Y_{(t)} \, = \, \begin{pmatrix} Y_{t1} \\ Y_{t3} \\ 0 \end{pmatrix}, \qquad A_{(t)} \, = \, \begin{pmatrix} A_{t1} \\ A_{t3} \\ 0^\top \end{pmatrix} \qquad \mbox{e} \qquad D_t \, = \, \begin{pmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix}, \end{equation*}\] onde \(A_{ti}\) é a \(i\)-ésima linha de \(A_t\) e \(0^\top\) é um vetor \(1\times p\) de zeros. Na expressão de \(R^{(j)}\) acima, apenas \(R_{{11}_t}\) é atualizado e \(R_{{22}_t}\) na iteração \(j\) é simplesmente definido com seu valor da iteração anterior, \(j-1\). Como antes, as estimativas de parâmetros para o estado inicial são atualizadas conforme \[\begin{equation*} \mu_0^{(j)} \, = \, X_0^{(n)} \qquad \mbox{e} \qquad \Sigma_0^{(j)} \, = \, P_0^{(n)}\cdot \end{equation*}\]


Exemplo VI.9. Dados biomédicos longitudinais.


Consideramos os dados biomédicos no Exemplo VI.1, neste dados existem partes do vetor tridimensional ausentes após o dia 40. O procedimento de máxima verossimilhança produziu os estimadores para a transição, matrizes de covariância do erro de estado e covariância do erro de observação, respectivamente.

O acoplamento entre a primeira e a segunda série é relativamente fraco, enquanto a terceira série HCT está fortemente relacionada às duas primeiras; isso é, \[\begin{equation} \widehat{X}_{t,3} \, = \, -1.46571679 X_{t-1,1} + 2.25780951 X_{t-1,2} + 0.795200344 X_{t-1,3}\cdot \end{equation}\]

Portanto, o HCT está negativamente correlacionado com o hemograma (WBC) e positivamente correlacionado com a contagem de plaquetas (PLT). Os subprodutos do procedimento são trajetórias estimadas para todas as três séries longitudinais e seus respectivos intervalos de previsão.

Em particular, a Figura VI.6 mostra os dados como pontos, os valores suavizados estimados \(\widehat{X}_t^{(n)}\) como linhas sólidas e limites de erro \(\pm \sqrt{\widehat{P}_t^{(n)}}\) como uma área cinza.

library(astsa)
y = cbind(WBC, PLT, HCT); num = nrow(y)
# definindo a matriz das observações
A = array(0, dim=c(3,3,num))
for(k in 1:num) { if (y[k,1] > 0) A[,,k]= diag(1,3) }
# Valores iniciais
mu0 = matrix(0, 3, 1); Sigma0 = diag(c(.1, .1, 1), 3)
Phi = diag(1, 3); cQ = diag(c(.1, .1, 1), 3); cR = diag(c(.1, .1, 1), 3)
# Procedimento EM
(em = EM(y, A, mu0, Sigma0, Phi, cQ, cR, max.iter = 100, tol = .0001))
## iteration    -loglikelihood 
##     1          161.7442 
##     2          -32.33389 
##     3          -63.21009 
##     4          -84.93542 
##     5          -103.8665 
##     6          -120.9783 
##     7          -136.3679 
##     8          -149.9956 
##     9          -161.8586 
##     10          -172.0212 
##     11          -180.608 
##     12          -187.7877 
##     13          -193.7532 
##     14          -198.7021 
##     15          -202.8201 
##     16          -206.2705 
##     17          -209.19 
##     18          -211.6886 
##     19          -213.8528 
##     20          -215.7491 
##     21          -217.4284 
##     22          -218.9291 
##     23          -220.2803 
##     24          -221.5044 
##     25          -222.6182 
##     26          -223.6352 
##     27          -224.566 
##     28          -225.4193 
##     29          -226.2024 
##     30          -226.9214 
##     31          -227.582 
##     32          -228.1888 
##     33          -228.7463 
##     34          -229.2585 
##     35          -229.7288 
##     36          -230.1607 
##     37          -230.5571 
##     38          -230.9208 
##     39          -231.2544 
##     40          -231.5602 
##     41          -231.8403 
##     42          -232.0968 
##     43          -232.3315 
##     44          -232.546 
##     45          -232.7418 
##     46          -232.9204 
##     47          -233.0831 
##     48          -233.231 
##     49          -233.3652 
##     50          -233.4867 
##     51          -233.5964 
##     52          -233.6952 
##     53          -233.7838 
##     54          -233.863 
##     55          -233.9333 
##     56          -233.9954 
##     57          -234.0499 
##     58          -234.0971 
##     59          -234.1377 
##     60          -234.172 
##     61          -234.2005 
##     62          -234.2234
## $Phi
##             [,1]       [,2]        [,3]
## [1,]  0.97964250 -0.0342397 0.008273092
## [2,]  0.05519171  0.9294528 0.005781029
## [3,] -1.24049735  1.9351047 0.822452152
## 
## $Q
##              [,1]         [,2]       [,3]
## [1,]  0.013856038 -0.001955655 0.01486723
## [2,] -0.001955655  0.003038728 0.03128527
## [3,]  0.014867233  0.031285273 3.35224475
## 
## $R
##             [,1]      [,2]      [,3]
## [1,] 0.007147672 0.0000000 0.0000000
## [2,] 0.000000000 0.0168042 0.0000000
## [3,] 0.000000000 0.0000000 0.8855682
## 
## $mu0
##           [,1]
## [1,]  2.093726
## [2,]  4.402613
## [3,] 26.240893
## 
## $Sigma0
##               [,1]          [,2]         [,3]
## [1,]  3.927763e-04 -4.824642e-05 9.324678e-04
## [2,] -4.824642e-05  2.537220e-04 3.768697e-05
## [3,]  9.324678e-04  3.768697e-05 9.813506e-02
## 
## $like
##  [1]  161.74417  -32.33389  -63.21009  -84.93542 -103.86650 -120.97826
##  [7] -136.36786 -149.99562 -161.85863 -172.02122 -180.60803 -187.78771
## [13] -193.75324 -198.70214 -202.82010 -206.27050 -209.18996 -211.68859
## [19] -213.85277 -215.74910 -217.42838 -218.92908 -220.28035 -221.50438
## [25] -222.61823 -223.63523 -224.56603 -225.41931 -226.20237 -226.92144
## [31] -227.58198 -228.18883 -228.74635 -229.25848 -229.72883 -230.16069
## [37] -230.55709 -230.92080 -231.25438 -231.56017 -231.84033 -232.09682
## [43] -232.33148 -232.54596 -232.74181 -232.92041 -233.08307 -233.23095
## [49] -233.36515 -233.48666 -233.59640 -233.69519 -233.78381 -233.86296
## [55] -233.93330 -233.99542 -234.04987 -234.09715 -234.13773 -234.17203
## [61] -234.20046 -234.22338
## 
## $niter
## [1] 62
## 
## $cvg
## [1] 9.785331e-05
# Gráfico do alisamento 
# ks = Ksmooth(y, A, em$mu0, em$Sigma0, em$Phi, 0, 0, chol(em$Q), chol(em$R), 0)
ks = Ksmooth(y, A, em$mu0, em$Sigma0, em$Phi, chol(em$Q), chol(em$R))
y1s = ks$Xs[1,,]; y2s = ks$Xs[2,,]; y3s = ks$Xs[3,,]
p1 = 2*sqrt(ks$Ps[1,1,]); p2 = 2*sqrt(ks$Ps[2,2,]); p3 = 2*sqrt(ks$Ps[3,3,])
# Gráficos
par(mfrow = c(3,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), cex=0.9, pch=19)
plot(WBC, type='p', pch=19, ylim=c(1,5), xlab='day')
lines(y1s); lines(y1s+p1, lty=2, col=4); lines(y1s-p1, lty=2, col=4)
grid()
rug(which(WBC==0.000), ticksize = 0.07)
polygon(c(rev(time(WBC)), time(WBC)), c(rev(y1s+p1), y1s-p1), col = 'grey80', density = 60)
plot(PLT, type='p', ylim=c(3,6), pch=19, xlab='day')
lines(y2s); lines(y2s+p2, lty=2, col=4); lines(y2s-p2, lty=2, col=4)
grid()
rug(which(PLT==0.000), ticksize = 0.07)
polygon(c(rev(time(PLT)), time(PLT)), c(rev(y2s+p2), y2s-p2), col = 'grey80', density = 60)
plot(HCT, type='p', pch=19, ylim=c(20,40), xlab='day')
lines(y3s); lines(y3s+p3, lty=2, col=4); lines(y3s-p3, lty=2, col=4)
grid()
rug(which(HCT==0.000), ticksize = 0.07)
polygon(c(rev(time(HCT)), time(HCT)), c(rev(y3s+p3), y3s-p3), col = 'grey80', density = 60)

Figura VI.6 Valores suavizados para vários componentes no problema de rastreamento de parâmetros sanguíneos. Os dados reais são mostrados como pontos, os valores suavizados são mostrados como linhas sólidas e os limites de erro padrão são mostrados como uma amostra cinza; marcas de escala indicam dias sem observação.

No código R a seguir, usamos o script EM. Nesse caso, as matrizes de observação \(A_t\) são a matriz identidade ou zero, porque todas as séries são observadas ou não observadas.

library(astsa)
y = cbind(WBC, PLT, HCT); num = nrow(y)
# definindo a matriz das observações
A = array(0, dim=c(3,3,num))
for(k in 1:num) { if (y[k,1] > 0) A[,,k]= diag(1,3) }
# Valores iniciais
mu0 = matrix(0, 3, 1); Sigma0 = diag(c(.1, .1, 1), 3)
Phi = diag(1, 3); cQ = diag(c(.1, .1, 1), 3); cR = diag(c(.1, .1, 1), 3)
# Procedimento EM
(em = EM(y, A, mu0, Sigma0, Phi, cQ, cR, 100, .001))
## iteration    -loglikelihood 
##     1          161.7442 
##     2          -32.33389 
##     3          -63.21009 
##     4          -84.93542 
##     5          -103.8665 
##     6          -120.9783 
##     7          -136.3679 
##     8          -149.9956 
##     9          -161.8586 
##     10          -172.0212 
##     11          -180.608 
##     12          -187.7877 
##     13          -193.7532 
##     14          -198.7021 
##     15          -202.8201 
##     16          -206.2705 
##     17          -209.19 
##     18          -211.6886 
##     19          -213.8528 
##     20          -215.7491 
##     21          -217.4284 
##     22          -218.9291 
##     23          -220.2803 
##     24          -221.5044 
##     25          -222.6182 
##     26          -223.6352 
##     27          -224.566 
##     28          -225.4193 
##     29          -226.2024 
##     30          -226.9214 
##     31          -227.582 
##     32          -228.1888 
##     33          -228.7463 
##     34          -229.2585 
##     35          -229.7288 
##     36          -230.1607 
##     37          -230.5571 
##     38          -230.9208 
##     39          -231.2544 
##     40          -231.5602 
##     41          -231.8403 
##     42          -232.0968 
##     43          -232.3315 
##     44          -232.546 
##     45          -232.7418 
##     46          -232.9204 
##     47          -233.0831 
##     48          -233.231 
##     49          -233.3652 
##     50          -233.4867 
##     51          -233.5964 
##     52          -233.6952 
##     53          -233.7838 
##     54          -233.863 
##     55          -233.9333 
##     56          -233.9954 
##     57          -234.0499 
##     58          -234.0971 
##     59          -234.1377 
##     60          -234.172 
##     61          -234.2005 
##     62          -234.2234
## $Phi
##             [,1]       [,2]        [,3]
## [1,]  0.97964250 -0.0342397 0.008273092
## [2,]  0.05519171  0.9294528 0.005781029
## [3,] -1.24049735  1.9351047 0.822452152
## 
## $Q
##              [,1]         [,2]       [,3]
## [1,]  0.013856038 -0.001955655 0.01486723
## [2,] -0.001955655  0.003038728 0.03128527
## [3,]  0.014867233  0.031285273 3.35224475
## 
## $R
##             [,1]      [,2]      [,3]
## [1,] 0.007147672 0.0000000 0.0000000
## [2,] 0.000000000 0.0168042 0.0000000
## [3,] 0.000000000 0.0000000 0.8855682
## 
## $mu0
##           [,1]
## [1,]  2.093726
## [2,]  4.402613
## [3,] 26.240893
## 
## $Sigma0
##               [,1]          [,2]         [,3]
## [1,]  3.927763e-04 -4.824642e-05 9.324678e-04
## [2,] -4.824642e-05  2.537220e-04 3.768697e-05
## [3,]  9.324678e-04  3.768697e-05 9.813506e-02
## 
## $like
##  [1]  161.74417  -32.33389  -63.21009  -84.93542 -103.86650 -120.97826
##  [7] -136.36786 -149.99562 -161.85863 -172.02122 -180.60803 -187.78771
## [13] -193.75324 -198.70214 -202.82010 -206.27050 -209.18996 -211.68859
## [19] -213.85277 -215.74910 -217.42838 -218.92908 -220.28035 -221.50438
## [25] -222.61823 -223.63523 -224.56603 -225.41931 -226.20237 -226.92144
## [31] -227.58198 -228.18883 -228.74635 -229.25848 -229.72883 -230.16069
## [37] -230.55709 -230.92080 -231.25438 -231.56017 -231.84033 -232.09682
## [43] -232.33148 -232.54596 -232.74181 -232.92041 -233.08307 -233.23095
## [49] -233.36515 -233.48666 -233.59640 -233.69519 -233.78381 -233.86296
## [55] -233.93330 -233.99542 -234.04987 -234.09715 -234.13773 -234.17203
## [61] -234.20046 -234.22338
## 
## $niter
## [1] 62
## 
## $cvg
## [1] 9.785331e-05
# Gráfico do alisamento 
ks = Ksmooth(y, A, em$mu0, em$Sigma0, em$Phi, chol(em$Q), chol(em$R))
y1s = ks$Xs[1,,]; y2s = ks$Xs[2,,]; y3s = ks$Xs[3,,]
p1 = 2*sqrt(ks$Ps[1,1,]); p2 = 2*sqrt(ks$Ps[2,2,]); p3 = 2*sqrt(ks$Ps[3,3,])
# Gráficos
par(mfrow = c(3,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), cex=0.9, pch=19)
plot(WBC, type='p', pch=19, ylim=c(1,5), xlab='day')
lines(y1s); lines(y1s+p1, lty=2, col=4); lines(y1s-p1, lty=2, col=4)
grid()
rug(which(WBC==0.000), ticksize = 0.07)
polygon(c(rev(time(WBC)), time(WBC)), c(rev(y1s+p1), y1s-p1), col = 'grey80', density = 60)
plot(PLT, type='p', ylim=c(3,6), pch=19, xlab='day')
lines(y2s); lines(y2s+p2, lty=2, col=4); lines(y2s-p2, lty=2, col=4)
grid()
rug(which(PLT==0.000), ticksize = 0.07)
polygon(c(rev(time(PLT)), time(PLT)), c(rev(y2s+p2), y2s-p2), col = 'grey80', density = 60)
plot(HCT, type='p', pch=19, ylim=c(20,40), xlab='day')
lines(y3s); lines(y3s+p3, lty=2, col=4); lines(y3s-p3, lty=2, col=4)
grid()
rug(which(HCT==0.000), ticksize = 0.07)
polygon(c(rev(time(HCT)), time(HCT)), c(rev(y3s+p3), y3s-p3), col = 'grey80', density = 60)

Figura VI.6 Valores suavizados para vários componentes no problema de rastreamento de parãmetros sanguíneos. Os dados reais são mostrados como pontos, os valores suavizados são mostrados como linhas sólidas e 2 limites de erro padrão são mostrados como uma amostra cinza; marcas de escala indicam dias sem observação.



VI.5 Modelos Estruturais: extração de sinal e previsão


Os modelos estruturais são modelos de componentes em que cada componente pode ser considerado como uma explicação de um tipo específico de comportamento. Os modelos são frequentemente alguma versão da decomposição clássica de dados em séries temporais em componentes de tendência, sazonais e erro. Consequentemente, cada componente tem uma interpretação direta quanto à natureza da variação dos dados.

Além disso, o modelo se encaixa na estrutura do espaço de estados com bastante facilidade. Para ilustrar essas ideias, consideramos um exemplo que mostra como ajustar uma soma de componentes de tendência, sazonais e erro aos dados de lucros trimestrais que consideramos antes.


Exemplo VI.10. Lucro trimestral da Johnson & Johnson.


Aqui, vamos nos concentramos na série de lucros trimestrais da empresa norte-americana Johnson & Johnson, conforme exibido na Figura I.1.

A série é altamente não estacionária e há um sinal de tendência que está aumentando gradualmente ao longo do tempo e uma componente sazonal que oscila a cada quatro trimestres ou uma vez por ano. A componente sazonal também está ficando maior com o tempo.

Transformar em logaritmos ou mesmo obter a enésima raiz não parece tornar a série estacionária, entretanto, tal transformação ajuda a estabilizar a variância ao longo do tempo; isso é explorado no Problema VI.13. Suponha, por enquanto, que consideramos a série como a soma de uma componente de tendência, uma componente sazonal e um ruído branco. Ou seja, considere a série observada ser expressa como \[\begin{equation*} Y_t , = \, T_t \, + \, S_t \, + \, \nu_t, \end{equation*}\] onde \(T_t\) representa a tendência e \(S_t\) a componente sazonal.

Suponha que permitamos que a tendência aumente exponencialmente; isto é, \[\begin{equation*} T_t \, = \, \phi T_{t-1}+W_{t1}, \end{equation*}\] onde o coeficiente \(\phi>1\) caracteriza o aumento e que a componente sazonal seja modelada como \[\begin{equation*} S_t \, + \, S_{t-1} \, + \, S_{t-2} \, + \, S_{t-3} \, = \, W_{t2}, \end{equation*}\] que corresponde a supor que se espera que a soma da componente sazonal seja zero ao longo de um período completo ou quatro trimestres.

Para expressar este modelo na forma de espaço de estados, seja \(X_t = (T_t,S_t,S_{t-1},S_{t-2})^\top\) é o vetor de estados, então a equação de observação pode ser escrita como \[\begin{equation*} Y_t \, =\, \begin{pmatrix} 1 & 1 & 0 & 0 \end{pmatrix}\begin{pmatrix} T_t \\ S_t \\ S_{t-1} \\ S_{t-2} \end{pmatrix} \, + \, \nu_t, \end{equation*}\] com a equação de estados escrita como \[\begin{equation*} \begin{pmatrix} T_t \\ S_t \\ S_{t-1} \\ S_{t-2} \end{pmatrix} \, = \, \begin{pmatrix} \phi & 0 & 0 & 0 \\ 0 & -1 & -1 & -1 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} T_{t-1} \\ S_{t-1} \\ S_{t-2} \\ S_{t-3} \end{pmatrix} \, + \, \begin{pmatrix} W_{t1} \\ W_{t2} \\ 0 \\ 0 \end{pmatrix}, \end{equation*}\] onde \(R=r_{11}\) e \[\begin{equation*} Q \, = \, \begin{pmatrix} q_{11} & 0 & 0 & 0 \\ 0 & q_{22} & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}\cdot \end{equation*}\]

O modelo se reduz à forma de espaço de estados segundo a Definição VI.1 quando \(\Upsilon=\Gamma=0\), com \(p = 4\) e \(q = 1\). Os parâmetros a serem estimados são \(r_{11}\), a variância do ruído nas equações de observação \(q_{11}\) e \(q_{22}\), as variâncias do modelo correspondentes à tendência e componentes sazonais e o parâmetro de transição que modela a taxa de crescimento.

Este exemplo usa as funções R Kfilter e Ksmooth como segue.

library(astsa)
num = length(jj)
A = cbind(1,1,0,0)
# Função para calcular a verossimilhança
Linn =function(para){
   Phi = diag(0,4); Phi[1,1] = para[1]
   Phi[2,]=c(0,-1,-1,-1); Phi[3,]=c(0,1,0,0); Phi[4,]=c(0,0,1,0)
   cQ1 = para[2]; cQ2 = para[3] # raiz quadrada de q11 e q22
   cQ = diag(0,4); cQ[1,1]=cQ1; cQ[2,2]=cQ2
   cR = para[4] # raiz quadrada de r11
   kf = Kfilter(jj, A, mu0, Sigma0, Phi, cQ, cR)
   return(kf$like) }
# Parâmetros iniciais
mu0 = c(.7,0,0,0); Sigma0 = diag(.04,4)
init.par = c(1.03,.1,.1,.5) # Phi[1,1], 2 cQs e cR
# Estimação e resultados
est = optim(init.par, Linn,NULL, method='BFGS', hessian=TRUE, control=list(trace=1,REPORT=1))
## initial  value 2.693644 
## iter   2 value -0.853526
## iter   3 value -9.416505
## iter   4 value -10.241752
## iter   5 value -19.419809
## iter   6 value -30.441188
## iter   7 value -31.825543
## iter   8 value -32.248413
## iter   9 value -32.839918
## iter  10 value -33.019870
## iter  11 value -33.041749
## iter  12 value -33.050583
## iter  13 value -33.055492
## iter  14 value -33.078152
## iter  15 value -33.096870
## iter  16 value -33.098405
## iter  17 value -33.099018
## iter  18 value -33.099385
## iter  19 value -33.099498
## iter  19 value -33.099498
## final  value -33.099498 
## converged
SE = sqrt(diag(solve(est$hessian)))
u = cbind(estimate=est$par, SE)
rownames(u)=c('Phi11','sigw1','sigw2','sigv'); u
##           estimate         SE
## Phi11 1.0350847657 0.00253645
## sigw1 0.1397255477 0.02155155
## sigw2 0.2208782663 0.02376430
## sigv  0.0004655672 0.24174702
# Alisamento
Phi = diag(0,4); Phi[1,1] = est$par[1]
Phi[2,]=c(0,-1,-1,-1); Phi[3,]=c(0,1,0,0); Phi[4,]=c(0,0,1,0)
cQ1 = est$par[2]; cQ2 = est$par[3]
cQ = diag(1,4); cQ[1,1]=cQ1; cQ[2,2]=cQ2
cR = est$par[4]
ks = Ksmooth(jj,A,mu0,Sigma0,Phi,cQ,cR)
# Gráficos
Tsm = ts(ks$Xs[1,,], start=1960, freq=4)
Ssm = ts(ks$Xs[2,,], start=1960, freq=4)
p1 = 3*sqrt(ks$Ps[1,1,]); p2 = 3*sqrt(ks$Ps[2,2,])
par(mfrow = c(2,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), cex=0.9, pch=19)
plot(Tsm, main='Componente de tend&ecirc;ncia', xlab="Tempo", ylab='Tend&ecirc;ncia')
xx = c(time(jj), rev(time(jj)))
yy = c(Tsm-p1, rev(Tsm+p1))
polygon(xx, yy, border=NA, col=gray(.5, alpha = .3))
grid()
plot(jj, main='Dados & Tendência + Sazolidade', xlab="Tempo",ylab='Johnson & Johnson', ylim=c(-.5,17))
xx = c(time(jj), rev(time(jj)) )
yy = c((Tsm+Ssm)-(p1+p2), rev((Tsm+Ssm)+(p1+p2)) )
polygon(xx, yy, border=NA, col=gray(.5, alpha = .3))
grid()

Figura VI.7 Componente de tendência estimada \(T_t^n\) e componente sazonal \(S_t^n\), da série de ganhos trimestrais da Johnson & Johnson. As áreas cinzentas são limites de três vezes a raiz do MSE.

O crescimento é de cerca de 3,5% ao ano, e começamos com \(\phi= 1.03\). A média inicial foi fixada em \(\mu_0 = (0.7,0,0,0)^\top\), com incerteza modelada pela matriz de covariância diagonal com \(\Sigma_{0ii} = 0.04\), para \(i = 1,\dots,4\). Os valores iniciais das covariâncias de estados foram considerados como \(q_{11} =0.01\) e \(q_{22} =0.01\). A covariância do erro de medição foi iniciada em \(r_{11} =0.25\).

Após cerca de 20 iterações do algoritmo de Newton-Raphson, a estimativa do parâmetro de transição foi \(\widehat{\phi} = 1.035\), correspondendo ao crescimento exponencial com inflação em cerca de 3,5% ao ano. A incerteza de medição era pequena em \(\sqrt{\widehat{r}_{11}}=0.0005\); em comparação com as incertezas do modelo \(\sqrt{\widehat{q}_{11}} = 0.1397\) e \(\sqrt{\widehat{q}_{22}} =0.2209\).

A Figura VI.7 mostra a estimativa da tendência suavizada e os componentes sazonais de aumento exponencial. Também podemos considerar a previsão da série da Johnson & Johnson e o resultado da previsão de 12 trimestres que é mostrado na Figura VI.8 como, basicamente, uma extensão da última parte dos dados observados.

# Previsão
n.ahead = 12;
y = ts(append(jj, rep(0,n.ahead)), start=1960, freq=4)
rmspe = rep(0,n.ahead); x00 = ks$Xf[,,num]; P00 = ks$Pf[,,num]
Q = t(cQ)%*%cQ; R = t(cR)%*%(cR)
for (m in 1:n.ahead){
   xp = Phi%*%x00; Pp = Phi%*%P00%*%t(Phi)+Q
   sig = A%*%Pp%*%t(A)+R; K = Pp%*%t(A)%*%(1/sig)
   x00 = xp; P00 = Pp-K%*%A%*%Pp
   y[num+m] = A%*%xp; rmspe[m] = sqrt(sig) }
par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), cex=0.9, pch=19)
plot(y, type='o', main='', ylab='Johnson & Johnson', ylim=c(5,30), xlim=c(1975,1984))
upp = ts(y[(num+1):(num+n.ahead)]+2*rmspe, start=1981, freq=4)
low = ts(y[(num+1):(num+n.ahead)]-2*rmspe, start=1981, freq=4)
xx = c(time(low), rev(time(upp)))
yy = c(low, rev(upp))
polygon(xx, yy, border=8, col=gray(.5, alpha = .3))
abline(v=1981, lty=3)  
grid()

Figura VI.8 Previsão de 12 trimestres para a série de ganhos trimestrais da Johnson & Johnson. As previsões são mostradas como uma continuação dos dados, pontos conectados por uma linha sólida. A área cinza representa os limites de duas vezes a raíz do MSPE.


Observe que a decomposição de Cholesky de \(Q\) não existe aqui, no entanto, a forma diagonal nos permite usar desvios-padrão para os primeiros dois elementos diagonais de \(cQ\). Esse tecnicismo pode ser evitado usando uma forma do modelo que apresentamos na próxima seção.


VI.6 Modelos de espaço de estados com erros correlacionados


Às vezes, é vantajoso escrever o modelo de espaço de estado de uma maneira ligeiramente diferente, como é feito por vários autores; por exemplo, Anderson and Moore (1979) e Hannan and Deistler (1988). Aqui, escrevemos o modelo de espaço de estado como \[\begin{array}{rcl} X_{t+1} & = & \Phi X_t \, + \, \Upsilon U_{t+1} \, + \, \Theta W_t, \qquad t=0,1,\cdots,n \\ Y_t & = & A_t X_t \, + \, \Gamma U_t \, + \, \nu_t, \qquad t=1,2,\cdots,n, \end{array}\]

onde, na equação de estado, \(X_0\sim N_p(\mu_0,\Sigma_0)\), \(\Phi\) é \(p\times p\) e \(\Upsilon\) é \(p\times r\), \(\Theta\) é \(p\times m\) e \(W_t\sim N_m(0,Q)\) idependentes igualmente distribuídas.

Na equação de observações, \(A_t\) é \(q\times p\), \(\Gamma\) é \(q\times r\) e \(\nu_t\sim N_q(0,R)\) idependentes igualmente distribuídas. Neste modelo, embora \(W_t\) e \(\nu_t\) ainda sejam séries de ruído branco, ambos independentes de \(X_0\), também permitimos que o ruído de estado e o ruído de observação sejam correlacionados no tempo \(t\); isso é, \[\begin{equation*} \mbox{Cov}(W_s\nu_t) \, = \, S\delta_s, \end{equation*}\] onde \(\delta_s\) é a função delta de Kronecker; observe que \(S\) é uma matriz \(m\times q\).

A principal diferença entre esta forma do modelo e a especificada na Definição VI.1 é que este modelo inicia o processo de ruído de estado em \(t = 0\) para facilitar a notação relacionada à covariância concorrente entre \(W_t\) e \(\nu_t\). Além disso, a inclusão da matriz \(\Theta\) nos permite evitar o uso de um processo de ruído de estado singular, como foi feito no Exemplo VI.10.

Para obter as inovações, \(\epsilon_t = Y_t - A_tX_t^{t-1} -\Gamma U_t\) e a variância da inovação \(\Sigma_t = A_t P_t^{t-1}A_t^\top + R\), neste caso, precisamos das previsões de estado um passo à frente. Obviamente, as estimativas filtradas também serão de interesse e serão necessárias para suavização. O Teorema VI.2, o alisamente, conforme exibido na Seção VI.2, ainda se mantém. A propriedade a seguir gera o preditor \(X_{t+1}^t\) a partir do preditor anterior \(X_t^t\) quando os termos de ruído são correlacionados e exibe a atualização do filtro.



Teorema VI.5. O filtro de Kalman com ruído correlacionado
Para o modelo de espaço de estado especificado na Definição V.1, com \(K_t\), \(J_t\), \(t=1,\cdots,n\) e \(P_n^n\), obtidas segundo o filtro de Kalman (Teorema VI.1) e o alisamento de Kalman (Teorema VI.2), e com condição inicial \[\begin{array}{rcl} P_{n,n-1}^n & = & \displaystyle (\mbox{I} \, - \, K_nA_n)\Phi P_{n-1}^{n-1}, \end{array}\]

para \(t=n,n-1,\cdots,2\), \[\begin{equation} P_{t-1,t-2}^n \, = \, P_{t-1}^{t-1}J_{t-2}^\top \, + \, J_{t-1} \big(P_{t,t-1}^n \, - \, \Phi P_{t-1}^{t-1}\big)J_{t-2}^\top\cdot \end{equation}\]

Demonstração. As derivações de \(X_t^{t-1} = \displaystyle \Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t\) e \(P_t^{t-1} = \displaystyle \Phi P_{t-1}^{t-1} \Phi' \, + \, Q\), seguem de cálculos diretos, porque das equações de estados (A) temos \[\begin{equation*} X_t^{t-1} \, = \, \mbox{E}(X_t \, | \, Y_{1:t-1}) \, = \, \mbox{E}(\Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t \, + \, W_t \, | \, Y_{1:t-1}) \, = \, \Phi X_{t-1}^{t-1} \, + \, \Upsilon U_t, \end{equation*}\] e assim \[\begin{equation*} \begin{array}{rcl} P_t^{t-1} & = & \displaystyle \mbox{E}\big( (X_t-X_t^{t-1})(X_t-X_t^{t-1})^\top\big) \\ & = & \displaystyle \mbox{E}\Big( \big(\Phi(X_{t-1}-X_{t-1}^{t-1})+W_t\big)\big(\Phi(X_{t-1}-X_{t-1}^{t-1})+W_t\big)^\top\Big) \\ & = & \displaystyle \Phi P_{t-1}^{t-1}\Phi^\top \, + \, Q\cdot \end{array} \end{equation*}\] Para demonstrarmos que \(X_t^{t} = \displaystyle X_{t}^{t-1} \, + \, K_t\big( Y_t-A_t X_t^{t-1}-\Gamma U_t \big)\) notamos que \(\mbox{Cov}(\epsilon_t,Y_s) = 0\) para \(s < t\), que tendo em vista o fato da sequência de inovações ser um processo gaussiano, implica que as inovações são independentes das observações anteriores. Além disso, a covariância condicional entre \(X_t\) e \(\epsilon_t\) dado \(Y_{1:t-1}\) é \[\begin{equation*} \begin{array}{rcl} \mbox{Cov}(X_t, \epsilon_t \, | \,Y_{1:t-1}) & = & \mbox{Cov}(X_t, Y_t \, - \, A_t X_t^{t-1} - \, \Gamma U_t \, | \,Y_{1:t-1}) \\ & = & \mbox{Cov}(X_t - X_t^{t-1}, Y_t \, - \, A_t X_t^{t-1} - \, \Gamma U_t \, | \, Y_{1:t-1} ) \\ & = & \mbox{Cov}(X_t - X_t^{t-1}, A_t (X_t-X_t^{t-1})+\nu_t) \, = \, P_t^{t-1} A_t^\top\cdot \end{array} \end{equation*}\] Usando esses resultados, temos que a distribuição condicional conjunta de \(X_t\) e \(\epsilon_t\) dado \(Y_{1:t-1}\) é normal \[\begin{equation*} \begin{pmatrix} X_t \\ \epsilon_t \end{pmatrix} \Big| Y_{1:t-1} \, \sim \, N\left( \begin{pmatrix} X_t^{t-1} \\ 0 \end{pmatrix}, \begin{pmatrix} P_t^{t-1} & P_t^{t-1}A_t^\top \\ A_tP_t^{t-1} & \Sigma_t \end{pmatrix}\right)\cdot \end{equation*}\] Utilizando o resultado (B.9) no Apêndice B, podemos escrever \[\begin{equation*} X_t^t \, = \, \mbox{E}(X_t \, | \, Y_{1:t}) \, = \, \mbox{E}(X_t \, | \, Y_{1:t-1},\epsilon_t) \, = \, X_t^{t-1} \, + \, K_t \epsilon_t, \end{equation*}\] onde \[\begin{equation*} K_t \, = \, P_t^{t-1} A_t^\top \Sigma_t^{-1} \, = \, P_t^{t-1} A_t^\top (A_t P_t^{t-1} A_t^\top +R)^{-1}\cdot \end{equation*}\] A avaliação de \(P_t^t\) pode ser realizada utilizando os resultados anteriores como \[\begin{equation*} P_t^t \, = \, \mbox{Cov}(X_t \, | \, Y_{1:t-1},\epsilon_t) \, = \, P_t^{t-1} \, - \, P_t^{t-1}A_t^\top\Sigma_t^{-1}A_t P_t^{t-1}, \end{equation*}\] que implica em \(P_t^{t} = \displaystyle \big(\mbox{I}-K_t A_t \big) P_{t}^{t-1}\).



Nas próximas duas subseções, mostramos como usar o modelo de espaço de estados para ajustar modelos ARMAX e modelos de regressão multivariados com erros autocorrelacionados. Para resumir, para modelos ARMAX, as entradas entram na equação de estado e para a regressão com erros autocorrelacionados, as entradas entram na equação de observação. Obviamente, é possível combinar os dois modelos e daremos um exemplo disso no final da seção.


VI.6.1 Modelo ARMAX


Considere o modelo ARMAX \(k\)-dimensinal dado a seguir \[\begin{equation*} Y_t \, = \, \Upsilon U_t \, + \, \sum_{j=1}^p \Phi_j Y_{t-j} \, + \, \sum_{k=1}^q \Theta_k \nu_{t-k} \, + \, \nu_t\cdot \end{equation*}\]

As observações \(Y_t\) são um processo vetorial \(k\)-dimensional, os \(\Phi\)s e \(\Theta\)s são matrizes \(k\times k\), \(\Upsilon\) é \(k\times r\), \(U_t\) é a entrada \(r\times 1\) e \(\nu_t\) é um processo de ruído branco \(k\times 1\); de fato, o modelo acima e aquele apressentado na Definição VI.1 são modelos idênticos, mas aqui escrevemos as observações como \(Y_t\).

Agora temos a seguinte propriedade.



Teorema VI.6. Uma forma de espaço de estado do ARMAX
Para \(p\geq q\), seja \[\begin{equation*} F \, = \, \begin{pmatrix} \Phi_1 & \pmb{I} & 0 & \cdots & 0 \\ \Phi_2 & 0 & \pmb{I} & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \Phi_{p-1} & 0 & 0 & \cdots & \pmb{I} \\ \Phi_p & 0 & 0 & \cdots & 0 \end{pmatrix}, \, G \, = \, \begin{pmatrix} \Theta_1 + \Phi_1 \\ \vdots \\ \Theta_q+\Phi_q \\ \Phi_{q+1} \\ \vdots \\ \Phi_p \end{pmatrix}, \, H \, = \, \begin{pmatrix} \Upsilon \\ 0 \\ \vdots \\ 0 \end{pmatrix}, \end{equation*}\] onde \(F\) é de simensão \(kp\times kp\), \(G\) é \(kp\times k\) e \(H\) é \(kp\times r\). Então, o modelo de espaço de estados dado por \[\begin{array}{rcl} x_{t+1} & = & F x_{t}+Hu_{t+1}+G\nu_t \\ y_t & = & Ax_t +\nu_t, \end{array}\]

onde \(A=\begin{pmatrix} \pmb{I}, 0, \cdots,0\end{pmatrix}\) é \(k\times pk\) e \(\pmb{I}\) é a matriz identidade de dimensão \(k\times k\), implica no modelo ARMAX acima. Caso \(p<q\), fazemos \(\Phi_{p+1}=\cdots=\Phi_q=0\) e no caso \(p=q\) as expressões acima ainda se aplicam. Observe que o processo de estado é \(kp\)-dimensional, enquanto as observações são \(k\)-dimensionais.

Demonstração. Não provamos o teorema diretamente, mas o exemplo a seguir deve sugerir como estabelecer o resultado geral.




Exemplo VI.11. ARMAX(1,1) como espaço de estados.


Considere o modelo ARMAX(1,1) univariado \[\begin{equation} y_t \, = \, \alpha_t+\phi y_{t-1}+\theta \nu_{t-1}+\nu_t, \end{equation}\] onde \(\alpha_t=\Upsilon u_t\) para facilitar a notação.

Para um exemplo simples, se \(\Upsilon=(\beta_0,\beta_1)\) e \(u_t=(1,t)^\top\), o modelo para \(y_t\) seria ARMA(1,1) com tendência linear \[\begin{equation} y_t=\beta_0+\beta_t t +\phi y_{t-1}+\theta \nu_{t-1}+\nu_t\cdot \end{equation}\]

Utilizando o Teorema VI.6, podemos escrever este modelo como \[\begin{equation} x_{t+1} \, = \, \phi x_t + \alpha_{t+1} +(\theta+\phi)\nu_t, \end{equation}\] e \[\begin{equation} y_{t} \, = \, x_t + \nu_t\cdot \end{equation}\]

Neste caso, a primeira das equações acima é a equação de estado com \(\omega_t=\nu_t\) e a segunda equação acima é a equação de observação.

Por consequência, \(\mbox{Cov}(\omega_t,\nu_t) = \mbox{Var}(\nu_t) = R\) e \(\mbox{Cov}(\omega_t,\nu_s) = 0\) quando \(s\neq t\), então o Teorema VI.5 se aplicaria.

Para verificar as equações acima e especificar um modelo ARMAX(1,1), temos \[\begin{array}{rcl} y_t & = & x_t+\nu_t \\ & = & \phi x_{t-1}+\alpha_t +(\theta+\phi)\nu_{t-1}+\nu_t \\ & = & \alpha_t +\phi(x_{t-1}+\nu_{t-1})+\theta \nu_{t-1}+\nu_t \\ & = & \alpha_t +\phi y_{t-1}+\theta \nu_{t-1}+\nu_t\cdot \end{array}\]


Juntos, o Teorema 6.5 e Teorema 6.6 podem ser usados para realizar a estimação por máxima verossimilhança conforme descrito na Seção 6.3 para modelos ARMAX. O modelo ARMAX é apenas um caso especial destes modelos, que é bastante rico, como veremos na próxima subseção.


VI.6.2 Regressão multivariada com erros autocorrelacionados


Na regressão com erros autocorrelacionados, estamos interessados em ajustar o modelo de regressão \[\begin{equation} y_t = \Gamma u_t + \epsilon_t, \end{equation}\] a um processo vetorial \(k\times 1\) \(y_t\), com \(r\) regressores \(u_t = (u_{t1},\cdots,u_{tr})^\top\) onde \(\epsilon_t\) é o vetor ARMA(p,q) é \(\Gamma\) uma matriz \(k\times r\) de parâmetros de regressão.

Notamos que os regressores não precisam variar com o tempo, por exemplo, \(u_{t1}=1\) inclui uma constante na regressão e que o caso \(k = 1\) foi tratado na Seção III.8.

Para colocar o modelo na forma de espaço de estados, notamos que \(\epsilon_t = y_t-\Gamma u_t\) é um processo ARMA(p,q) \(k\)-dimensional. Portanto, se definirmos \(H = 0\) e incluimos \(\Gamma u_t\), obtemos \[\begin{array}{rcl} x_{t+1} & = & F X_t + G \nu_t, \\ y_t & = & \Gamma u_t + Ax_t + \nu_t, \end{array}\]

onde as matrizes modelo \(A\), \(F\) e \(G\) são definidas no Teorema VI.6.

O fato de que o modelo acima é uma regressão multivariada com erros autocorrelacionados decorre diretamente do Teorema VI.6, observando que, juntos, \(x_{t+1} = Fx_t + G\nu_t\) e \(\epsilon_t = Ax_t +\nu_t\) implicam \(\epsilon_t = y_t-\Gamma u_t\) é um vetor ARMA(p,q).

Como no caso dos modelos ARMAX, a regressão com erros autocorrelacionados é um caso especial do modelo de espaço de estados e os resultados do Teorema VI.5 podem ser usados para obter a forma das inovações da verossimilhança para a estimação dos parâmetros.


Exemplo VI.12. Mortalidade, Temperatura e Poluição.


Este exemplo combina as técnicas da Seção VI.6.1 e da Seção VI.6.2. Ajustaremos um modelo ARMAX ao cmort da série de mortalidade sem tendência. A parte de tendência do exemplo constitui a regressão com erros autocorrelacionados.

Aqui, consideramos \(M_t\) denotar a série semanal de mortalidade cardiovascular, \(T_t\) como a série de temperatura correspondente tempr e \(P_t\) como a série de partículas correspondente.

Uma análise preliminar sugere as seguintes considerações:

Um modelo AR(2) se ajusta bem ao \(M_t\) sem tendência:

library(astsa)
fit1 = sarima(cmort,2,0,0,xreg=time(cmort))
## initial  value 2.184467 
## iter   2 value 2.010634
## iter   3 value 1.747767
## iter   4 value 1.736198
## iter   5 value 1.732020
## iter   6 value 1.732018
## iter   7 value 1.732015
## iter   8 value 1.732009
## iter   9 value 1.731998
## iter  10 value 1.731983
## iter  11 value 1.731978
## iter  12 value 1.731975
## iter  13 value 1.731975
## iter  14 value 1.731975
## iter  15 value 1.731974
## iter  16 value 1.731974
## iter  17 value 1.731973
## iter  18 value 1.731972
## iter  19 value 1.731972
## iter  19 value 1.731972
## final  value 1.731972 
## converged
## initial  value 1.732498 
## iter   2 value 1.732496
## iter   3 value 1.732484
## iter   4 value 1.732480
## iter   5 value 1.732471
## iter   6 value 1.732463
## iter   7 value 1.732451
## iter   8 value 1.732446
## iter   9 value 1.732445
## iter  10 value 1.732445
## iter  10 value 1.732445
## final  value 1.732445 
## converged

A função de correlação cruzada entre os resíduos de mortalidade, a série de temperatura e a série de particulados, mostra uma forte correlação com a temperatura defasada uma semana \(T_{t-1}\), nível de particulado concorrente \(P_t\) e o nível de particulado cerca de um mês antes \(P_{t-4}\).

acf(cbind(dmort <- resid(fit1$fit), tempr, part))

lag2.plot(tempr, dmort, 8)

lag2.plot(part, dmort, 8)

A partir desses resultados, decidimos ajustar o modelo ARMAX \[\begin{equation} \widetilde{M}_t = \phi_1 \widetilde{M}_{t-1} +\phi_2 \widetilde{M}_{t-2}+\beta_1 T_{t-1}+\beta_2 P_t +\beta_3 P_{t-4}+\nu_t \end{equation}\] para a série de mortalidade sem tendência, \[\begin{equation} \widetilde{M}_t = M_t-(\alpha=\beta_4 t), \end{equation}\]
onde \(\nu_t\sim N(0,\sigma_\nu^2)\) idependentes identicamente distribuídos.

Para escrever o modelo na forma de espaço de estados usando o Teorema VI.6, fazemos \[\begin{array}{rcl} x_{t+1} & = & \Phi x_t + \Upsilon u_{t+1}+ \Theta \nu_t, \qquad t=0,1,\cdots,n, \\ y_{t} & = & \alpha + A x_t +\Gamma u_t + \nu_t, \qquad t = 1,\cdots,n, \end{array}\]

com \[\begin{equation} \Phi = \begin{pmatrix} \phi_1 & 1 \\ \phi_2 & 0 \end{pmatrix}, \quad \Upsilon = \begin{pmatrix} \beta_1 & \beta_2 & \beta_3 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \end{pmatrix}, \quad \Theta = \begin{pmatrix} \phi_1 \\ \phi_2 \end{pmatrix}, \end{equation}\] \(A=\begin{pmatrix} 1 & 0 \end{pmatrix}\), \(\Gamma=\begin{pmatrix} 0 & 0 & 0 & \beta_4 & \alpha \end{pmatrix}\), \(u_t=(T_{t-1},P_t,P_{t-4},t,1)^\top\) e \(y_t=M_t\). Observe que o processo de estado é bivariado e o processo de observação é univariado.

Algumas notas adicionais de análise de dados são:

(1) O tempo é centralizado como $t-\overline{t}$. Neste caso, $\alpha$ deve estar próximo do valor médio de $M_t$. 

(2) $P_t$ e $P_{t-4}$ são altamente correlacionados, então ortogonalizar essas duas entradas seria vantajoso, embora não o tenhamos feito aqui, talvez por meio da separação parcial de $P_{t-4}$ de $P_t$ usando regressão linear simples. 

(3) $T_t$ e $T^2_t$, como no Capítulo II, não são necessários no modelo quando $T_{t-1}$ é incluído e 

(4) os valores iniciais dos parâmetros são retirados de uma investigação preliminar que discutimos agora.

Um método rápido e sujo para ajustar o modelo é primeiro eliminar a tendência de cmort e depois ajustar \(\widetilde{M}_t\) usando lm na série sem tendência. Em vez de usar lm na segunda fase, usamos sarima porque também fornece uma análise completa dos resíduos.

trend = time(cmort) - mean(time(cmort)) # center time
dcmort = resid(fit2 <- lm(cmort~trend, na.action=NULL))
fit2
## 
## Call:
## lm(formula = cmort ~ trend, na.action = NULL)
## 
## Coefficients:
## (Intercept)        trend  
##      88.699       -1.625
u = ts.intersect(dM=dcmort, dM1=lag(dcmort,-1), dM2=lag(dcmort,-2), 
                 T1=lag(tempr,-1), P=part, P4=lag(part,-4))
# lm(dM~., data=u, na.action=NULL) # and then anaylze residuals ... or
sarima(u[,1], 0,0,0, xreg=u[,2:6]) # get residual analysis as a byproduct
## initial  value 1.617677 
## iter   1 value 1.617677
## final  value 1.617677 
## converged
## initial  value 1.617677 
## iter   1 value 1.617677
## final  value 1.617677 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = xreg, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, 
##     REPORT = 1, reltol = tol))
## 
## Coefficients:
##       intercept     dM1     dM2       T1       P      P4
##          5.9884  0.3164  0.2989  -0.1826  0.1107  0.0495
## s.e.     2.6401  0.0370  0.0395   0.0309  0.0177  0.0195
## 
## sigma^2 estimated as 25.42:  log likelihood = -1530.45,  aic = 3074.91
## 
## $degrees_of_freedom
## [1] 498
## 
## $ttable
##           Estimate     SE t.value p.value
## intercept   5.9884 2.6401  2.2683  0.0237
## dM1         0.3164 0.0370  8.5442  0.0000
## dM2         0.2989 0.0395  7.5749  0.0000
## T1         -0.1826 0.0309 -5.9090  0.0000
## P           0.1107 0.0177  6.2378  0.0000
## P4          0.0495 0.0195  2.5463  0.0112
## 
## $AIC
## [1] 6.101008
## 
## $AICc
## [1] 6.101343
## 
## $BIC
## [1] 6.159655

Agora podemos usar o método de Newton-Raphson e o filtro de Kalman para ajustar todos os parâmetros simultaneamente porque o método rápido nos forneceu valores iniciais razoáveis.

Os resultados são próximos do método rápido e sujo:

trend = time(cmort) - mean(time(cmort)) # center time
const = time(cmort)/time(cmort) # appropriate time series of 1s
ded = ts.intersect(M=cmort, T1=lag(tempr,-1), P=part, P4=lag(part,-4),
trend, const)
y = ded[,1]
input = ded[,2:6]
num = length(y)
A = array(c(1,0), dim = c(1,2,num))
# Function to Calculate Likelihood
Linn = function(para){
  phi1=para[1]; phi2=para[2]; cR=para[3]; b1=para[4]
  b2=para[5]; b3=para[6]; b4=para[7]; alf=para[8]
  mu0 = matrix(c(0,0), 2, 1)
  Sigma0 = diag(100, 2)
  Phi = matrix(c(phi1, phi2, 1, 0), 2)
  Theta = matrix(c(phi1, phi2), 2)
  Ups = matrix(c(b1, 0, b2, 0, b3, 0, 0, 0, 0, 0), 2, 5)
  Gam = matrix(c(0, 0, 0, b4, alf), 1, 5); cQ = cR; S = cR^2
  kf = Kfilter(y, A, mu0, Sigma0, Phi, sQ=Theta, sR=cR, Ups, Gam, input, S, version = 2)
  return(kf$like) }
# Estimation
init.par = c(phi1=.3, phi2=.3, cR=5, b1=-.2, b2=.1, b3=.05, b4=-1.6, 
             alf=mean(cmort)) # initial parameters
L = c( 0, 0, 1, -1, 0, 0, -2, 70) # lower bound on parameters
U = c(.5, .5, 10, 0, .5, .5, 0, 90) # upper bound - used in optim
est = optim(init.par, Linn, NULL, method='L-BFGS-B', lower=L, upper=U, 
            hessian=TRUE, control=list(trace=0, REPORT=1, factr=10^8))
SE = sqrt(diag(solve(est$hessian)))
round(cbind(estimate=est$par, SE), 3) # results
##      estimate    SE
## phi1    0.410 0.045
## phi2    0.250 0.035
## cR      5.810 0.234
## b1     -0.113 0.031
## b2      0.112 0.017
## b3      0.063 0.019
## b4     -1.337 0.208
## alf    88.908 7.205

A análise residual envolve executar o filtro de Kalman com os valores finais estimados e, em seguida, investigar as inovações resultantes.

phi1 = est$par[1]; phi2 = est$par[2]
cR = est$par[3]; b1 = est$par[4]
b2 = est$par[5]; b3 = est$par[6]
b4 = est$par[7]; alf = est$par[8]
mu0 = matrix(c(0,0), 2, 1); Sigma0 = diag(100, 2)
Phi = matrix(c(phi1, phi2, 1, 0), 2)
Theta = matrix(c(phi1, phi2), 2)
Ups = matrix(c(b1, 0, b2, 0, b3, 0, 0, 0, 0, 0), 2, 5)
Gam = matrix(c(0, 0, 0, b4, alf), 1, 5)
cQ = cR
S = cR^2
kf = Kfilter(y, A, mu0, Sigma0, Phi, sQ = Theta, sR = cR, Ups, Gam, input, S, version = 2)
res = ts(as.vector(kf$innov), start=start(cmort), freq=frequency(cmort))
sarima(res, 0,0,0, no.constant=TRUE) # gives a full residual analysis

## $fit
## 
## Call:
## arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), 
##     xreg = xmean, include.mean = FALSE, transform.pars = trans, fixed = fixed, 
##     optim.control = list(trace = trc, REPORT = 1, reltol = tol))
## 
## 
## sigma^2 estimated as 25.73:  log likelihood = -1533.58,  aic = 3069.16
## 
## $degrees_of_freedom
## [1] 504
## 
## $ttable
##      Estimate p.value
## 
## $AIC
## [1] 6.089593
## 
## $AICc
## [1] 6.089593
## 
## $BIC
## [1] 6.097972

Finalmente, uma análise semelhante e mais simples pode ser ajustada usando um modelo ARMAX completo. Neste caso, o modelo seria \[\begin{equation} M_t = \alpha + \phi_1 M_{t-1}+ \phi_2 M_{t-2}+\beta_1 T_{t-1} +\beta_2 P_t +\beta_3 P_{t-4} +\beta_4 t + \nu_t, \end{equation}\] onde \(\nu_t\sim N(0,\sigma_\nu^2)\) independentes.

Este modelo é diferente daquele de \(\widetilde{M}_t\) em que o processo de mortalidade não tem tendência, mas a tendência aparece como uma variável exógena. Nesse caso, podemos usar o sarima para realizar a regressão e obter a análise residual como subproduto.

trend = time(cmort) - mean(time(cmort))
u = ts.intersect(M=cmort, M1=lag(cmort,-1), M2=lag(cmort,-2), 
                 T1=lag(tempr,-1), P=part, P4=lag(part,-4), trend)
sarima(u[,1], 0,0,0, xreg=u[,2:7]) # could use lm, but it's more work
## initial  value 1.615874 
## iter   1 value 1.615874
## final  value 1.615874 
## converged
## initial  value 1.615874 
## iter   1 value 1.615874
## final  value 1.615874 
## converged

## $fit
## 
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, 
##     Q), period = S), xreg = xreg, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, 
##     REPORT = 1, reltol = tol))
## 
## Coefficients:
##       intercept     M1      M2       T1       P      P4    trend
##         40.3838  0.315  0.2971  -0.1845  0.1113  0.0513  -0.5214
## s.e.     4.5982  0.037  0.0394   0.0309  0.0177  0.0195   0.0956
## 
## sigma^2 estimated as 25.32:  log likelihood = -1529.55,  aic = 3075.09
## 
## $degrees_of_freedom
## [1] 497
## 
## $ttable
##           Estimate     SE t.value p.value
## intercept  40.3838 4.5982  8.7825  0.0000
## M1          0.3150 0.0370  8.5185  0.0000
## M2          0.2971 0.0394  7.5403  0.0000
## T1         -0.1845 0.0309 -5.9750  0.0000
## P           0.1113 0.0177  6.2827  0.0000
## P4          0.0513 0.0195  2.6380  0.0086
## trend      -0.5214 0.0956 -5.4533  0.0000
## 
## $AIC
## [1] 6.101371
## 
## $AICc
## [1] 6.10182
## 
## $BIC
## [1] 6.168397

Notamos que os resíduos parecem bons e o ajuste do modelo é semelhante ao de \(\widetilde{M}_t\).



VI.7 Bootstrapping modelos de espaço de estados


Embora na Seção VI.3 tenhamos discutido o fato de que, sob condições gerais que assumimos serem válidas nesta seção, os estimadores de máxima verossimilhança dos parâmetros de um DLM são consistentes e assintoticamente normais, os dados da série temporal são frequentemente de comprimento curto ou moderado. Vários pesquisadores encontraram evidências de que as amostras devem ser bastante grandes antes que os resultados assintóticos sejam aplicáveis (Dent and Min, 1978; Ansley and Newbold, 1980).

Além disso, como discutimos no Exemplo III.36, problemas ocorrem se os parâmetros estão próximos do limite do espaço de parâmetros. Nesta seção, discutimos um algoritmo para bootstrapping modelos de espaço de estados; esse algoritmo e sua justificativa, incluindo o caso não gaussiano, juntamente com vários exemplos, podem ser encontrados em Stoffer and Wall (1991) e em Stoffer and Wall (2004). Em vista da Seção VI.6, qualquer coisa que fizermos ou dissermos aqui sobre DLMs se aplica igualmente aos modelos ARMAX.

Usando o DLM dado pela Definião VI.1 e Teorema VI.5, escrevemos a forma de inovações do filtro como: \[\begin{array}{rcl} \epsilon_t & = & Y_t-A_t X_t^{t-1} -\Gamma U_T, \\ \Sigma_t & = & A_t P_t^{t-1} A_t^\top +R, \\ K_t & = & \left(\Phi P_t^{t-1}A_t^\top+\Theta S \right)\Sigma_t^{-1},\\ X_{t+1}^t & = & \Phi X_t^{t-1}+\Upsilon U_{t+1}+K_t \epsilon_t,\\ P_{t+1}^t & = & \Phi P_t^{t-1}\Phi^\top+\Theta Q \Theta^\top -K_t \Sigma_t K_t^\top\cdot \end{array}\]

Esta forma do filtro é; apenas um rearranjo do filtro dado no Teorema VI.5.

Além disso, podemos reescrever o modelo para obter sua forma de inovações: \[\begin{array}{rcl} X_{t+1}^t & = & \Phi X_t^{t-1}+\Upsilon U_{t+1}+K_t \epsilon_t,\\ Y_t & = & A_t X_t^{t-1}+\Gamma U_t + \epsilon_t\cdot \end{array}\]

Esta forma do modelo é uma reescrita do modelo acima e acomoda o algoritmo de bootstrapping.

Como discutido no Exemplo VI.5, embora as inovações \(\epsilon_t\) não sejam correlacionadas, inicialmente \(\Sigma_t\) pode ser muito diferente para diferentes momentos \(t\). Assim, em um procedimento de reamostragem, podemos ignorar os primeiros poucos valores de \(\epsilon_t\) até que \(\Sigma_t\) estabilize ou podemos trabalhar com as inovações padronizadas \[\begin{equation*} e_t \,= \, \Sigma_t^{-1/2}\epsilon_t, \end{equation*}\] portanto, temos a garantia de que essas inovações terão, pelo menos, os mesmos dois primeiros momentos. Na expressão acima \(\Sigma_t^{1/2}\) denota a matriz raiz quadrada única de \(\Sigma_t\), definida por \(\Sigma_t^{1/2}\Sigma_t^{1/2} = \Sigma_t\).

A seguir, baseamos o procedimento de bootstrap nas inovações padronizadas, mas ressaltamos o fato de que mesmo neste caso, pode ser necessário ignorar os valores de inicialização, conforme observado por Stoffer and Wall (1991).

Os coeficientes do modelo e a estrutura de correlação do modelo são parametrizados exclusivamente por um vetor \(k\times 1\) de parâmetros \(\Theta_0\); isso é, \(\Phi=\Phi(\Theta_0)\), \(\Upsilon=\Upsilon(\Theta_0)\), \(Q=Q(\Theta_0)\), \(A_t=A_t(\Theta_0)\), \(\Gamma=\Gamma(\Theta_0)\) e \(R=R(\Theta_0)\). Lembre-se de que a forma da inovação da verossimilança Gaussiana, ignorando uma constante, é \[\begin{equation*} -2\ln\big(L_Y(\Theta) \big) \, = \, \sum_{t=1}^n \left(\ln\Big(\Sigma_t(\Theta)\Big)+\epsilon_t(\Theta)^\top \Sigma_t(\Theta)^{-1}\epsilon_t(\Theta) \right) \, = \, \sum_{t=1}^n \left(\ln\Big(\Sigma_t(\Theta)\Big)+e_t(\Theta)^\top e_t(\Theta)\right)\cdot \end{equation*}\]
Ressaltamos o fato de que não é necessário que o modelo seja Gaussiano para considerar a verossimilhança acima como a função critério a ser utilizada para a estimação dos parâmetros.

Seja \(\widehat{\Theta}\) o estimador de máxima verossimilhança de \(\Theta_0\), ou seja, \(\widehat{\Theta} = \mbox{argmax}_\Theta L_Y(\Theta)\), obtido pelos métodos discutidos na Seção VI.3. Sejam \(\epsilon_t(\widehat{\Theta})\) e \(\Sigma_t(\widehat{\Theta})\) os valores de inovação obtidos pela execução do filtro no começo desta seção, avaliados em \(\widehat{\Theta}\). Uma vez feito isso, o procedimento de bootstrap não paramétrico, o qual refere-se ao fato de que usamos a distribuição empírica das inovações ao invés de assumir que elas têm uma forma paramétrica, é realizado pelas etapas a seguir:

No próximo exemplo, discutimos o caso de um modelo de regressão linear, mas onde os coeficientes de regressão são estocásticos e podem variar com o tempo. O modelo de espaço de estados fornece uma configuração conveniente para a análise de tais modelos.


Exemplo VI.13. Regressão estocástica.


A Figura VI.9 mostra a taxa de inflação trimestral (linha sólida) \(Y_t\), no Índice de Preços ao Consumidor e a taxa de juros trimestral registrada para Títulos do Tesouro (linha tracejada) \(Z_t\), do primeiro trimestre de 1953 até o segundo trimestre de 1980, \(n = 110\) observações. Esses dados foram retirados de Newbold and Bos (1985).

library(astsa)
tol = sqrt(.Machine$double.eps) # determina a convergência do otimizador
nboot = 500 # n&uacute;mero de r&eacute;plicas bootstrap
y = window(qinfl, c(1953,1), c(1965,2)) # inflação
z = window(qintr, c(1953,1), c(1965,2)) # juro
plot(qinfl, ylab="Rate (%)")
lines(qintr, col="blue", lty=4, lwd=2)
grid()
legend("topleft", legend = c("Inflation", "Interest"), col=c("black","blue"), lty=c(1,4), lwd=c(1,2))

Figura VI.9 Taxa de juros trimestral dos Títulos do Tesouro (linha tracejada, na legenda mostrada como Interest) e taxa de inflação trimestral (linha contínua, na legenda mostrada como Inflation) do Índice de Preços ao Consumidor.

Neste exemplo, consideramos uma análise que foi discutida em Newbold and Bos (1985, pp. 61-73), que se concentrou nas primeiras 50 observações e onde a inflação trimestral foi modelada como sendo estocasticamente relacionada à taxa de juros trimestral, \[\begin{equation*} Y_t \, = \, \alpha+\beta_t Z_t+\nu_t, \end{equation*}\] onde \(\alpha\) é uma constante fixa, \(\beta_t\) é um coeficiente de regressão estocástica e \(\nu_t\) é ruído branco com variância \(\sigma_{_\nu}^2\). O termo de regressão estocástica, que compreende a variável de estado, é especificado por uma autorregressão de primeira ordem, \[\begin{equation*} (\beta_t-b) \, = \, \phi (\beta_{t-1}-b)+W_t, \end{equation*}\] onde \(b\) é uma constante e \(W_t\) é ruído branco com variância \(\sigma_{_W}^2\). Os processos de ruído \(\nu_t\) e \(W_t\), são considerados não correlacionados.

Usando a notação do modelo de espaço de estados, temos na equação de estado \(X_t=\beta_t\), \(\Phi=\phi\), \(U_t=1\), \(\Upsilon=(1-\phi)b\), \(Q=\sigma_{_W}^2\) e na equação de observações \(A_t=Z_t\), \(\Gamma=\alpha\), \(R=\sigma_{_\nu}^2\) e \(S=0\).

O vetor de parâmetro é \(\Theta = (\phi,\alpha,b,\sigma_{_W},\sigma_{_\nu})\). Os resultados do procedimento de estimação de Newton-Raphson estão listados nas saídas abaixo. Também são mostrados os erro padrão correspondentes obtidos de \(B = 500\) execuções do bootstrap.

Esses erro padrão são simplesmente os desvios padrão das estimativas bootstrapped, ou seja, a raiz quadrada de \[\begin{equation*} \sum_{b=1}^B (\widehat{\Theta}_{ib}^*-\widehat{\Theta}_i)^2/(B-1), \end{equation*}\] onde \(\widehat{\Theta}_i\) representa a estimativa de máxima verossimilhança do \(i\)-ésimo parâmetro, \(\Theta_i\), para \(i=1,\cdots,5\).

Os erro padrão assintóticos listados são muito menores do que aqueles obtidos no bootstrap. Para a maioria dos casos, os erro padrão bootstrapped são pelo menos 50% maiores do que o valor assintótico correspondente. Além disso, a teoria assintótica prescreve o uso da teoria normal ao lidar com as estimativas dos parâmetros. O bootstrap, no entanto, nos permite investigar a pequena distribuição amostral dos estimadores e, portanto, fornece mais informações sobre a análise de dados.

Por exemplo, a Figura VI.10 mostra a distribuição bootstrap do estimador de \(\phi\) no canto superior esquerdo. Esta distribuição é altamente enviesada, com valores concentrados em torno de 0.8, mas com uma cauda longa à esquerda.

Alguns quantis são -0.09 (5%), 0.11 (10%), 0.34 (25%), 0.73 (50%), 0.86 (75%), 0.96 (90%), 0.98 (95%) e podem ser usados para obter intervalos de confiança. Por exemplo, um intervalo de confiança de 90% para \(\widehat{\phi}\) seria aproximado por (-0.09, 0.96). Este intervalo é ridiculamente amplo e inclui 0 como um valor plausível de \(\phi\); vamos interpretar isso depois de discutir os resultados da estimativa de \(\sigma_{_W}\).

A Figura VI.10 mostra a distribuição bootstrap de \(\widehat{\sigma}_{_W}\) no canto inferior direito. A distribuição está concentrada em dois locais, um em aproximadamente \(\widehat{\sigma}_{_W} = 0.25\), que é a mediana da distribuição dos valores longe de 0, e o outro em \(\widehat{\sigma}_{_W} = 0\). Os casos em que \(\sigma_{_W}\approx 0\) correspondem a dinâmicas de estado determinísticas. Quando \(\sigma = 0\) e \(|\phi| <1\), então \(\beta_t\approx b\) para \(t\) grande, então aproximadamente 25% dos casos em que \(\widehat{\sigma}_{_W}\approx 0\) sugerem um estado fixo ou modelo de coeficiente constante. Os casos em que \(\widehat{\sigma}_{_W}\) está longe de zero sugerem um parâmetro de regressão verdadeiramente estocástico.

Para investigar este assunto mais a fundo, os pontos fora da diagonal principal na Figura VI.10 mostram as estimativas conjuntas obtidas por bootstrap de \(\widehat{\phi},\widehat{\sigma}_{_W}\), para valores positivos de \(\widehat{\phi}^*\). A distribuição conjunta sugere que \(\widehat{\sigma}_{_W}> 0\) corresponde a \(\widehat{\phi}\approx 0\). Quando \(\phi= 0\), a dinâmica do estado é dada por \(\beta_t = b + W_t\). Se, além disso, \(\sigma_{_W}\) for pequeno em relação a \(b\), o sistema é quase determinístico; ou seja, \(\beta_t\approx b\). Considerando esses resultados, a análise do bootstrap nos leva a concluir que a dinâmica dos dados é melhor descrita em termos de um efeito de regressão fixo.

O código R a seguir foi usado para este exemplo. Observamos que as primeiras linhas do código definem a tolerância relativa para determinar a convergência da otimização numérica e o número de réplicas bootstrap.

Usar as configurações atuais pode resultar em um longo tempo de execução do algoritmo e sugerimos que a tolerância e o número de réplicas bootstrap sejam reduzidos em máquinas mais lentas ou para fins de demonstração. Por exemplo, definir tol = .001 e nboot = 200 produz resultados razoáveis.

Neste exemplo, fixamos os três primeiros valores dos dados para o esquema de reamostragem.

library(astsa)
num = length(y)
A = array(z, dim=c(1,1,num))
input = matrix(1,num,1)
# Function to Calculate Likelihood
Linn = function(para, y.data){ # pass data also
   phi = para[1]; alpha = para[2]
   b = para[3]; Ups = (1-phi)*b
   sQ = para[4]; sR = para[5]
   kf = Kfilter(y.data,A,mu0,Sigma0,phi,sQ,sR,Ups,alpha,input,version=2)
   return(kf$like) }
# Estimação dos parâmetros
mu0 = 1; Sigma0 = .01
init.par = c(phi=.84, alpha=-.77, b=.85, cQ=.12, cR=1.1) # valores iniciais
est = optim(init.par, Linn, NULL, y.data=y, method="BFGS", hessian=TRUE,
             control=list(trace=FALSE, REPORT=1, reltol=tol))
SE = sqrt(diag(solve(est$hessian)))
phi = est$par[1]; alpha = est$par[2]
b = est$par[3]; Ups = (1-phi)*b
cQ = est$par[4]; cR = est$par[5]
round(cbind(estimate=est$par, SE), 3)
##       estimate    SE
## phi      0.865 0.223
## alpha   -0.686 0.487
## b        0.788 0.226
## cQ       0.115 0.107
## cR       1.135 0.147
# Começando o bootstrap
# Executando o filtro nas estimativas
kf = Kfilter(y,A,mu0,Sigma0,phi,cQ,cR,Ups,alpha,input,version=2)
# Retirando os valores necessários do filtro e inicialize
xp = kf$Xp
innov = kf$innov
sig = kf$sig
K = kf$Kn
e = innov/sqrt(sig)
e.star = e # valores iniciais 
y.star = y
xp.star = xp
k = 4:50 # fixando as primeiras 3 observações
para.star = matrix(0, nboot, 5) # guardando as estimativas
init.par = c(.84, -.77, .85, .12, 1.1)
for (i in 1:nboot){
   e.star[k] = sample(e[k], replace=TRUE)
#   for (j in k){ xp.star[j] = phi*xp.star[j-1] + Ups+K[j]*sqrt(sig[j])*e.star[j] }
   y.star[k] = z[k]*xp.star[k] + alpha + sqrt(sig[k])*e.star[k]
   est.star = optim(init.par, Linn, NULL, y.data=y.star, method="BFGS", control=list(reltol=tol))
   para.star[i,] = cbind(est.star$par[1], est.star$par[2], est.star$par[3],
                         abs(est.star$par[4]), abs(est.star$par[5])) }
# Algumas estatísticas 
rmse = rep(NA,5) # SEs bootstrap
for(i in 1:5){
  rmse[i]=sqrt(sum((para.star[,i]-est$par[i])^2)/nboot)
  cat(i, rmse[i],"\n") }
## 1 0.343799 
## 2 0.4483991 
## 3 1.326792 
## 4 0.1567818 
## 5 0.2784017
# Gráfico de phi e sigw
phi = para.star[,1]
sigw = abs(para.star[,4])
phi = ifelse(phi<0, NA, phi) # any phi < 0 not plotted
library(psych) # lendo o pacote psych para scatter.hist
par(mar=c(4,4,2,1))
scatter.hist(sigw, phi, ylab=expression(phi), xlab=expression(sigma[~w]),
              smooth=FALSE, correl=TRUE, density=FALSE, ellipse=FALSE,
              title='', pch=19, col=gray(.1,alpha=.33),
              panel.first=grid(lty=2), cex.lab=1.2)

Figura VI.10 Distribuições conjuntas e marginais bootstrap, \(B = 500\), de \(\widehat{\phi}\) e \(\widehat{\sigma}_{_W}\). Apenas os valores correspondentes a \(\widehat{\phi}^*\geq 0\) são mostrados.



VI.8 Alisamento por splines e o alisamento Kalman


Há uma conexão entre splines de suavização, por exemplo, Eubank (1993), Green (1993) or Wahba (1990) e modelos de espaço de estados. A ideia básica de suavizar por splines, lembre-se do Exemplo II.14, em tempo discreto é supor que os dados \(Y_t\) são gerados por \(Y_t = \mu_t + \epsilon_t\) para \(t = 1,\cdots,n\), onde \(\mu_t\) é uma função suave de \(t\) e \(\epsilon_t\) é ruído branco.

Na suavização cúbica com nós nos pontos de tempo \(t\), \(\mu_t\) é estimado minimizando \[\begin{equation*} \sum_{t=1}^n \big(y_t - \mu_t\big)^2 \, + \, \lambda \sum_{t=1}^n \big( \nabla^2\mu_t\big)^2, \end{equation*}\] com respeito a \(\mu_t\), onde \(\lambda> 0\) é um parâmetro de suavização. O parâmetro \(\lambda\) controla o grau de suavidade, com valores maiores produzindo estimativas mais uniformes.

Por exemplo, se \(\lambda= 0\), então o minimizador são os próprios dados \(\mu_t = y_t\); consequentemente, a estimativa não será uniforme. Se \(\lambda= \infty\), então a única maneira de minimizar a função acima é escolher o segundo termo como zero, ou seja, \(\nabla^2\mu_t = 0\), caso em que é da forma \(\mu = \alpha+\beta t\), e estamos na configuração da regressão linear, ou seja, a única solução geral para \(\nabla^2\mu_t = 0\) é da forma \(\mu = \alpha+\beta t\) segue da teoria das equações em diferenças; por exemplo, veja Mickens (1990). Portanto, a escolha de \(\lambda > 0\) é vista como uma compensação entre o ajuste de uma linha que passa por todos os pontos de dados e a regressão linear.

Agora, considere o modelo dado por \[\begin{equation*} \nabla^2 \mu_t \, = \, W_t \qquad \mbox{e} \qquad Y_t \, = \, \mu_t+\nu_t, \end{equation*}\] onde \(W_t\) e \(\nu_t\) são processos de ruído branco independentes com \(\mbox{Var}(W_t)=\sigma_{_W}^2\) e \(\mbox{Var}(\nu_t)=\sigma_{_\nu}^2\). Reescrevendo o modelo acima como \[\begin{equation*} \begin{pmatrix} \mu_t \\ \mu_{t-1} \end{pmatrix} \, = \, \begin{pmatrix} 2 & -1 \\ 1 & 0 \end{pmatrix}\begin{pmatrix} \mu_{t-1} \\ \mu_{t-2} \end{pmatrix} \, + \, \begin{pmatrix} 1 \\ 0 \end{pmatrix} W_t \qquad \mbox{e} \qquad Y_t \, = \, \begin{pmatrix} 1 & 0 \end{pmatrix}\begin{pmatrix} \mu_t \\ \mu_{t-1} \end{pmatrix} \, + \, \nu_t, \end{equation*}\] de forma que o vetor de estados é \(X_t = (\mu_t,\mu_{t-1})^\top\). É claro então que o modelo acima especifica um modelo de espaço de estados.

Observe que o modelo é semelhante ao modelo de nível local discutido no Exemplo VI.5. Em particular, o processo de estado pode ser escrito como \(\mu_t = \mu_{t-1} + \eta_t\), onde \(\eta_t = \eta_{t-1} + W_t\). Um exemplo de tal trajetória pode ser visto na Figura VI.11; observe que os dados gerados na Figura VI.11 se parecem com os dados da temperatura global na Figura I.2.

A seguir, examinamos o problema de estimar os estados \(X_t\), quando os parâmetros do modelo \(\theta = \{\sigma_{_W}^2,\sigma_{_\nu}^2\}\), são especificados. Para facilitar, assumimos que \(X_0\) é fixo. Então, usando a notação da verossimilhança para os dados completos, o objetivo é encontrar o estimador de máxima verossimilhança de \(X_{1:n} = \{X_1,\cdots,X_n\}\) dado \(Y_{1:n} = \{Y_1,\cdots,Y_n\}\); ou seja, maximizar \[\begin{equation*} \log\big(p_\Theta (x_{1:n} \, | \, y_{1:n})\big), \end{equation*}\] em relação aos estados.

Por causa da Gaussianidade, o máximo ou moda da distribuição ocorre quando os estados são estimados por \(X_t^n\), a média condicional. Esses valores são, obviamente, os mais suaves obtidos por meio do Teorema VI.2.

Mas \[\begin{equation*} \log\big(p_\Theta (x_{1:n} \, | \, y_{1:n})\big)=\log\big(p_\Theta (x_{1:n} , y_{1:n})\big)-\log\big(p_\Theta (y_{1:n})\big), \end{equation*}\] de maneira que maximizar a verossimilhança dos dados completos, \(\log\big(p_\Theta (x_{1:n} \, , \, y_{1:n})\big)\) com respeito a \(x_{1:n}\), é um problema equivalente.

Escrevendo a verossimilhaça para dos dados completos sob a suposição Gaussiana em termos do modelo de \(\nabla^2 \mu_t\), temos \[\begin{equation*} -2\log\big(p_\Theta (x_{1:n} \, , \, y_{1:n})\big) \approx \frac{1}{\sigma_{_W}^2}\sum_{t=1}^n \big(\nabla^2\mu_t\big)^2+\frac{1}{\sigma_{_\nu}^2} \sum_{t=1}^n (y_t-\mu_t)^2, \end{equation*}\] onde mantivemos apenas os termos envolvendo os estados \(\mu_t\). Se definirmos \(\lambda=\sigma_{_\nu}^2/\sigma_{_W}^2\), podemos escrever \[\begin{equation*} -2\log\big(p_\Theta (x_{1:n} \, , \, y_{1:n})\big) \approx \lambda\sum_{t=1}^n \big(\nabla^2\mu_t\big)^2+\sum_{t=1}^n (y_t-\mu_t)^2, \end{equation*}\] de modo que maximizar \(\log\big(p_\Theta (x_{1:n} \, , \, y_{1:n})\big)\) em relação aos estados é equivalente a minimizar a expressão anterior, que é o problema original enunciado no começo desta seção.

No cenário geral de espaço de estados, estimaríamos \(\sigma_{_W}^2\) e \(\sigma_{_\nu}^2\) via máxima verossimilhança conforme descrito na Seção VI.3 e, em seguida, obtenriamos os valores do estado suavizado executando o Teorema VI.2 com as variâncias estimadas, digamos \(\widehat{\sigma}_{_W}^2\) e \(\widehat{\sigma}_{_\nu}^2\). Neste caso, o valor estimado do parâmetro de suavização seria dado por \(\widehat{\lambda}=\widehat{\sigma}_{_\nu}^2/\widehat{\sigma}_{_W}^2\).


Exemplo VI.14. Alisamento por Splines.


Neste exemplo, geramos o sinal ou processo de estado \(\mu_t\) e observações \(y_t\) do modelo de \(\nabla^2\mu_t\) com \(n = 50\), \(\sigma_{_W}=0.1\) e \(\sigma_{_\nu} = 1\). O estado é exibido na Figura VI.11 como uma espessura linha sólida e as observações são exibidas como pontos. Em seguida, estimamos \(\sigma_{_W}\) e \(\sigma_{_\nu}\) usando Newton-Raphson e obtivemos \(\widehat{\sigma}_{_W}=0.08\) e \(\widehat{\sigma}_{_\nu}=0.94\).

Depois, usamos o Teorema VI.2 para gerar os suavizadores estimados, digamos, \(\widehat{\mu}_t^n\) e esses valores são exibidos na Figura VI.11 como uma linha tracejada espessa junto com uma banda de confiança de 95% pontual correspondente, como linhas tracejadas finas. Finalmente, usamos a função R smooth.spline para ajustar um spline de suavização aos dados com base no método de validação cruzada generalizada (GCV). O spline ajustado é também exibido na Figura VI.11 como uma linha sólida fina, que está; perto de \(\widehat{\mu}_t^n\).

library(astsa)
set.seed(123)
num = 50
w = rnorm(num,0,.1)
x = cumsum(cumsum(w))
y = x + rnorm(num,0,1)
plot.ts(x, ylab="", lwd=2, ylim=c(-1,8))
lines(y, type='o', col=8)

par(mar=c(4,4,2,1))
plot.ts(x, ylab="", lwd=2, ylim=c(-1,8))
lines(y, type='o', col=8)
grid()
## State Space ##
Phi = matrix(c(2,1,-1,0),2); A = matrix(c(1,0),1)
mu0 = matrix(0,2); Sigma0 = diag(1,2)
Linn = function(para){
   sigw = para[1]; sigv = para[2]
   cQ = diag(c(sigw,0))
   kf = Kfilter(y, A, mu0, Sigma0, Phi, cQ, sigv)
   return(kf$like) }
## Estimation ##
init.par = c(.1, 1)
(est = optim(init.par, Linn, NULL, method="BFGS", hessian=TRUE,
              control=list(trace=FALSE,REPORT=1)))
## $par
## [1] 0.0816401 0.9385482
## 
## $value
## [1] 33.47605
## 
## $counts
## function gradient 
##       27        7 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##           [,1]     [,2]
## [1,] 557.49454 69.45007
## [2,]  69.45007 94.43305
SE = sqrt(diag(solve(est$hessian)))
# Summary of estimation
estimate = est$par; u = cbind(estimate, SE)
rownames(u) = c("sigw","sigv"); u
##       estimate         SE
## sigw 0.0816401 0.04443707
## sigv 0.9385482 0.10797015
# Smooth
sigw = est$par[1]
cQ = diag(c(sigw,0))
sigv = est$par[2]
ks = Ksmooth(y, A, mu0, Sigma0, Phi, cQ, sigv)
xsmoo = ts(ks$Xs[1,1,]); psmoo = ts(ks$Ps[1,1,])
upp = xsmoo+2*sqrt(psmoo); low = xsmoo-2*sqrt(psmoo)
lines(xsmoo, col=4, lty=2, lwd=3)
lines(upp, col=4, lty=2); lines(low, col=4, lty=2)
lines(smooth.spline(y), lty=1, col=2)
legend("topleft", c("Observations","State"), pch=c(1,-1), lty=1, lwd=c(1,2),
        col=c(8,1))
legend("bottomright", c("Smoother", "GCV Spline"), lty=c(2,1), lwd=c(3,1),
        col=c(4,2))

strong>Figura VI.11



VI.9 Modelos Ocultos de Markov e regressão automática alternada


Na introdução mencionamos que o modelo de espaço de estados é caracterizado por dois princípios. Primeiro, há um processo de estado oculto, \(\{X_t \, : \, t=0,1,\cdots\}\) assumido como markoviano, ou seja, \(X_t\) é uma Cadeia de Markov. Segundo, as observações, \(\{Y_t \, : \, t = 1,2,\cdots\}\), são independentes condicionalmente, considerando os estados. Os princpios foram exibidos na Figura VI.1 e depois escritos em termos de densidades como consequência do Corolário VI.1.

Temos focado principalmente nos modelos lineares gaussianos de espaço de estados, mas existe uma área inteira que se desenvolveu em torno do caso em que os estados \(X_t\) são uma Cadeia de Markov de valor discreto, e esse será o foco nesta seção.

A ideia básica é que o valor do estado no tempo \(t\) especifique a distribuição da observação no tempo \(t\). Esses modelos foram desenvolvidos em Goldfeld and Quandt (1973) e Lindgren (1978). As mudanças também podem ser modeladas na configuração de regressão clássica, permitindo que o valor do estado determine a matriz de projeto, como em Quandt (1972). Uma aplicação precoce ao reconhecimento de fala foi considerada por Juang and Rabiner (1985). Uma aplicação da ideia de mudar para o rastreamento de múltiplos alvos foi considerada em Bar-Shalom (1978), que obteve aproximações à filtragem de Kalman em termos de médias ponderadas das inovações. Como outro exemplo, alguns autores, por exemplo, Hamilton (1989) ou McCulloch and Tsay (1993), exploraram a possibilidade de que a dinâmica da economia de um país possa ser diferente durante a expansão do que durante a contração.

Na abordagem de Cadeia de Markov, declaramos que a dinâmica do sistema no momento \(t\) é gerada por um dos \(m\) regimes possíveis que evoluem de acordo com uma Cadeia de Markov ao longo do tempo. O caso em que o regime em particular seja desconhecido para o observador está sob o título de Modelos Ocultos de Markov (HMM) e as técnicas relacionadas à análise desses modelos estão resumidas em Rabiner and Juang (1986).

Embora o modelo satisfaça as condições de ser um modelo de espaço de estados, os HMMs foram desenvolvidos em paralelo. Se o processo de estado é de valor discreto, normalmente se usa o termo Modelo Oculto de Markov e se o processo de estado é de valor contínuo, usa-se o termo Modelo de Espaço de Estados ou uma de suas variantes. Os textos que cobrem a teoria e os métodos, no todo ou em parte, são Cappé, Moulines and Rydén (2009) e Douc, Moulines and Stoffer (2014). Um texto introdutório recente que usa R é Zucchini and MacDonald (2009).

Aqui, assumimos que os estados \(X_t\), são uma Cadeia de Markov que recebe valores em um espaço de estados finito \(\{1,2,\cdots,m\}\), com distribuição estacionária \[\begin{equation} \pi_j \, = \, P(X_t=j) \end{equation}\] e probabilidades de transição estacionárias \[\begin{equation} \pi_{ij} \, = \, P(X_{t+1}=j \, | \, X_t=i), \end{equation}\] para \(t=0,1,2,\cdots\) e \(i,j\in \{1,2,\cdots,m\}\). Como o segundo componente do modelo é que as observações são condicionalmente independentes, precisamos especificar as distribuições e as denotamos por \[\begin{equation} p_j(y_t) \, = \, P(Y_t = y_t \, | \, X_t =j)\cdot \end{equation}\]


Exemplo VI.15. Número de grandes terremotos.


Considere a série temporal das contagens anuais de grandes terremotos exibida na figura abaixo e discutidas em Zucchini and MacDonald (2009). Um modelo natural para dados de contagem ilimitada é uma distribuição de Poisson; nesse caso, a média e a variância são iguais. No entanto, a média da amostra e a variância amostrais são \(\overline{Y}_t = 19.36449\) e \(\widehat{\sigma}^2 = 51.57344\), portanto esse modelo é claramente inadequado.

Seria possível levar em conta a super-dispersão usando outras distribuições para contagens como a distribuição binomial negativa ou uma mistura de distribuições de Poisson. Essa abordagem, no entanto, ignora a ACF e a PACF amostrais exibidos na Figura VI.12, que indicam que as observações são serialmente correlacionadas e sugerem ainda uma estrutura de correlaçãdo tipo AR(1).

library(astsa)
data(EQcount)
par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
ts.plot(EQcount, type="h", xlab="Tempo")
grid()

par(mfrow = c(1,2), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
acf(EQcount)
grid()
pacf(EQcount)
grid()

Figura VI.12: Topo: Série de contagens anuais de grandes terremotos, ou seja, terremotos de magnitude 7 e mais no mundo entre 1900 e 2006. Inferior: ACF e PACF amostrais das contagens.

Uma maneira simples e conveniente de capturar ambos, a distribuição marginal e a dependência serial, é considerar um modelo de HMM de Poisson. Denotemos por \(Y_t\) o núero de grandes terremotos no ano \(t\) e considere o estado ou variável latente, \(X_t\) como uma Cadeia de Markov estacionária de dois estados, tendo valores em \(\{1,2\}\). Usando a notação acima, temos \(\pi_{12} = 1 - \pi_{11}\) e \(\pi_{21} = 1 - \pi_{22}\).

A distribuição estacionária dessa Cadeia de Markov é dada por \[\begin{equation} \pi_1 \, = \, \dfrac{\pi_{21}}{\pi_{12}+\pi_{21}} \qquad \mbox{e} \qquad \pi_2 \, = \, \dfrac{\pi_{12}}{\pi_{12}+\pi_{21}}, \end{equation}\] lembrando que a distribuição estacionária deve satisfazer que \(\pi_j=\sum_i \pi_i\pi_{ij}\).

Para \(j\in\{1,2,\}\), denotemos por \(\lambda_j>0\) os parâmetros da distribuição Poisson \[\begin{equation} p_j(y) \, = \, \dfrac{\lambda_j^y \, e^{-\lambda_j}}{y!}, \qquad y=0,1,\cdots\cdot \end{equation}\] Como os estados são estacionários, a distribuição marginal de \(Y_t\) é estacionária e uma mistura de Poissons, \[\begin{equation} p_\Theta(y_t) \, = \, \pi_1 p_i(y_t)+\pi_2 p_2(y_t), \end{equation}\] com \(\Theta=(\lambda_1,\lambda_2)\). A esperança da distribuição estacionária é \[\begin{equation} \mbox{E}(Y_t) \, = \, \pi_1\lambda_1 +\pi_2\lambda_2 \end{equation}\] e a variância \[\begin{equation} \mbox{Var}(Y_t) \, = \, \mbox{E}(Y_t)+\pi_1\pi_2(\lambda_2-\lambda_1)^2 \geq \mbox{E}(Y_t), \end{equation}\] implicando que o processo HMM de Poisson a dois estados é superdisperso. O resultado acima obtém-se lembrando que \(\mbox{Var}(U)=\mbox{E}\big(\mbox{Var}(U \, | \, V)\big)+\mbox{Var}\big(\mbox{E}(U \, | \, V)\big)\).

Cálculos semelhantes mostram que a função de autocorrelação de \(Y_t\) é dada por \[\begin{equation} \gamma_{_Y}(h) \, = \, \sum_{i=1}^2\sum_{j=1}^2 \pi_i(\pi_{ij}^h-\pi_j)\lambda_i\lambda_j \, = \, \pi_1\pi_2(\lambda_2-\lambda_1)^2(1-\pi_{12}-\pi_{21})^h\cdot \end{equation}\]

Assim, um processo HMM de Poisson de dois estados possui uma função de autocorrelação com decaimento exponencial e isso é consistente com a ACF amostral vista na Figura VI.12. Vale a pena notar que, se aumentarmos o número de estados, estruturas de dependência mais complexas podem ser obtidas.


Como no caso linear gaussiano, precisamos de filtros e suavisadores dos estados por si só e adicionalmente estimadores e previsõo. Em seguida, escrevemos \[\begin{equation} \pi_j(t \, | \, s) \, = \, P(X_t=j \, | \, Y_{1:s})\cdot \end{equation}\] Os cálculos diretos fornecem as equações do filtro apresentadas no seguinte Teorema.



Teorema VI.7. Filtro para os Modelos Ocultos de Markov
Para \(t=1,2,\cdots,n\), \[\begin{array}{rcl} \pi_j(t \, | \, t-1) & = & \displaystyle \sum_{i=1}^m \pi_i (t-1 \, | \, t-1) \pi_{ij}, \\[0.4em] \pi_j(t \, | \, t) & = & \displaystyle \dfrac{\pi_j(t)p_j(y_t)}{\displaystyle \sum_{i=1}^m \pi_i(t)p_i(y_t)}, \end{array}\]

com condição inicial \(\pi_j(1 \, | \, 0)=\pi_j\).

Demonstração. Exercício.



Denotemos por \(\Theta\) os parâmetros de interesse. Dados os dados \(Y_{1:n}=y_{1:n}\) a função de verossimilhança é dada por \[\begin{equation} L_T(\Theta) \, = \, \displaystyle \prod_{t=1}^n p_\Theta(y_t \, | \, y_{1:t-1})\cdot \end{equation}\] Mas, devido à independência condicional \[\begin{array}{rcl} p_\Theta(y_t \, | \, y_{1:t-1}) & = & \displaystyle \sum_{j=1}^m P(X_t=j \, | \, y_{1:t-1})p_\Theta(y_j \, | \, X_t=j,y_{1:t-1}) \\[0.4em] & = & \displaystyle \sum_{j=1}^m \pi_j(t \, | \, t-1)p_j(y_t)\cdot \end{array}\]

Por consequência \[\begin{equation} \ln \big( L_T(\Theta)\Big) \, = \, \displaystyle \sum_{t=1}^n \ln \left( \sum_{j=1}^m \pi_j(t \, | \, t-1)p_j(y_t)\right)\cdot \end{equation}\] A estimação por máxima verossimilhança pode então prosseguir como no caso gaussiano linear discutido na Seção VI.3.

Além disso, o algoritmo Baum-Welch ou algoritmo EM, discutido na Seção VI.3 também se aplica aqui. Primeiro, a verossimilhança geral dos dados completos ainda tem a forma \[\begin{equation} \ln \big( p_\Theta(x_{0:n},y_{1:n})\big) \, = \, \ln \big( p_\Theta(x_0)\big) + \sum_{t=1}^n \ln \big( p_\Theta(x_t \, | \, x_{t-1})\big) + \sum_{t=1}^n \ln \big( p_\Theta(y_t \, | \, x_t)\big)\cdot \end{equation}\]

É mais útil definir \(\mbox{I}_j(t)=1\) se \(X_t=j\) e zero caso contrário e ainda \(\mbox{I}_{ij}(t)=1\) se \((X_{t-1},X_t)=(i,j)\) e zero caso contrário, para \(i,j=1,\cdots,m\). Lembremos que \(P(\mbox{I}_j(t)=1)=\pi_j\) e \(P(\mbox{I}_{ij}(t)=1)=\pi_{ij}\pi_i\). Em seguida, a verossimilhança completa dos dados pode ser escrita como \[\begin{equation} \ln \big( p_\Theta(x_{0:n},y_{1:n})\big) \, = \, \displaystyle \sum_{j=1}^m \mbox{I}_j(0)\ln\big(\pi_j\big) + \sum_{t=1}^n\sum_{i=1}^m\sum_{j=1}^m \mbox{I}_{ij}(t)\ln\big(\pi_{ij}(t)\big) + \sum_{t=1}^n\sum_{j=1}^m \mbox{I}_j(t)\ln\big(p_{j}(y_t)\big), \end{equation}\] e, como antes, precisamos maximizar \[\begin{equation} Q(\Theta \, | \, \Theta') \, = \, \mbox{E}\Big( \ln\big(p_\Theta(x_{0:n},y_{1:n}) \, | \, y_{1:n},\Theta' \big)\Big)\cdot \end{equation}\]

Nesse caso, deve ficar claro que, além do filtro no Teorema VI.7, precisaremos \[\begin{equation} \pi_j(t \, | \, n) \, = \, \mbox{E}\big( \mbox{I}_j(t) \, | \, y_{1:n}\big) \, = \, P(X_t=j \, | \, y_{1:n}) \end{equation}\] para o primeiro e terceiro termos, e \[\begin{equation} \pi_{ij}(t\, | \, n) \, = \, \mbox{E}\big( \mbox{I}_{ij}(t) \, | \, y_{1:n}\big) \, = \, P(X_t=i, X_{t+1}=j \, | \, y_{1:n}), \end{equation}\] para o segundo termo. Na avaliação do segundo termo, como será visto, também devemos avaliar \[\begin{equation} \varphi_j(t) \, = \, p(y_{t+1:n} \, | \, X_t=j)\cdot \end{equation}\]



Teorema VI.8. Suavizamento para os Modelos Ocultos de Markov
Para \(t=1,2,\cdots,n\), \[\begin{array}{rcl} \pi_j(t \, | \, n) & = & \displaystyle \dfrac{\pi_j(t \, | \, t)\varphi_j(t)}{\displaystyle \sum_{i=1}^m \pi_i (t \, | \, t) \varphi_i(t)}, \\[0.4em] \pi_{ij}(t \, | \, n) & = & \displaystyle \dfrac{\pi_i(t \, | \, n)\pi_{ij}\, p_j(y_{t+1})\varphi_j(t+1)}{\displaystyle \varphi_i(t)}, \\[0.4em] \varphi_i(t) & = & \displaystyle \sum_{j=1}^m \pi_{ij} \, p_j(y_{t+1})\varphi_j(t+1), \end{array}\]

onde \(\varphi_j(n)=1\), para \(j=1,2,\cdots,m\).

Demonstração. A verificação de que \(\pi_j(t \, | \, n) = \displaystyle \dfrac{\pi_j(t \, | \, t)\varphi_j(t)}{\displaystyle \sum_{i=1}^m \pi_i (t \, | \, t) \varphi_i(t)}\) é deixada como exercício para o leitor. Para verificarmos que \(\varphi_i(t) = \displaystyle \sum_{j=1}^m \pi_{ij} \, p_j(y_{t+1})\varphi_j(t+1)\), notemos que \[\begin{array}{rcl} \varphi_i(t) & = & \displaystyle \sum_{j=1}^m p(y_{t+1:n}, x_{t+1}=j \, | \, x_t=i) \\ & = & \displaystyle \sum_{j=1}^m P(X_{t+1} =j \, | \, X_t=i)p(y_{t+1} \, | x_{t+1}=j)p(y_{t+2:n} \, | \, x_{t+1}=j) \\ & = & \displaystyle \sum_{j=1}^m \pi_{ij}p_j(y_{t+1})\varphi_j(t+1)\cdot \end{array}\] Para verificarmos que \(\pi_{ij}(t \, | \, n) = \displaystyle \dfrac{\pi_i(t \, | \, n)\pi_{ij}\, p_j(y_{t+1})\varphi_j(t+1)}{\displaystyle \varphi_i(t)}\), temos \[\begin{array}{rcl} \pi_{ij}(t \, | \, n ) & \approx & \displaystyle P(X_t=i, X_{t+1}=j, Y_{t+1},Y_{t+2:n} \, | \, Y_{1:t}) \\ & = & \displaystyle P(X_t=i \, | \, y_{1:t})P(X_{t+1}=j \, | \, x_t=i)p(y_{t+1} \, | \, x_{t+1}=j)p(y_{t+2:n} \, | \, x_{t+1}=j) \\ & = & \displaystyle \pi_i(t \, | \, t)\pi_{ij}p_j(y_{t+1})\varphi_j(t+1)\cdot \end{array}\]

Finalmente, para encontrar a constante de proporcionalidade, digamos \(C_t\), se somarmos sobre \(j\) em ambos os lados, obtemos \[\begin{equation*} \sum_{j=1}^m \pi_{ij}(t \, | \, n) \, = \, \pi_i(t\, | \, n) \qquad \mbox{e} \qquad \sum_{j=1}^m \pi_{ij}p_j(y_{t+1})\varphi_j(t+1) \, = \, \varphi_i(t)\cdot \end{equation*}\] Significa que \(\pi_i(t \, | \, n)=C_i \pi_i(t \, | \, t)\varphi_i(t)\) com o qual temos a expressão desejada.



Para o algoritmo Baum-Welch ou algoritmo EM, dado o valor atual dos parâmetros, digamos \(\Theta'\), executamos o filtro no Teorema VI.7 e o suavizamento no Teorema VI.8 e, como podemos observar da verossimilhança completa dos dados, atualizamos as duas primeiras estimativas como \[\begin{equation} \widehat{\pi}_j \, = \, \pi'_j(0 \, | \, n) \qquad \mbox{e} \qquad \widehat{pi}_{ij} \, = \, \displaystyle \dfrac{\displaystyle \sum_{t=1}^n \pi'_{ij}(t \, | \, n)} {\displaystyle \sum_{t=1}^n \sum_{k=1}^m \pi'_{ik}(t \, | \, n}\cdot \end{equation}\] Obviamente, o sinal primo indica que os valores foram obtidos sob \(\Theta'\) e o chapéu indica a atualização. Embora não seja o estimador de máxima verossimilhança, foi sugerido por Lindgren (1978) que uma estimativa natural da distribuição estacionária da cadeia seria \[\begin{equation} \widehat{\pi}_j \, = \, \dfrac{1}{n}\sum_{t=1}^n \pi'_j(t \, | \, n), \end{equation}\] em vez do valor fornecido na expressão anterior. Finalmente, o terceiro termo da verossimilhança completa dos dados, exigirá conhecer a distribuição de \(p_j(y_t)\) e isso dependerá do modelo específico. Discutiremos a distribuição de Poisson no Exemplo VI.15 e a distribuição normal no Exemplo VI.17.


Exemplo VI.16. Número de grandes terremotos (continuação)


Para executar o algoritmo EM neste caso, ainda precisamos maximizar a espetança condicional do terceiro termo da verossimilhança completa dos dados. A esperança condicional do terceiro termo no atual valor do parâmetro \(\Theta'\) é \[\begin{equation} \sum_{t=1}^n \sum_{j=1}^m \pi'_j(t \, | \, t-1)\ln\big( p_j(y_t)\big), \end{equation}\] onde \[\begin{equation} \log \big( p_j(y_t)\big) \approx y_t \log\big(\lambda_j\big)-\lambda_j\cdot \end{equation}\] Consequentemente, a maximização em relação a \(\lambda_j\) produz \[\begin{equation} \widehat{\lambda}_j \, = \, \dfrac{\displaystyle \sum_{t=1}^n \pi'_j(t \, | \, n)y_t}{\displaystyle \sum_{t=1}^n \pi'_j(t \, | \, n)}, \qquad j=1,2,\cdots,m\cdot \end{equation}\]

Ajustamos o modelo à série temporal de contagens de grandes terremotos usando o pacote R depmixS4. O pacote, que usa o algoritmo EM, não fornece erros padrão; portanto, foram obtidos por um procedimento de bootstrap paramétrico; ver Remillard (2011) para uma justificativa.

Os estimadores de máxima verossimilhança das intensidades, juntamente com seus erros padrão, foram \(\widehat{\lambda}_1,\widehat{\lambda}_2=(15.4_{(0.7)},26.0_{(1.1)})\). Os estimadores de máxima verossimilhança da matriz de transição foram \[\begin{equation} \begin{pmatrix} \widehat{\pi}_{11} & \widehat{\pi}_{12} \\ \widehat{\pi}_{21} & \widehat{\pi}_{22} \end{pmatrix} \, = \, \begin{pmatrix} 0.93_{(0.04)} & 0.07_{0.04} \\ 0.12_{(0.09)} & 0.88_{(0.09)} \end{pmatrix}\cdot \end{equation}\]

A Figura VI.13 exibe as contagens, os estados estimados exibidos como pontos e a distribuição de suavização dos dados dos grandes terremotos, modelados como um modelo HMM de Poisson de dois estados com parâmetros ajustados usando a estimação por máxima verossimilhança. Finalmente, um histograma dos dados é exibido juntamente com as duas densidades estimadas sobrepostas como linhas sólidas.

library(depmixS4); library(astsa)
model <- depmix(EQcount ~1, nstates=2, data=data.frame(EQcount), family=poisson())
set.seed(90210)
summary(fm <- fit(model)) # resultados da estimação
## converged at iteration 26 with logLik: -341.8787 
## Initial state probabilities model 
## pr1 pr2 
##   1   0 
## 
## Transition matrix 
##         toS1  toS2
## fromS1 0.928 0.072
## fromS2 0.119 0.881
## 
## Response parameters 
## Resp 1 : poisson 
##     Re1.(Intercept)
## St1           2.736
## St2           3.259
##-- Obtendo os Parâmetros --##
u = as.vector(getpars(fm)) # garantindo que o estado 1 tenha lambda menor
if (u[7] <= u[8]) { para.mle = c(u[3:6], exp(u[7]), exp(u[8]))} else { para.mle = c(u[6:3], exp(u[8]), exp(u[7])) }
mtrans = matrix(para.mle[1:4], byrow=TRUE, nrow=2)
lams = para.mle[5:6]
pi1 = mtrans[2,1]/(2 - mtrans[1,1] - mtrans[2,2]); pi2 = 1-pi1
##-- Gráficos --##
layout(matrix(c(1,2,1,3), 2))
par(mar = c(3,3,1,1), mgp = c(1.6,.6,0))
# dados e estados
plot(EQcount, main="", ylab='EQcount', type='h', col=gray(.7))
text(EQcount, col=6*posterior(fm)[,1]-2, labels=posterior(fm)[,1], cex=.9)
grid()
# probabilidade do estado 2
plot(ts(posterior(fm)[,3], start=1900), ylab = expression(hat(pi)[~2]*'(t|n)')); abline(h=.5, lty=2)
grid()
# histograma
hist(EQcount, breaks=30, prob=TRUE, main="")
box()
xvals = seq(1,45)
u1 = pi1*dpois(xvals, lams[1])
u2 = pi2*dpois(xvals, lams[2])
lines(xvals, u1, col=4); lines(xvals, u2, col=2)
grid()

##-- Bootstap --##
# função para gerar os dados
pois.HMM.generate_sample = function(n,m,lambda,Mtrans,StatDist=NULL){
   # n = tamanho da amostra, m = número de estados, 
   # Mtrans = matriz de transição, StatDist = distribuição estacionária 
   if(is.null(StatDist)) StatDist = solve(t(diag(m)-Mtrans +1),rep(1,m))
   mvect = 1:m
   state = numeric(n)
   state[1] = sample(mvect ,1, prob=StatDist)
   for (i in 2:n)
     state[i] = sample(mvect ,1,prob=Mtrans[state[i-1] ,])
   y = rpois(n,lambda=lambda[state ])
   list(y= y, state= state) }
# inicializando
set.seed(10101101)
nboot = 100
nobs = length(EQcount)
para.star = matrix(NA, nrow=nboot, ncol = 6)
for (j in 1:nboot){
   x.star = pois.HMM.generate_sample(n=nobs, m=2, lambda=lams, Mtrans=mtrans)$y
   model <- depmix(x.star ~1, nstates=2, data=data.frame(x.star), family=poisson())
   u = as.vector(getpars(fit(model, verbose=FALSE)))
   # verificando se o estado 1 é aquele com o parâmetro de menor intensidade
   if (u[7] <= u[8]) { para.star[j,] = c(u[3:6], exp(u[7]), exp(u[8])) }
   else { para.star[j,] = c(u[6:3], exp(u[8]), exp(u[7])) } }
## converged at iteration 28 with logLik: -317.3536 
## converged at iteration 10 with logLik: -336.3123 
## converged at iteration 15 with logLik: -330.7023 
## converged at iteration 16 with logLik: -325.2017 
## converged at iteration 19 with logLik: -334.0389 
## converged at iteration 16 with logLik: -321.5097 
## converged at iteration 25 with logLik: -342.4645 
## converged at iteration 15 with logLik: -323.6899 
## converged at iteration 9 with logLik: -321.6437 
## converged at iteration 18 with logLik: -322.362 
## converged at iteration 12 with logLik: -327.4347 
## converged at iteration 10 with logLik: -317.0057 
## converged at iteration 9 with logLik: -338.8998 
## converged at iteration 12 with logLik: -334.3831 
## converged at iteration 10 with logLik: -320.6662 
## converged at iteration 15 with logLik: -337.1912 
## converged at iteration 14 with logLik: -329.5808 
## converged at iteration 17 with logLik: -323.376 
## converged at iteration 15 with logLik: -327.2818 
## converged at iteration 15 with logLik: -324.8806 
## converged at iteration 12 with logLik: -328.8237 
## converged at iteration 13 with logLik: -323.2429 
## converged at iteration 35 with logLik: -303.1696 
## converged at iteration 14 with logLik: -311.838 
## converged at iteration 20 with logLik: -325.593 
## converged at iteration 25 with logLik: -344.3057 
## converged at iteration 13 with logLik: -336.7609 
## converged at iteration 9 with logLik: -331.3855 
## converged at iteration 16 with logLik: -329.6708 
## converged at iteration 38 with logLik: -320.4871 
## converged at iteration 40 with logLik: -321.4419 
## converged at iteration 20 with logLik: -340.2987 
## converged at iteration 11 with logLik: -316.1531 
## converged at iteration 19 with logLik: -331.9695 
## converged at iteration 15 with logLik: -328.3009 
## converged at iteration 22 with logLik: -336.7947 
## converged at iteration 14 with logLik: -335.777 
## converged at iteration 19 with logLik: -336.8923 
## converged at iteration 17 with logLik: -328.7383 
## converged at iteration 14 with logLik: -338.4921 
## converged at iteration 18 with logLik: -335.8289 
## converged at iteration 13 with logLik: -324.3853 
## converged at iteration 19 with logLik: -332.4478 
## converged at iteration 23 with logLik: -331.5049 
## converged at iteration 18 with logLik: -320.7098 
## converged at iteration 16 with logLik: -333.7366 
## converged at iteration 16 with logLik: -342.2729 
## converged at iteration 13 with logLik: -330.8512 
## converged at iteration 9 with logLik: -323.9359 
## converged at iteration 17 with logLik: -332.7441 
## converged at iteration 24 with logLik: -322.1631 
## converged at iteration 54 with logLik: -324.2249 
## converged at iteration 17 with logLik: -312.7729 
## converged at iteration 13 with logLik: -331.0078 
## converged at iteration 16 with logLik: -320.4881 
## converged at iteration 12 with logLik: -333.6678 
## converged at iteration 17 with logLik: -351.9982 
## converged at iteration 16 with logLik: -312.2302 
## converged at iteration 9 with logLik: -324.7744 
## converged at iteration 11 with logLik: -328.7093 
## converged at iteration 12 with logLik: -326.4755 
## converged at iteration 17 with logLik: -331.4812 
## converged at iteration 13 with logLik: -335.3246 
## converged at iteration 14 with logLik: -320.2642 
## converged at iteration 11 with logLik: -321.1371 
## converged at iteration 22 with logLik: -343.5264 
## converged at iteration 15 with logLik: -344.8566 
## converged at iteration 12 with logLik: -324.5623 
## converged at iteration 13 with logLik: -329.2879 
## converged at iteration 29 with logLik: -343.0569 
## converged at iteration 17 with logLik: -336.5592 
## converged at iteration 20 with logLik: -333.9896 
## converged at iteration 18 with logLik: -341.6623 
## converged at iteration 10 with logLik: -319.5575 
## converged at iteration 10 with logLik: -320.8678 
## converged at iteration 17 with logLik: -335.7764 
## converged at iteration 16 with logLik: -324.6303 
## converged at iteration 13 with logLik: -343.359 
## converged at iteration 14 with logLik: -335.697 
## converged at iteration 167 with logLik: -321.9255 
## converged at iteration 49 with logLik: -309.581 
## converged at iteration 64 with logLik: -337.8977 
## converged at iteration 19 with logLik: -333.5856 
## converged at iteration 26 with logLik: -329.8142 
## converged at iteration 11 with logLik: -333.4356 
## converged at iteration 40 with logLik: -335.0244 
## converged at iteration 15 with logLik: -321.1205 
## converged at iteration 35 with logLik: -326.9086 
## converged at iteration 18 with logLik: -323.0662 
## converged at iteration 18 with logLik: -330.1606 
## converged at iteration 15 with logLik: -320.2706 
## converged at iteration 19 with logLik: -323.3005 
## converged at iteration 15 with logLik: -320.9108 
## converged at iteration 13 with logLik: -326.7983 
## converged at iteration 12 with logLik: -317.1947 
## converged at iteration 14 with logLik: -333.5056 
## converged at iteration 13 with logLik: -329.1758 
## converged at iteration 9 with logLik: -319.8779 
## converged at iteration 13 with logLik: -341.9616 
## converged at iteration 12 with logLik: -321.6762
# bootstrapped erros padrão
SE = sqrt(apply(para.star,2,var) + (apply(para.star,2,mean)-para.mle)^2)[c(1,4:6)]
names(SE)=c('seM11/M12', 'seM21/M22', 'seLam1', 'seLam2'); SE
##  seM11/M12  seM21/M22     seLam1     seLam2 
## 0.04074297 0.09218465 0.66300322 1.10658114

Figura VI.13: Superior: dados de contagem de grandes terremotos e estados estimados. Em baixo, à esquerda: Probabilidades de suavização. Em baixo à direita: histograma dos dados com as duas densidades estimadas sobrepostas (linhas sólidas).


A seguir, apresentamos um exemplo usando uma mistura de distribuições normais.


Exemplo VI.17. HMM Normal - S&P500 retornos semanais.


A estimação no caso gaussiano é similar à situação Poisson no Exemplo VI.16, exceto que agora \(p_j(y_t)\) é a densidade normal, ou seja, \((Y_t \, | \, X_t=j)\sim N(\mu_j,\sigma_j^2)\) para \(j=1,\cdots,m\).

Então, lidar com o terceiro termo da verossimilhança completa dos dados, nesse caso gera \[\begin{equation} \widehat{\mu}_j \, = \, \dfrac{\displaystyle \sum_{t=1}^n \pi'_j(t \, | \, n)y_t}{\displaystyle \sum_{t=1}^n \pi'_j(t \, | \, n)}, \qquad \widehat{\sigma}_j^2 \, = \, \dfrac{\displaystyle \sum_{t=1}^n \pi'_j(t \, | \, n)y_t^2}{\displaystyle \sum_{t=1}^n \pi'_j(t \, | \, n)} \, - \, \widehat{\mu}_j^2\cdot \end{equation}\]

Neste exemplo, ajustamos um HMM Normal usando o pacote R depmixS4 aos retornos semanais do S&P500 exibidos na figura abaixo. Escolhemos um modelo de três estados e deixamos para o leitor investigar um modelo de dois estados, consulte o Exercício VI.24.

Erros padrão, mostrados entre parênteses abaixo, foram obtidos através de bootstrap paramêtrico baseado em simulações fornecido com o pacote.

Seja \(P=\{\pi_{ij}\}\) a matriz \(3\times 3\) de probabilidades de transição, a matriz de transição estimada foi \[\begin{equation} \widehat{P} \, = \, \begin{pmatrix} 0.945_{(0.074)} & 0.055_{(0.074)} & 0.000_{(0.000)} \\[0.4em] 0.739_{(0.275)} & 0.000_{(0.000)} & 0.261_{(0.271)} \\[0.4em] 0.032_{(0.122)} & 0.027_{(0.057)} & 0.942_{(0.147)} \end{pmatrix}, \end{equation}\] e as três normais ajustadas foram: \[\begin{equation} N(0.004_{(0.173)},0.014_{(0.968)}), \quad N(-0.034_{(0.909)},0.009_{(0.777)}) \quad \mbox{e} \quad N(-0.003_{(0.317)},0.044_{(0.910)})\cdot \end{equation}\]
Os dados, juntamente com os estados previstos com base na distribuição de suavização, são mostrados na Figura VI.14.

Observe que o regime 2 parece representar um retorno negativo um tanto grande em magnitude e pode ser uma queda solitária ou o início ou o fim de um período altamente volátil. Os estados 1 e 3 representam aglomerados de volatilidade regular ou alta, respectivamente. Observe que há uma grande quantidade de incerteza nas normais ajustadas e na matriz de transição envolvendo transições do estado 2 para os estados 1 ou 3.

library(depmixS4); library(astsa)
y = ts(sp500w, start=2003, freq=52) # formato série temporal
mod3 <- depmix(y~1, nstates=3, data=data.frame(y))
set.seed(2)
summary(fm3 <- fit(mod3))
## converged at iteration 363 with logLik: 1236.996 
## Initial state probabilities model 
## pr1 pr2 pr3 
##   1   0   0 
## 
## Transition matrix 
##         toS1  toS2  toS3
## fromS1 0.942 0.027 0.032
## fromS2 0.261 0.000 0.739
## fromS3 0.000 0.055 0.945
## 
## Response parameters 
## Resp 1 : gaussian 
##     Re1.(Intercept) Re1.sd
## St1          -0.003  0.044
## St2          -0.034  0.009
## St3           0.004  0.014
##-- MLEs --##
para.mle = as.vector(getpars(mod3)[-(1:3)])
permu = matrix(c(0,0,1,0,1,0,1,0,0), 3,3) # para o colocar as etiquetas
(mtrans.mle = permu%*%round(t(matrix(para.mle[1:9],3,3)),3)%*%permu)
##       [,1]  [,2]  [,3]
## [1,] 0.333 0.333 0.333
## [2,] 0.333 0.333 0.333
## [3,] 0.333 0.333 0.333
(norms.mle = round(matrix(para.mle[10:15],2,3),3)%*%permu)
##      [,1] [,2] [,3]
## [1,]    0    0    0
## [2,]    1    1    1
culer=c(1,2,4); pi.hat = colSums(fm3@posterior[-1,2:4])/length(y)
##-- Bootstrap --##
set.seed(666); n.obs = length(y); n.boot = 100
para.star = matrix(NA, nrow=n.boot, ncol = 15)
respst <- para.mle[10:15]; trst <- para.mle[1:9]
for ( nb in 1:n.boot ){mod <- simulate(mod3)
      y.star = as.vector(mod@response[[1]][[1]]@y)
      dfy = data.frame(y.star)
      mod.star <- depmix(y.star~1, data=dfy, respst=respst, trst=trst, nst=3, trace = FALSE)
      fm.star = fit(mod.star, emcontrol=em.control(tol = 1e-5), verbose=FALSE)
      para.star[nb,] = as.vector(getpars(fm.star)[-(1:3)]) }
## converged at iteration 294 with logLik: -677.9899 
## converged at iteration 121 with logLik: -712.0409 
## converged at iteration 103 with logLik: -712.4917 
## converged at iteration 30 with logLik: -730.3525 
## converged at iteration 1 with logLik: -684.0362 
## converged at iteration 151 with logLik: -719.4926 
## converged at iteration 79 with logLik: -710.6461 
## converged at iteration 29 with logLik: -716.9218 
## converged at iteration 164 with logLik: -711.0675 
## converged at iteration 48 with logLik: -715.0946 
## converged at iteration 18 with logLik: -719.4564 
## converged at iteration 67 with logLik: -691.9596 
## converged at iteration 1 with logLik: -724.0409 
## converged at iteration 89 with logLik: -715.5386 
## converged at iteration 23 with logLik: -728.898 
## converged at iteration 158 with logLik: -707.4419 
## converged at iteration 66 with logLik: -725.3523 
## converged at iteration 11 with logLik: -722.8442 
## converged at iteration 121 with logLik: -687.9254 
## converged at iteration 120 with logLik: -708.3896 
## converged at iteration 337 with logLik: -707.7815 
## converged at iteration 30 with logLik: -710.1498 
## converged at iteration 1 with logLik: -720.2734 
## converged at iteration 1 with logLik: -720.4276 
## converged at iteration 6 with logLik: -730.2698 
## converged at iteration 12 with logLik: -742.8218 
## converged at iteration 56 with logLik: -723.4735 
## converged at iteration 1 with logLik: -714.251 
## converged at iteration 125 with logLik: -700.5052 
## converged at iteration 43 with logLik: -732.8349 
## converged at iteration 6 with logLik: -707.8031 
## converged at iteration 1 with logLik: -707.5037 
## converged at iteration 119 with logLik: -721.7749 
## converged at iteration 80 with logLik: -701.5391 
## converged at iteration 166 with logLik: -735.3783 
## converged at iteration 1 with logLik: -716.2378 
## converged at iteration 8 with logLik: -721.0746 
## converged at iteration 151 with logLik: -742.1823 
## converged at iteration 33 with logLik: -738.4429 
## converged at iteration 1 with logLik: -722.273 
## converged at iteration 9 with logLik: -717.4671 
## converged at iteration 16 with logLik: -725.2242 
## converged at iteration 4 with logLik: -736.8096 
## converged at iteration 3 with logLik: -737.3833 
## converged at iteration 1 with logLik: -719.7488 
## converged at iteration 1 with logLik: -691.0781 
## converged at iteration 191 with logLik: -716.9601 
## converged at iteration 7 with logLik: -715.4777 
## converged at iteration 39 with logLik: -725.2479 
## converged at iteration 51 with logLik: -722.8362 
## converged at iteration 1 with logLik: -719.0607 
## converged at iteration 223 with logLik: -712.2673 
## converged at iteration 1 with logLik: -697.6208 
## converged at iteration 6 with logLik: -715.2882 
## converged at iteration 49 with logLik: -747.9375 
## converged at iteration 1 with logLik: -747.2075 
## converged at iteration 20 with logLik: -731.7637 
## converged at iteration 184 with logLik: -699.9101 
## converged at iteration 1 with logLik: -719.7261 
## converged at iteration 205 with logLik: -677.9624 
## converged at iteration 235 with logLik: -716.4918 
## converged at iteration 175 with logLik: -721.4649 
## converged at iteration 2 with logLik: -719.4377 
## converged at iteration 166 with logLik: -724.0358 
## converged at iteration 20 with logLik: -733.5174 
## converged at iteration 90 with logLik: -698.0433 
## converged at iteration 1 with logLik: -718.9081 
## converged at iteration 174 with logLik: -736.5741 
## converged at iteration 33 with logLik: -734.6829 
## converged at iteration 37 with logLik: -707.3276 
## converged at iteration 21 with logLik: -748.9623 
## converged at iteration 125 with logLik: -703.8575 
## converged at iteration 97 with logLik: -682.174 
## converged at iteration 122 with logLik: -705.4474 
## converged at iteration 80 with logLik: -721.3796 
## converged at iteration 31 with logLik: -671.6871 
## converged at iteration 78 with logLik: -752.3319 
## converged at iteration 78 with logLik: -697.4681 
## converged at iteration 1 with logLik: -717.7052 
## converged at iteration 130 with logLik: -709.8593 
## converged at iteration 24 with logLik: -708.2787 
## converged at iteration 23 with logLik: -749.2635 
## converged at iteration 185 with logLik: -739.3793 
## converged at iteration 1 with logLik: -739.0842 
## converged at iteration 182 with logLik: -701.8132 
## converged at iteration 22 with logLik: -715.8599 
## converged at iteration 1 with logLik: -725.2706 
## converged at iteration 29 with logLik: -748.0991 
## converged at iteration 1 with logLik: -738.0474 
## converged at iteration 101 with logLik: -717.3103 
## converged at iteration 192 with logLik: -725.6311 
## converged at iteration 196 with logLik: -726.1761 
## converged at iteration 3 with logLik: -731.3348 
## converged at iteration 34 with logLik: -705.7912 
## converged at iteration 74 with logLik: -702.52 
## converged at iteration 66 with logLik: -709.7988 
## converged at iteration 29 with logLik: -748.1038 
## converged at iteration 15 with logLik: -721.8093 
## converged at iteration 260 with logLik: -706.5356 
## converged at iteration 1 with logLik: -734.7308
# bootstrap erros padrão
SE = sqrt(apply(para.star,2,var) + (apply(para.star,2,mean)-para.mle)^2)
(SE.mtrans.mle = permu%*%round(t(matrix(SE[1:9],3,3)),3)%*%permu)
##       [,1]  [,2]  [,3]
## [1,] 0.113 0.103 0.115
## [2,] 0.100 0.117 0.098
## [3,] 0.113 0.097 0.107
(SE.norms.mle = round(matrix(SE[10:15], 2,3),3)%*%permu)
##       [,1]  [,2]  [,3]
## [1,] 0.390 0.383 0.368
## [2,] 0.199 0.234 0.191
##-- Gráficos --##
layout(matrix(c(1,2, 1,3), 2), heights=c(1,.75))
par(mar=c(2.5,2.5,.5,.5), mgp=c(1.6,.6,0))
plot(y, main="", ylab='S&P500 Weekly Returns', col=gray(.7), ylim=c(-.11,.11))
culer = 4-fm3@posterior[,1]; culer[culer==3]=4 # alternar etiquetas 1 e 3
text(y, col=culer, labels=4-fm3@posterior[,1])
for (i in 1:3) { mu=norms.mle[1,i]; sig = norms.mle[2,i]
      x = seq(-.15,.12, by=.001)
      lines(x, pi.hat[4-i]*dnorm(x, mean=mu, sd=sig), col=culer[i]) }
grid()
acf(y^2, xlim=c(.02,.5), ylim=c(-.09,.5), panel.first=grid(lty=2) )
hist(y, 25, prob=TRUE, main='')
box()
grid()

Figura VI.14: Superior: retornos semanais do S&P500 com regimes estimados rotulados como número 1, 2 ou 3. O valor mínimo de \(\pm\) 20% durante a crise financeira foi truncado para melhorar os gráficos. Em baixo à esquerda: ACF amostral dos retornos ao quadrado. Em baixo à direita: histograma dos dados com as três densidades normais estimadas sobrepostas.


Vale ressaltar que a regressão automática alternada também se enquadra nesse quadro. Nesse caso, você alteraria \(\mu_j\) no modelo no Exemplo VI.17 para depender de entradas independentes, digamos \(Z_{t1},\cdots,Z_{tr}\), para que \[\begin{equation} \mu_j \, = \, \beta_0^{(j)}+\sum_{i=1}^r \beta_i^{(j)}Z_{ti}\cdot \end{equation}\] Esse tipo de modelo é possível de manipular usando o pacote R depmixS4.

Ao condicionar as primeiras observações, também é possível incluir simples mudanças automáticas na regressão linear nessa estrutura. Nesse caso, modelamos as observações como sendo um AR(p), com parâmetros dependendo do estado; isso é, \[\begin{equation} Y_t \, = \, \phi_0^{(X_t)} \, + \, \displaystyle\sum_{i=1}^p \phi_i^{(X_t)}Y_{t-i} \, + \, {\sigma^2}^{(X_t)}\nu_t, \end{equation}\] e \(\nu_t\sim N(0,1)\) independentes.

O modelo é semelhante ao modelo de limite discutido na Seção V.4, no entanto, o processo não é auto-emocionante ou influenciado por um processo exôgeno observado. Com a expressão acima estamos dizendo que os parâmetros são aleatórios e os regimes estão mudando devido a um processo latente de Markov. De maneira semelhante a \(p_j(Y_t) = p(Y_t \, | \, X_t = j)\), escrevemos a distribuição condicional das observações como \[\begin{equation} p_j(Y_t) = p(Y_t \, | \, X_t = j, Y_{t-1:t-p}), \end{equation}\] e notamos que para \(t> p\), \(p_j(Y_t)\) é a densidade normal que denotaremos por \(g\), \[\begin{equation} p_j(Y_j) \, = \, g\Big(Y_t; \phi_0^{(j)} + \displaystyle\sum_{i=1}^p \phi_i^{(j)}y_{t-i}, {\sigma^2}^{(j)}\nu_t\Big)\cdot \end{equation}\] A verossimilhança condicional é dada por \[\begin{equation} \ln\Big(L_Y(\Theta \, | \, y_{1:p}) \Big) \, = \, \displaystyle \sum_{t=p+1}^n \ln\left( \sum_{j=1}^m \pi_j(t \, | \, t-1)p_j(y_t)\right), \end{equation}\] onde o Teorema VI.7 ainda se aplica, mas com a avaliação atualizada de \(p_j(y_t)\). Além disso, o algoritmo EM pode ser usado analogamente, avaliando os alisadores.

Os alisadores, neste caso, são simbolicamente os mesmos que os dados no Teorema VI.8, com as mudanças de definição apropriadas, \(p_j(y_t)\) como dado acima e com \(\varphi_j(t) = p(y_{t+1:n} \, | \, X_t= j, y_{t+1-p:t})\) para \(t> p\).


Exemplo VI.18. Comutação AR - Mortalidade por Influeza.


library(astsa)
par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
ts.plot(flu, xlab="Tempo", ylab="Taxa de mortes por pneumonia e influenza", col="darkviolet", lwd=2)
grid()

Taxa mensal de mortes por pneumonia e influenza para cada 10.000 habitantes nos Estados Unidos entre 1968 a 1978.

No Exemplo V.7, discutimos a mortalidade mensal por pneumonia e influenza mostrada na figura acima. Destacamos a não reversibilidade da série, o qual exclui a possibilidade de que os dados sejam gerados por um processo Gaussiano linear. Além disso, note-se que a série é irregular e enquanto a mortalidade é maior durante no inverno, o pico não ocorre no mesmo mês de cada ano. Mais ainda, algumas das estações do ano têm picos muito grandes, indicando epidemias de gripe, enquanto outras estações são suaves. Além do mais, pode ser visto na figura acima que há uma ligeira tendência negativa no conjunto de dados, indicando que a prevenção da gripe está diminuindo a taxa de mortalidade ao longo dos onze anos considerados.

Como no Exemplo V.7, nos concentramos nos dados diferenciados, o que remove a tendência. Nesse caso, denotamos \(Y_t = \nabla \mbox{flu}_t\), em que \(\mbox{flu}_t\) representa os dados exibidos na figura acima. Como já ajustamos um modelo de limiar para \(Y_t\), também podemos considerar um modelo autoregessivo de comutação, onde existem dois regimes ocultos, um para períodos epidêmicos e outro para períodos mais amenos. Nesse caso, o modelo é dado por \[\begin{equation} Y_t \, = \, \left\{ \begin{array}{rcl} \phi_0^{(1)}+\displaystyle \sum_{j=1}^p \phi_j^{(1)}Y_{t-j}+{\sigma^2}^{(1)}\nu_t, & \mbox{para} & X_t=1, \\[0.4em] \phi_0^{(2)}+\displaystyle \sum_{j=1}^p \phi_j^{(2)}Y_{t-j}+{\sigma^2}^{(2)}\nu_t, & \mbox{para} & X_t=2, \end{array} \right. \end{equation}\] onde \(\nu_t\sim N(0,1)\) independentes e \(X_t\) é uma Cadeia Markov latente de dois estados.

Utilizamos o pacote R MSwM para ajustar o modelo acima especificado, com \(p = 2\). Os resultados foram \[\begin{equation} \widehat{Y}_t \, = \, \left\{ \begin{array}{rcl} 0.006_{(0.003)}+0.293_{(0.039)}Y_{t-1}+0.097_{(0.031)}Y_{t-2}+0.024\nu_t, & \mbox{para} & X_t=1, \\[0.4em] 0.199_{(0.063)}-0.313_{(0.281)}Y_{t-1}-1.604_{(0.276)}Y_{t-2}+0.112\nu_t, & \mbox{para} & X_t=2, \end{array} \right. \end{equation}\] com matriz de probabilidades de transição estimada \[\begin{equation} \widehat{P} \, = \, \begin{pmatrix} 0.93 & 0.07 \\ 0.30 & 0.70 \end{pmatrix}\cdot \end{equation}\]

library(MSwM)
set.seed(90210)
dflu = diff(flu)
model = lm(dflu~ 1)
mod = msmFit(model, k=2, p=2, sw=rep(TRUE,4)) # 2 regimes, AR(2)s
summary(mod)
## Markov Switching Model
## 
## Call: msmFit(object = model, k = 2, sw = rep(TRUE, 4), p = 2)
## 
##         AIC       BIC   logLik
##   -438.6622 -392.3445 225.3311
## 
## Coefficients:
## 
## Regime 1 
## ---------
##                Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)(S)   0.1989     0.0630  3.1571  0.001593 ** 
## dflu_1(S)       -0.3127     0.2807 -1.1140  0.265279    
## dflu_2(S)       -1.6042     0.2763 -5.8060 6.398e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1120415
## Multiple R-squared: 0.6939
## 
## Standardized Residuals:
##          Min           Q1          Med           Q3          Max 
## -0.170236363 -0.014869233 -0.007706104 -0.003753905  0.284000552 
## 
## Regime 2 
## ---------
##                Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)(S)   0.0058     0.0027  2.1481  0.031706 *  
## dflu_1(S)        0.2931     0.0392  7.4770 7.594e-14 ***
## dflu_2(S)        0.0970     0.0312  3.1090  0.001877 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02359005
## Multiple R-squared: 0.497
## 
## Standardized Residuals:
##           Min            Q1           Med            Q3           Max 
## -7.374091e-02 -8.017805e-03  1.010047e-11  1.230736e-02  4.700877e-02 
## 
## Transition probabilities:
##           Regime 1   Regime 2
## Regime 1 0.7004731 0.07335256
## Regime 2 0.2995269 0.92664744
par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
plotProb(mod, which=1)

par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
plotProb(mod, which=2)

par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
plotProb(mod, which=3)

A Figura VI.15 exibe os dados \(Y_t = \nabla \mbox{flu}_t\) junto com os estados estimados, exibidos como pontos identificados como 1 ou 2.

estados.est = mod["Fit"]["smoProb"]
estados.est[,1] = ifelse(estados.est[,1]>0.5, 2, 1)
estados.est = c(NA, estados.est[,1])
par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
plot(dflu, xlab="", ylab=expression(paste(nabla,"flu " [t])))
text(dflu, col=6*estados.est-2, labels=estados.est, cex=.9)
grid()

Figura V.15 Os dados diferenciados de mortalidade por influenza junto com os estados estimados exibidos como pontos.



VI.10 Modelos lineares dinâmicos com comutação


Nesta seção estendemos o Modelo Oculto de Markov discutido na Seção VI.9 para problemas mais gerais. Conforme indicado anteriormente, o problema de modelar mudanças nos regimes para séries temporais tem sido de interesse em muitos campos diferentes e exploramos essas ideias na Seçao V.4, bem como na Seção VI.9.

As generalizações do modelo de espaço de estado para incluir a possibilidade de mudanças ocorrendo ao longo do tempo foram abordadas permitindo mudanças nas covariâncias de erro (Harrison and Stevens, 1976, Gordon and Smith, 1988, 1990) ou atribuindo distribuições de mistura para os erros de observação \(\nu_t\) (Peña and Guttman, 1988). Aproximações à filtragem foram derivadas em todos os artigos mencionados.

Uma aplicação para monitorar transplantes renais foi descrita em Smith and West (1983) e em Gordon and Smith (1990). Gerlach et al. (2000) consideraram uma extensão do modelo de switching AR para permitir mudanças de nível e outliers tanto nas observações quanto nas inovações. Uma aplicação da ideia de mudança para o rastreamento de múltiplos alvos foi considerada em Bar-Shalom (1978), que obteve aproximações da filtragem de Kalman em termos de médias ponderadas das inovações. Para uma cobertura completa dessas técnicas e outras relacionadas, consulte Cappé, Moulines and Rydén (2009) e Douc, Moulines and Stoffer (2014).

Nesta seção, nos concentraremos no método apresentado em Shumway and Stoffer (1991). Uma forma de modelar a mudança em uma série de tempo em evolução é assumir a dinâmica de algumas mudanças de modelo subjacentes de forma descontínua em certos pontos indeterminados no tempo. Nosso ponto de partida é o modelo linear dinâmico (DLM) segundo a Definição VI.1 com as matrizes \(\Upsilon = \Gamma =0\), a saber, \[\begin{equation*} X_t \, = \, \Phi X_{t-1} +W_t, \end{equation*}\] para descrever a dinâmica dos \(p\times 1\) estados e \[\begin{equation*} Y_t \, = \, A_t X_t+\nu_t, \end{equation*}\] para descrever a dinâmica das \(q\times 1\) observações. Lembre-se de que \(W_t\) e \(\nu_t\) são sequências de ruído branco Gaussiano com \(\mbox{Var}(W_t) = Q\), \(\mbox{Var}(\nu_t) = R\) e \(\mbox{Cov}(W_t,\nu_s) = 0\) para todo \(s\) e \(t\).


Exemplo VI.19. Rastreando múltiplos alvos.


A abordagem de Shumway and Stoffer (1991) foi motivada principalmente pelo problema de rastrear um grande número de alvos móveis usando um vetor \(Y_t\) de sensores. Nesse problema, não sabemos em nenhum momento qual alvo foi detectado por um determinado sensor. Portanto, é a estrutura da matriz de medição \(A_t\) que está mudando e não a dinâmica do sinal \(X_t\) ou os ruídos, \(W_t\) ou \(\nu_t\).

Como exemplo, considere um vetor \(3\times 1\) de medições de satélite \(Y_t = (Y_{t1},Y_{t2},Y_{t3})^\top\) que são observações em alguma combinação de um vetor \(3\times 1\) de alvos ou sinais, \(X_t = (X_{t1},X_{t2},X_{t3})^\top\).

Para a matriz de medição \[\begin{equation*} A_t \, = \, \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1\end{pmatrix} \end{equation*}\] por exemplo, o primeiro sensor \(Y_{t1}\), observa o segundo alvo \(X_{t2}\), o segundo sensor \(Y_{t2}\), observa o primeiro alvo \(X_{t1}\) e o terceiro sensor \(Y_{t3}\), observa o terceiro alvo \(X_{t3}\).

Todas as configurações de detecção possíveis definirão um conjunto de valores possíveis para \(A_t\), digamos \(\{M_1,M_2,\cdots,M_m\}\), como uma coleção de matrizes de medição plausíveis.



Exemplo VI.20. Modelando mudanças econômicas.


Como outro exemplo do modelo de comutação apresentado nesta seção, considere o caso em que a dinâmica do modelo linear muda repentinamente ao longo do histórico de uma dada realização. Por exemplo, Lam (1990) deu a seguinte generalização do modelo de Hamilton (1989) para detectar períodos de crescimento positivo e negativo na economia.

Suponha que os dados sejam gerados por \[\begin{equation*} Y_t \, = \, Z_t+\eta_t, \end{equation*}\] onde \(Z_t\) é uma série autoregressiva e \(\eta_t\) é um passeio aleatório com um movimento que alterna entre dois valores \(\alpha_0\) e \(\alpha_0 + \alpha_1\). Ou seja, \[\begin{equation*} \eta_t \, = \, \eta_{t-1}+\alpha_0+\alpha_1 S_t, \end{equation*}\] com \(S_t = 0\) ou 1, dependendo se o sistema está no estado 1 ou no estado 2.

Para fins de ilustração, suponha que \[\begin{equation*} Z_t \, = \, \phi_1 Z_{t-1}+\phi_2 Z_{t-2}+W_t \end{equation*}\] seja uma série AR(2) com \(\mbox{Var}(W_t)=\sigma_{_W}^2\). Lam (1990) escreveu \(Y_t\), defindo acima, de forma diferenciada \[\begin{equation*} \nabla Y_t \, = \, Z_t -Z_{t-1}+\alpha_0+\alpha_1 S_t, \end{equation*}\] que podemos tomar como a equação de observação, com vetor de estado \[\begin{equation*} X_t \, = \, (Z_t,Z_{t-1},\alpha_0,\alpha_1)^\top, \end{equation*}\] e \[\begin{equation*} M_1 \, = \, \begin{pmatrix} 1 & -1 & 1 & 0 \end{pmatrix} \qquad \mbox{e} \qquad M_2 \, = \, \begin{pmatrix} 1 & -1 & 1 & 1 \end{pmatrix}, \end{equation*}\] determinando as duas condições econômicas possíveis. A equação de estados é da forma \[\begin{equation*} \begin{pmatrix} Z_t \\ Z_{t-1} \\ \alpha_0 \\ \alpha_1 \end{pmatrix} \, = \, \begin{pmatrix} \phi_1 & \phi_2 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} Z_{t-1} \\ Z_{t-2} \\ \alpha_0 \\ \alpha_1 \end{pmatrix} + \begin{pmatrix} W_t \\ 0 \\ 0 \\ 0 \end{pmatrix}\cdot \end{equation*}\]

A equação de observação, pode ser escrita como \[\begin{equation*} \nabla Y_t \, = \, A_t X_t +\nu_t, \end{equation*}\] onde incluímos a possibilidade de ruído observacional e onde \[\begin{equation*} P(A_t=M_1) \, = \, 1-P(A_t=M_2), \end{equation*}\] com \(M_1\) e \(M_2\) dados acima.


Para incorporar uma estrutura de comutação razoável para a matriz de medição no modelo linear dinâmico (DLM), que seja compatível com ambas as situações práticas descritas anteriormente, assumimos que as \(m\) configurações possíveis são estados em um processo independente não estacionário definido pelas probabilidades variáveis no tempo \[\begin{equation*} \pi_j(t) \, = \, P(A_t=M_j), \end{equation*}\] para \(j=1,\cdots,m\) e \(t=1,2,\cdots,n\).

Informações importantes sobre o estado atual do processo de medição são fornecidas pelas probabilidades filtradas de estar no estado \(j\), definidas como as probabilidades condicionais \[\begin{equation*} \pi_j(t\, | \, t) \, = \, P(A_t=M_j \, | \, Y_{1:t}), \end{equation*}\] que também variam em função do tempo. Lembre-se de que \(Y_{s':s}=\{Y_{s'},\cdots,Y_{s}\}\). As probabilidades filtradas \(\pi_j(t\, | \, t)\), definidas acima, fornecem estimativas variáveis no tempo da probabilidade de estar no estado \(j\) dados os dados no tempo \(t\).

Será importante para nós obter estimadores das probabilidades de configuração, \(\pi_j(t\, | \, t)\), os estimadores de estado predito e filtrado \(X_t^{t-1}\) e \(X_t^t\) e as correspondentes matrizes de covariância de erro \(P_t^{t-1}\) e \(P_t^t\). Obviamente, o preditor e os estimadores de filtro dependerão dos parâmetros \(\Theta\) do DLM. Em muitas situações, os parâmetros serão desconhecidos e teremos que estimá-los. Nosso foco será na estimação por máxima verossimilhança, mas outros autores adotaram uma abordagem Bayesiana que atribui antecedentes aos parãmetros e, em seguida, busca distribuições a posteriori dos parâmetros do modelo; ver, por exemplo, Gordon and Smith (1990), Peña and Guttman (1988) ou McCulloch and Tsay (1993).

Estabelecemos agora as recursões para os filtros associados ao estado \(X_t\) e ao processo de comutação \(A_t\). Conforme discutido na Seção VI.3, os filtros também são uma parte essencial do procedimento de máxima verossimilhança.

Os preditores, \(X_t^{t-1} = \mbox{E}\big(X_t \, | \, Y_{1:t-1}\big)\) e filtros, \(X_t^t = \mbox{E}(X_t \, | \, Y_{1:t})\) e suas matrizes de covariâncias de erro associadas, \(P_t^{t-1}\) e \(P_t^t\), são dadas por \[\begin{array}{rcl} X_t^{t-1} & = & \Phi X_{t-1}^{t-1}, \\ P_t^{t-1} & = & \Phi P_{t-1}^{t-1}\Phi^\top+Q, \\ X_t & = & \displaystyle X_t^{t-1}+\sum_{j=1}^m \pi_j(t\, | \, t)K_{tj}\epsilon_{tj}, \\ P_t^t & = & \displaystyle \sum_{j=1}^m \pi_j(t \, | \, t)(I-K_{tj} M_j)P_t^{t-1}, \\ K_{tj} & = & P_t^{t-1} M_j^\top \Sigma_{tj}^{-1}, \end{array}\] onde os valores de inovação acima são \[\begin{array}{rcl} \epsilon_{tj} & = & Y_t -M_j X_t^{t-1},\\ \Sigma_{tj} & = & M_j P_t^{t-1}M_j^\top +R, \end{array}\]

para \(j=1,\cdots,m\).

As equações anteriores exibem os valores do filtro como combinações lineares ponderadas dos valores das \(m\) inovações, correspondendo a cada uma das matrizes de medição possíveis. As equações são semelhantes às aproximações introduzidas por Bar-Shalom and Tse (1975), por Gordon and Smith (1990) e Peña and Guttman (1988).

Para verificar se \(X_t = X_t^{t-1}+\sum_{j=1}^m \pi_j(t\, | \, t)K_{tj}\epsilon_{tj}\), considere a função indicadora \[\begin{equation*} \mbox{I}_{A_t}(M_j) \, = \, \left\{ \begin{array}{rcl} 1, & \mbox{quando} & A_t=M_j \\ 0, & \mbox{quando} & A_t\neq M_j \end{array}\right.\cdot \end{equation*}\] Então utilizando o resultado acerca de \(X_t^t\) no Teorema VI.1, \[\begin{array}{rcl} X_t^t & = & \mbox{E}(X_t \, | \, Y_{1:t}) \, = \, \mbox{E}\big(\mbox{E}(X_t \, | \, Y_{1:t}, A_t) \, | \, Y_{1:t}\big) \\ & = & \displaystyle \mbox{E}\left(\sum_{j=1}^m \left.\mbox{E}\big( X_t \, | \, Y_{1:t}, A_t=M_j\big)\mbox{I}_{A_t}(M_j) \, \right| \, Y_{1:t} \right) \\ & = & \displaystyle \mbox{E}\left(\sum_{j=1}^m \big( X_t^{t-1} +K_{tj}(Y_t-M_jX_t^{t-1}\big)\mbox{I}_{A_t}(M_j) \, | \, Y_{1:t} \right) \\ & = & \displaystyle \sum_{j=1}^m \pi_j(t \, | \, t)\big(X_t^{t-1}+K_{tj}(Y_t-M_j X_t^{t-1})\big), \end{array}\]

onde \(K_{tj}\) foi dado acima.

A expressão \(P_t^t\) é derivada de maneira semelhante; as outras relações seguem de aplicações diretas dos resultados do filtro de Kalman dados no Teorema VI.1.

Em seguida, derivamos os filtros \(\pi_j(t\, | \, t)\). Seja \(p_j(t\, |\, t-1)\) a densidade condicional de \(Y_t\) dado o passado \(Y_{1:t-1}\) e \(A_t=M_j\), para \(j=1,\cdots,M\). Então \[\begin{equation*} \pi_j(t \, | \, t) \, = \, \dfrac{\pi_j(t)p_j(t \, | \, t-1)}{\displaystyle \sum_{k=1}^m \pi_k(t)p_k(t \, | \, t-1)}, \end{equation*}\] onde assumimos que a distribuição \(\pi_j(t)\), para \(j = 1,\cdots,m\) foi especificado antes de observar \(Y_{1:t}\), os detalhes seguem como no Exemplo VI.21 abaixo. Se o investigador não tem razão para preferir um estado a outro no tempo \(t\), a escolha de uniformes a priori \(\pi_j(t)=\frac{1}{m}\), para \(j = 1,\cdots,m\), será suficiente. A suavidade pode ser introduzida ao considerar \[\begin{equation*} \pi_j(t) \, = \, \sum_{i=1}^m \pi_i(t-1 \, | \, t-1)\pi_{ij}, \end{equation*}\] onde os pesos não negativos \(\pi_{ij}\) são escolhidos de forma que \(\sum_{i=1}^m \pi_{ij}=1\). Se o processo \(A_t\) fosse Markoviano com probabilidades de transição \(\pi_{ij}\), então a expressão acima seria a atualização para a probabilidade do filtro, conforme mostrado no próximo exemplo.


Exemplo VI.21. Modelo Oculto de Markov.


Se \(A_t\) é um modelo oculto de Markov com função de probabilidade estacionária \[\begin{equation*} \pi_{ij}=P(A_t=M_j \, | \, A_{t-1}=M_i), \end{equation*}\] para \(i,j=1,\cdots,m\), temos \[\begin{array}{rcl} \pi_j(t \, | \, t) & = & \dfrac{p(A_t=M_j, y_t \, | \, y_{1:t-1})}{p(y_t \, | \, y_{1:t-1})} \\ & = & \dfrac{P(A_t=M_j \, | \, Y_{1:t-1})p(y_t \, | \, A_t=M_j, y_{1:t-1})}{p(y_t \, | \, y_{1:t-1})} \\ & = & \dfrac{\pi_j(t \, | \, t-1)p_j(t \, | \, t-1)}{\displaystyle \sum_{k=1}^m \pi_k(t \, | \, t-1)p_k(t \, | \, t-1)}\cdot \end{array}\]

No caso de uma Cadeia de Markov, as probabilidades condicionais \[\begin{equation*} \pi_j(t \, | \, t-1) \, = \, P(A_t=M_j \, | \, y_{1:t-1}) \end{equation*}\] acima, substituem as probabilidades incondicionais, \(\pi_j(t)=P(A_t=M_j)\).

Para avaliar \(\pi_j(t \, | \, t)\), devemos ser capazes de calcular \(\pi_j(t \, | \, t-1)\) e \(p_j(t \, | \, t-1)\). Discutiremos o cálculo de \(p_j(t \, | \, t-1)\) após este exemplo. Para derivar \(\pi_j(t \, | \, t-1)\), observe, \[\begin{array}{rcl} \pi_j(t \, | \, t-1) & = & P(A_t=M_j \, | \, y_{1:t-1}) \, = \, \displaystyle \sum_{i=1}^m P(A_t=M_j, A_{t-1}=M_i \, | \, Y_{1:t-1}) \\ & = & \displaystyle \sum_{i=1}^m P(A_t=M_j \, | \, A_{t-1}=M_i)P(A_{t-1}=M_i \, | \, Y_{1:t-1}) \\ & = & \displaystyle \sum_{i=1}^m \pi_{ij}\pi_i(t-1 \, | \, t-1)\cdot \end{array}\]

A expressão de \(\pi_j(t)\) vem da equação acima onde, conforme observado anteriormente, substituímos \(\pi_j(t \, | \, t-1)\) por \(\pi_j(t)\).


A dificuldade em estender a abordagem aqui ao caso de Cadeias de Markov é a dependência entre o \(Y_t\), o que torna necessário enumerar todas as histórias possíveis para derivar as equações de filtragem. Este problema ficará evidente quando derivarmos a densidade condicional \(p_j(t\, | \, t-1)\). Anteriormente escrevemos \(\pi_j(t)\) em função das observações anteriores \(y_{1:t-1}\), o que é inconsistente com a suposição do nosso modelo. No entanto, este parece ser um compromisso razoável que permite aos dados modificar as probabilidades \(\pi_j(t)\), sem ter que desenvolver uma técnica altamente intensiva em informática.

Como sugerido anteriormente, o cálculo de \(p_j(t \, | \, t-1)\), sem algumas aproximações, é altamente intensivo em computador. Para avaliar \(p_j(t\, | \, t-1)\), considere o evento \[\begin{equation*} \{A_1=M_{j_1},\cdots, A_{t-1}=M_{j_{t-1}} \}, \end{equation*}\] para \(j_i=1,\cdots,m\) e \(i=1,\cdots,t-1\), que especifica um conjunto específico de matrizes de medições no passado; vamos escrever este evento como \(A_{(t-1)}=M_{(\ell)}\). Porque \(m^{t-1}\) resultados possíveis existem para \(A_1,\cdots,A_{t-1}\), o índice \(\ell\) passa por \(\ell = 1,\cdots,m^{t-1}\). Usando esta notação, podemos escrever \[\begin{array}{rcl} p_j(t \, | \, t-1) & = & \displaystyle \sum_{\ell=1}^{m^{t-1}} P\big(A_{(t-1)}=M_{(\ell)} \, | \, y_{1:t-1}\big) p\big( y_t \, | \, y_{1:t-1}, A_t=M_j, A_{(t-1)}=M_{(\ell)}\big) \\ & = & \displaystyle \sum_{\ell=1}^{m^{t-1}} \alpha(\ell) g\big(y_t; \mu_{tj}(\ell),\Sigma_{tj}(\ell)\big), \qquad j=1,\cdots,m, \end{array}\]

onde \(g(\cdot;\mu,\Sigma)\) representa a densidade normal com vetor médio \(\mu\) e matriz de covariâncias \(\Sigma\) e assim, \(p_j(t\, | \, t-1)\) é uma mistura de normais com pesos não negativos \[\begin{equation*} \alpha(\ell) = P\big(A_{(t-1)}=M_{(\ell)} \, | \, y_{1:t-1}\big), \end{equation*}\] tal que \(\sum_\ell \alpha(\ell) = 1\) e com cada distribuição normal tendo vetor médio \[\begin{equation*} \mu_{tj}(\ell) \, = \, M_j X_t^{t-1}(\ell) \, = \, M_j \mbox{E}\big( X_t \, | \, y_{1:t-1}, A_{(t-1)}=M_{(\ell)}\big) \end{equation*}\] e matriz de covariâncias \[\begin{equation*} \Sigma_{ij}(\ell) \, = \, M_j P_t^{t-1}(\ell)M_j^\top + R\cdot \end{equation*}\]

Este resultado segue porque a distribuição condicional de \(Y_t\) acima é idêntica ao caso da matriz de medições fixa apresentada na Seção VI.2. Os valores da esperança e matriz de covariâncias fornecidos acima e, portanto, das densidades \(p_j(t\, | \, t-1)\), para \(j = 1,\cdots,m\) podem ser obtidos diretamente do filtro de Kalman, Teorema VI.1, com as matrizes de medições \(A_{(t-1)}\) fixadas em \(M_{(\ell)}\).

Embora \(p_j(t\, | \, t-1)\) seja dado explicitamente acima, sua avaliação é altamente intensiva em computador. Por exemplo, com \(m = 2\) estados e \(n = 20\) observações, temos que filtrar \[\begin{equation*} 2 + 2^2 +\cdots +2^{20} \end{equation*}\] caminhos de amostra possíveis, \(2^{20} = 1.048.576\). Existem algumas soluções para esse problema. Um algoritmo que permite calcular com eficiência a sequência de estados mais provável, dados os dados, é conhecido como algoritmo de Viterbi, que se baseia no conhecido princípio de programação dinâmica. Detalhes podem ser encontrados em Douc et al. (2014).

Outro remêdio é aparar ou remover, em cada \(t\), caminhos da amostra altamente improváveis; isto é, removendo os eventos em \(\{A_1=M_{j_1},\cdots, A_{t-1}=M_{j_{t-1}} \},\) com probabilidade extremamente pequena de ocorrer e então avaliar \(p_j(t\, | \, t-1)\) como se os caminhos amostrais aparados não pudessem ter ocorrido. Outra alternativa bastante simples, como sugerido por Gordon and Smith (1990) e Shumway and Stoffer (1991), é aproximar \(p_j(t\, | \, t-1)\) usando a distribuição normal mais próxima no sentido da distância de Kulback-Leibler. Nesse caso, a aproximação leva a escolher uma distribuição normal com a mesma média e variância associada a \(p_j(t\, | \, t-1)\); isto é, aproximamos \(p_j(t\, | \, t-1)\) por uma normal com esperança \(M_j X_t^{t-1}\) e variância \(\Sigma_{ij}\), dados acima.

Para desenvolver um procedimento da estimação por máxima verossimilhança, a densidade conjunta dos dados é \[\begin{equation*} f(y_1,\cdots,y_n) \, = \, \prod_{t=1}^n f(t_t \, | \, y_{1:t-1}) \, = \, \prod_{t=1}^n \sum_{j=1}^m P(A_t=M_j \, | \, y_{1:t-1})p(y_t \, | \, A_t=M_j, y_{1:t-1}), \end{equation*}\] e, portanto, a verossimilhança pode ser escrita como \[\begin{equation*} \ln\Big(L_Y(\Theta) \Big) \, = \, \sum_{t=1}^n \ln\left( \sum_{j=1}^m \pi_j(t)p_j(t \, | \, t-1)\right)\cdot \end{equation*}\]

Para o modelo oculto de Markov, \(\pi_j(t)\) seria substituído por \(\pi_j(t\, | \, t-1)\). Na verossimilhança usaremos a aproximação normal para \(p_j(t \, | \, t-1)\). Ou seja, doravante, consideraremos \(p_j(t\, | \, t-1)\) como a normal, \(N(M_j X_t^{t-1},\Sigma_{tj})\), densidade, onde \(X_t^{t-1}=\Phi X_{t-1}^{t-1}\) e \(\Sigma_{tj}=M_j P_t^{t-1}M_j^\top +R\).

Podemos considerar a maximização da verossimilhança diretamente em função dos parâmetros \(\Theta\) em \(\{\mu_0,\Phi,Q,R\}\) usando um método de Newton ou podemos considerar a aplicação do algoritmo EM para a verossimilhança dos dados completos.

Para aplicar o algoritmo EM como na Seção VI.3, chamamos \(x_{0:n}\), \(A_{1:n}\) e \(y_{1:n}\), os dados completos, com a verossimilhança dada por \[\begin{equation*} \begin{array}{rcl} -2\ln\big( L_{X,A,Y}(\Theta)\big) & = & \displaystyle \ln\big(|\Sigma_0|\big) + (x_0-\mu_0)^\top \Sigma_0^{-1}(x_0-\mu_0) + n\ln\big(|Q|\big) \\ & & \qquad \displaystyle + \sum_{t=1}^n (x_t-\Phi x_{t-1})^\top Q^{-1} (x_t-\Phi x_{t-1}) \\ & & \qquad \displaystyle -2\sum_{t=1}^n\sum_{j=1}^m \mbox{I}_{A_t}(M_j) \ln\big(\pi_j(t)\big) + n\ln\big(|R|\big) \\ & & \qquad \displaystyle +\sum_{t=1}^n\sum_{j=1}^m \mbox{I}_{A_t}(M_j)(y_t-A_t x_t)^\top R^{-1}(y_t-A_t x_t)\cdot \end{array} \end{equation*}\]

Conforme discutido na Seção VI.3, exigimos a minimização da esperança condicional \[\begin{equation*} Q\big(\Theta \, | \, \Theta^{(k-1)}\big) \, = \, \mbox{E}\Big( -2\ln\big( L_{X,A,Y}(\Theta)\big) \, | \, y_{1:n},\Theta^{ (k-1)}\Big), \end{equation*}\] em relação a \(\Theta\) em cada iteração, \(k = 1,2,\cdots\). O cálculo e maximização de \(Q\big(\Theta \, | \, \Theta^{(k-1)}\big)\) é semelhante ao caso apresentado no Seção VI.3. Em particular, com \[\begin{equation*} \pi_j(t \, | \, n) \, = \, \mbox{E}\big(\mbox{I}_{A_t}=M_j \, | \, y_{1:n}\big), \end{equation*}\] obtemos na iteração \(k\), \[\begin{array}{rcl} \pi_j^{(k)}(t) & = & \pi_j(t \, | \, n), \\ \mu_0^{(k)} & = & x_0^n, \\ \Phi^{(k)} & = & S_{10}S_{00}^{-1}, \\ Q^{(k)} & = & \frac{1}{n}\big(S_{11}-S_{10}S_{00}^{-1}S_{10} \big) \end{array}\]

e \[\begin{equation*} R^{(k)} \, = \, \dfrac{1}{n}\sum_{t=1}^n\sum_{j=1}^m \pi_j(t\, | \, n)\left( (y_t-M_jX_t^n) (y_t-M_j X_t^n)^\top +M_j P_t^n M_j^\top\right), \end{equation*}\] onde \(S_{11}\), \(S_{10}\) e \(S_{00}\) foram dados na Seção VI.3.

Como antes, na iteração \(k\), os filtros e os suavizadores são calculados usando os valores atuais dos parâmetros \(\Theta^{(k-1)}\) e \(\Sigma_0\) é mantido fixo. A filtragem é realizada usando os procedimentos descritos na recursão. A suavização é derivada de forma semelhante à derivação do filtro e nos leve ao suavizamento descrito nos Teorema VI.2 e Teorema VI.3, com uma exceção, a covariância inicial alisada é agora \[\begin{equation*} P_{n,n-1}^n \, = \, \sum_{j=1}^m \pi_j(n \, | \, n)(I-K_{tj}M_j)\Phi P_{n-1}^{n-1}\cdot \end{equation*}\]

Infelizmente, o cálculo de \(\pi_j(t\, | \, n)\) é excessivamente complicado e requer a integração sobre misturas de distribuições normais. Shumway and Stoffer (1991) sugerem aproximar o aisamento \(\pi_j(t\ | \, n)\) pelo filtro \(\pi_j(t\, | \,t)\) e encontrar a aproximação que funciona bem.


Exemplo VI.22. Dados da influenza.


Usamos os resultados desta seção para analisar os dados mensais de mortalidade por pneumonia e influenza nos EUA representados na Figura V.7. Considerando \(Y_t\) denotar as observações no mês \(t\), modelamos \(Y_t\) em termos de um modelo de componente estrutural acoplado a um processo de Markov oculto que determina se existe uma epidemia de gripe.

O modelo consiste em três componentes estruturais. O primeiro componente \(X_{t1}\), é um processo AR(2) escolhido para representar o componente periódico ou sazonal dos dados, \[\begin{equation*} X_{t1} \, = \, \alpha_1 X_{t-1,1}+\alpha_2 X_{t-2,1}+W_{t1}, \end{equation*}\] onde \(W_{t1}\) é um ruído branco, com \(\mbox{Var}(W_{t1}) = \sigma_1^2\).

O segundo componente \(X_{t2}\), é um processo AR(1) com um termo constante diferente de zero, que é escolhido para representar o aumento acentuado nos dados durante uma epidemia, \[\begin{equation*} X_{t2} \, = \, \beta_0+\beta_t X_{t-1,2}+W_{t2}, \end{equation*}\] onde \(W_{t2}\) é ruído branco, com \(\mbox{Var}(W_{t2}) = \sigma_2^2\).

O terceiro componente \(X_{t3}\), é um componente de tendência fixa dado por, \[\begin{equation*} X_{t3} \, = \, X_{t-1,3}+W_{t3}, \end{equation*}\] onde \(\mbox{Var}(W_{t3}) = 0\).

O caso em que \(\mbox{Var}(W_{t3})> 0\), que corresponde a uma tendência estocástica ou passeio aleatório, foi tentado aqui, mas a estimativa tornou-se instável e nos levou a ajustar uma tendência fixa, em vez de estocástica. Assim, no modelo final, o componente de tendência satisfaz \(\nabla X_{t3} = 0\); lembre-se do Exemplo VI.18 onde os dados também foram diferenciados uma vez antes de ajustar o modelo.

Ao longo dos anos, os períodos de mortalidade normal por influenza (estado 1) são modelados como \[\begin{equation*} Y_t \, = \, X_{t1}+X_{t3}+\nu_t, \end{equation*}\] onde o erro de medição \(\nu_t\), é ruído branco com \(\mbox{Var}(\nu_t) = \sigma_{_\nu}^2\). Quando ocorre uma epidemia (estado 2), a mortalidade é modelada como \[\begin{equation*} Y_t \, = \, X_{t1}+X_{t2}+X_{t3}+\nu_t\cdot \end{equation*}\]

O modelo especificado anteriormente pode ser escrito na forma de espaço de estados geral. A equação de estados é \[\begin{equation*} \begin{pmatrix} X_{t1} \\ X_{t-1,1} \\ X_{t2} \\ X_{t3} \end{pmatrix} \, = \, \begin{pmatrix} \alpha_1 & \alpha_2 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & \beta_1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} X_{t-1,1} \\ X_{t-2,1} \\ X_{t-1,2} \\ X_{t-1,3} \end{pmatrix} + \begin{pmatrix} 0 \\ 0 \\ \beta_0 \\ 0 \end{pmatrix}+\begin{pmatrix} W_{t1} \\ 0 \\ W_{t2} \\ 0 \end{pmatrix}\cdot \end{equation*}\] Claro, a equação de estados acima pode ser escrita na forma de equação de estados padrão como \[\begin{equation*} X_t \, = \, \Phi X_{t-1}+\Upsilon U_t+W_t, \end{equation*}\] onde \(X_t = (X_{t1},X_{t-1,1},X_{t2},X_{t3})^\top\), \(\Upsilon = (0,0,\beta_0,0)^\top\), \(U_t=1\) e \[\begin{equation*} Q \, = \, \begin{pmatrix} \sigma_1^2 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & \sigma_2^2 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}\cdot \end{equation*}\] A equação de observação é \[\begin{equation*} Y_t \, = \, A_t X_t+\nu_t, \end{equation*}\] onde \(A_t\) é \(1\times 4\) e \(\nu_t\) é ruído branco com \(\mbox{Var}(\nu_t)= R = \sigma_{_\nu}^2\). Assumimos que todas as componentes de variância de \(W_{t1}\), \(W_{t2}\) e \(\nu_t\) não estão correlacionadas.

Conforme discutido anteriormente, \(A_t\) pode assumir uma de duas formas possíveis \[\begin{array}{rcl} A_t \, = \, M_1 \, = \, \begin{pmatrix} 1 & 0 & 0 & 1 \end{pmatrix} & \qquad & \mbox{sem epidemia}, \\ A_t \, = \, M_2 \, = \, \begin{pmatrix} 1 & 0 & 1 & 1 \end{pmatrix} & \qquad & \mbox{epidemia}, \end{array}\]

correspondendo aos dois estados possíveis de (1) nenhuma epidemia de gripe e (2) epidemia de gripe, de modo que \(P(A_t=M_1)=1-P(A_t=M_2)\).

Neste exemplo, vamos assumir que \(A_t\) é uma Cadeia de Markov oculta e, portanto, usaremos as equações de atualização fornecidas no Exemplo VI.21, com probabilidades de transição \(\pi_{11}=\pi_{22}=0.75\) e, assim \(\pi_{12}=\pi_{21}=0.25\). Estimamos os parâmetros usando um procedimento quase-Newton-Raphson maximizañdo a aproximação ao logaritmo da verossimilhança dada anteriormente, com valores iniciais \(\pi_1(1\, | \, 0) = \pi_2(1\, | \, 0) =0.5\).

Quando \(\sigma_{_\nu}^2 = 0\), não há erro de medição e a variabilidade nos dados é explicada apenas pelos componentes de variância do sistema de estados, a saber, \(\sigma_1^2\) e \(\sigma_2^2\). O caso em que \(\beta_1 = 0\) corresponde a uma mudança de nível simples durante uma epidemia de gripe. No modelo final, com \(\beta_1\) e \(\sigma_{_\nu}^2\) removidos, o deslocamento de nível estimado \(\widehat{\beta}_0\) corresponde a um aumento na mortalidade em cerca de 0.2 por 1000 durante uma epidemia de gripe.

A Figura VI.16 (a) mostra um gráfico dos dados \(Y_t\), para o período de dez anos de 1969-1978, bem como um indicador que assume o valor de 1 se \(\widehat{\pi}_1(t\, | \, t-1)\geq 0.5\) ou 2 se \(\widehat{\pi}_2(t\, | \, t-1)> 0.5\). As probabilidades de previsão estimadas fazem um trabalho razoável de prever uma epidemia de gripe, embora o pico em 1972 não tenha sido atingido.

A Figura VI.16 (b) mostra os valores filtrados estimados, ou seja, a filtragem é feita usando as estimativas dos parâmetros das três componentes do modelo \(X_{t1}^t\), \(X_{t2}^t\) e \(X_{t3}^t\). Exceto pela instabilidade inicial, que não é mostrada, \(\widehat{X}_{t1}^t\) representa o aspecto sazonal ou cíclico dos dados, \(\widehat{X}_{t2}^t\) representa os picos durante uma epidemia de gripe e \(\widehat{X}_{t3}^t\) representa o declínio lento na mortalidade por gripe ao longo do período de dez anos, entre 1969–1978.

Previsões com um mês de antecedência, digamos, \(\widehat{Y}_{t}^{t-1}\) são obtidas como \[\begin{array}{rcl} \widehat{Y}_t^{t-1} & = & M_1 \widehat{X}_t^{t-1} \qquad \mbox{se} \qquad \widehat{\pi}_1(t \, | \, t-1)> \widehat{\pi}_2(t \, | \, t-1), \\ \widehat{Y}_t^{t-1} & = & M_2 \widehat{X}_t^{t-1} \qquad \mbox{se} \qquad \widehat{\pi}_1(t \, | \, t-1)\leq \widehat{\pi}_2(t \, | \, t-1)\cdot \end{array}\]

Obviamente, \(\widehat{X}_t^{t-1}\) é a previsão de estado estimada, obtida por meio do filtro apresentado anteriormente com a adição do termo constante no modelo usando os parâmetros estimados. Os resultados são mostrados na Figura VI.16 (c). A precisão das previsões pode ser medida pelas variâncias da inovações, \(\Sigma_{t1}\) quando nenhuma epidemia é prevista e \(\Sigma_{t2}\) quando uma epidemia é prevista.

Esses valores tornam-se estáveis rapidamente e, quando nenhuma epidemia é prevista, o erro de predição padrão estimado é de aproximadamente 0.02, esta é a raiz quadrada de \(\Sigma_{t1}\) para \(t\) grande; quando uma epidemia de gripe é prevista, o erro de predição padrão estimado é de aproximadamente 0.11.

library(astsa)
y = as.matrix(flu); num = length(y); nstate = 4;
M1 = as.matrix(cbind(1,0,0,1)) # obs matrix normal
M2 = as.matrix(cbind(1,0,1,1)) # obs matrix flu epi
prob = matrix(0,num,1); yp = y # to store pi2(t|t-1) & y(t|t-1)
xfilter = array(0, dim=c(nstate,1,num)) # to store x(t|t)
# Function to Calculate Likelihood
Linn = function(para){
   alpha1 = para[1]; alpha2 = para[2]; beta0 = para[3]
   sQ1 = para[4]; sQ2 = para[5]; like=0
   xf = matrix(0, nstate, 1) # x filter
   xp = matrix(0, nstate, 1) # x pred
   Pf = diag(.1, nstate) # filter cov
   Pp = diag(.1, nstate) # pred cov
   pi11 <- .75 -> pi22; pi12 <- .25 -> pi21; pif1 <- .5 -> pif2
   phi = matrix(0,nstate,nstate)
   phi[1,1] = alpha1; phi[1,2] = alpha2; phi[2,1]=1; phi[4,4]=1
   Ups = as.matrix(rbind(0,0,beta0,0))
   Q = matrix(0,nstate,nstate)
   Q[1,1] = sQ1^2; Q[3,3] = sQ2^2; R=0 # R=0 in final model
   # begin filtering #
   for(i in 1:num){
     xp = phi%*%xf + Ups; Pp = phi%*%Pf%*%t(phi) + Q
     sig1 = as.numeric(M1%*%Pp%*%t(M1) + R)
     sig2 = as.numeric(M2%*%Pp%*%t(M2) + R)
     k1 = Pp%*%t(M1)/sig1; k2 = Pp%*%t(M2)/sig2
     e1 = y[i]-M1%*%xp; e2 = y[i]-M2%*%xp
     pip1 = pif1*pi11 + pif2*pi21; pip2 = pif1*pi12 + pif2*pi22
     den1 = (1/sqrt(sig1))*exp(-.5*e1^2/sig1)
     den2 = (1/sqrt(sig2))*exp(-.5*e2^2/sig2)
     denm = pip1*den1 + pip2*den2
     pif1 = pip1*den1/denm; pif2 = pip2*den2/denm
     pif1 = as.numeric(pif1); pif2 = as.numeric(pif2)
     e1 = as.numeric(e1); e2=as.numeric(e2)
     xf = xp + pif1*k1*e1 + pif2*k2*e2
     eye = diag(1, nstate)
     Pf = pif1*(eye-k1%*%M1)%*%Pp + pif2*(eye-k2%*%M2)%*%Pp
     like = like - log(pip1*den1 + pip2*den2)
     prob[i]<<-pip2; xfilter[,,i]<<-xf; innov.sig<<-c(sig1,sig2)
     yp[i]<<-ifelse(pip1 > pip2, M1%*%xp, M2%*%xp) }
   return(like) }
# Estimation
alpha1 = 1.4; alpha2 = -.5; beta0 = .3; sQ1 = .1; sQ2 = .1
init.par = c(alpha1, alpha2, beta0, sQ1, sQ2)
(est = optim(init.par, Linn, NULL, method='BFGS', hessian=TRUE,
              control=list(trace=1,REPORT=1)))
## initial  value -236.860522 
## iter   2 value -313.882451
## iter   3 value -320.373891
## iter   4 value -322.538581
## iter   5 value -326.037522
## iter   6 value -326.220434
## iter   7 value -328.165001
## iter   8 value -337.802054
## iter   9 value -339.102455
## iter  10 value -339.278478
## iter  11 value -339.295742
## iter  12 value -339.295935
## iter  13 value -339.295949
## iter  13 value -339.295949
## final  value -339.295949 
## converged
## $par
## [1]  1.40570967 -0.62198715  0.21049042  0.02310306  0.11217287
## 
## $value
## [1] -339.2959
## 
## $counts
## function gradient 
##       69       13 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##           [,1]       [,2]        [,3]       [,4]       [,5]
## [1,]  781.6937  779.66092   112.58312   1956.837  -32.89720
## [2,]  779.6609 1000.99490    82.68173   -107.393  -53.07502
## [3,]  112.5831   82.68173  1786.32460  -3798.730 -594.69751
## [4,] 1956.8370 -107.39297 -3798.72986 418827.665 7721.44658
## [5,]  -32.8972  -53.07502  -594.69751   7721.447 3892.96236
SE = sqrt(diag(solve(est$hessian)))
u = cbind(estimate=est$par, SE)
rownames(u)=c('alpha1','alpha2','beta0','sQ1','sQ2'); u
##           estimate          SE
## alpha1  1.40570967 0.078587727
## alpha2 -0.62198715 0.068733109
## beta0   0.21049042 0.024625302
## sQ1     0.02310306 0.001635291
## sQ2     0.11217287 0.016684663
# Graphics
predepi = ifelse(prob<.5,0,1); k = 6:length(y)
Time = time(flu)[k]
regime = predepi[k]+1
par(mfrow=c(3,1), mar=c(2,3,1,1)+.1)
plot(Time, y[k], type="n", ylab="")
grid(lty=2); lines(Time, y[k], col=gray(.7))
text(Time, y[k], col=regime, labels=regime, cex=1.1)
text(1979,.80,"(a)")
plot(Time, xfilter[1,,k], type="n", ylim=c(-.1,.4), ylab="")
grid(lty=2); lines(Time, xfilter[1,,k], col="red")
lines(Time, xfilter[3,,k], col="blue"); lines(Time, xfilter[4,,k], col="green")
text(1979,.35,"(b)")
plot(Time, y[k], type="n", ylim=c(.1,.9),ylab="")
grid(lty=2); points(Time, y[k], pch=19)
prde1 = 2*sqrt(innov.sig[1]); prde2 = 2*sqrt(innov.sig[2])
prde = ifelse(predepi[k]<.5, prde1,prde2)
xx = c(Time, rev(Time))
yy = c(yp[k]-prde, rev(yp[k]+prde))
polygon(xx, yy, border=8, col=gray(.6, alpha=.3))
text(1979,.85,"(c)")

Figura VI.16 (a) Dados de influenza \(Y_t\), (pontos e linha) e um indicador de previsão (1 ou 2) de que uma epidemia ocorre no mês \(t\) dados os dados até o mês \(t-1\) (linha tracejada). (b) Os três componentes estruturais filtrados da mortalidade por influenza: \(X_{t1}^t\) (traço cíclico vermelho), \(X_{t2}^t\) (traço incrementado em açul) e \(X_{t3}^t\) (traço linear negativo em verde). (c) Previsões com um mê de antecedência mostradas como limites superior e inferior \(\widehat{Y}_{t}^{t-1}\pm 2 \sqrt{\widehat{P}_t^{t-1}}\) (faixa cinza), do número de mortes por pneumonia e influenza e \(Y_t\) (pontos).

Os resultados desta análise são impressionantes dado o pequeno número de parâmetros e o grau de aproximação que foi feito para obter um método computacionalmente simples para ajustar um modelo complexo. Outras evidências da força desta técnica podem ser encontradas no exemplo dado em Shumway and Stoffer (1991).



VI.11 Volatilidade estocástica


Os modelos de volatilidade estocástica (SV) são uma alternativa aos modelos do tipo GARCH apresentados na Seção V.3. Ao longo desta seção, \(r_t\) vai denotar os retornos de algum ativo financeiro. A maioria dos modelos para dados de retorno usados na prática são de uma forma multiplicativa que vimos na mesma Seção V.3, \[\begin{equation*} r_t \, = \, \sigma_t \epsilon_t, \end{equation*}\] onde \(\{\epsilon_t\}\) é uma sequência independente identicamente distribuída e o processo de volatilidade \(\sigma_t\), é um processo estocástico não negativo tal que \(\epsilon_t\) é independente de \(\sigma_s\) para todo \(s\leq t\). Frequentemente, assume-se que \(\epsilon_t\) tem média zero e variância unitária.

Nestes modelos, a volatilidade é uma transformação não linear de um processo auto-regressivo linear oculto, onde o processo de volatilidade oculta \(X_t = \log(\sigma_t^2)\), segue um processo autoregresivo de primeira ordem, \[\begin{array}{rlc} X_t & = & \phi X_{t-1}+W_t,\\ r_t & = & \beta \exp\big(\frac{1}{2}X_t\big)\epsilon_t, \end{array}\]

onde \(W_t\sim N(0,\sigma_{_W}^2)\) são independentes identicamente distribuídos e \(\epsilon_t\) é o ruído, sendo tembém independentes identicamente distribuídos com momentos finitos. Os processos de erro \(W_t\) e \(\epsilon_t\) são considerados mutuamente independentes e \(|\phi| <1\).

Como \(W_t\) é normalmente distribuído, \(X_t\) também é normalmente distribuído. Todos os momentos de \(\epsilon_t\) existem, de modo que todos os momentos de \(r_t\), defido acima, existem também. Supondo que \(X_0\sim N(0,\sigma_{_W}^2/(1-\phi^2))\), a distribuição estacionária, a curtose de \(r_t\) é dada por \[\begin{equation*} \kappa_4(r_t) \, = \, \kappa_4(\epsilon_t)\exp\big( \sigma_{_X}^2\big), \end{equation*}\] onde \(\sigma_{_X}^2=\sigma_{_W}^2/(1-\phi^2)\) é a variância estacionária de \(X_t\).

Lembremos que, para um interiro \(m\) e uma variável aleatória \(U\), \[\begin{equation*} \kappa_m(U) \, = \, \dfrac{\mbox{E}\big( |U|^m \big)}{\sqrt{\mbox{E}\big(|U|^2 \big)^m}}\cdot \end{equation*}\] Tipicamente, \(\kappa_3\) é chamado de coeficiente de skewness ou coeficiente assimetria e \(\kappa_4\) é chamado de coeficiente de kurtosis ou coeficiente de curtose.

Assim, \(\kappa_4(t_t)>\kappa_4(\epsilon_t)\), de modo que se \(\epsilon_t\sim N(0,1)\) idependentes identicamente distribuídos, a distribuição de \(r_t\) é leptocúrtica. As distribuições leptocúrticas são distribuições estatísticas com curtose maior que três. Podem ser descritas como tendo uma forma mais larga ou mais plana com caudas mais grossas, resultando em uma maior chance de eventos positivos ou negativos extremos. As distribuições leptocúrticas são uma das três categorias principais encontradas na análise da curtose. Suas outras duas contrapartes são as distribuições mesocúrticas, que não apresentam curtose e estão associadas à distribuição normal e as platicúrticas, que apresentam caudas mais finas e menos curtose.

A função de autocorrelação de \(\{r_t^{2m}\}_{t=1,2,\cdots}\), para qualquer inteiro \(m\), é dada por \[\begin{equation*} \mbox{Corr}(r_{t+h}^{2m},r_t^{2m}) \, = \, \dfrac{\exp\big(m^2\sigma_{_X}^2\phi^h\big)-1}{\kappa_{4m}(\epsilon_t)\exp\big(m^2\sigma_{_X}^2\big)-1}\cdot \end{equation*}\] A taxa de decaimento da função de autocorrelação é mais rápida do que a exponencial em pequenos intervalos de tempo e, em seguida, estabiliza para \(\phi\) em grandes intervalos.

Às vezes é mais fácil trabalhar com a forma linear do modelo onde definimos \[\begin{equation*} Y_t \, = \, \log(r_t^2) \qquad \mbox{e} \qquad \nu_t \, = \, \log(\epsilon_t^2), \end{equation*}\] nesse caso, podemos escrever \[\begin{equation*} Y_t \, = \, \alpha+X_t+\nu_t\cdot \end{equation*}\]

A constante é geralmente necessária na equação de estado ou na equação de observação, mas não normalmente em ambas, então escrevemos a equação de estado como \[\begin{equation*} X_t \, = \, \phi_0 +\phi_1 X_{t-1}+W_t, \end{equation*}\] onde \(W_t\) é o ruído branco Gaussiano com variância \(\sigma_{_W}^2\). A constante \(\phi_0\) às vezes é chamada de efeito de alavancagem. As duas expressões acima juntas compõem o modelo de volatilidade estocástica de Taylor (1982).

Se \(\epsilon_t^2\) tivesse uma distribuição log-normal, \[\begin{equation*} Y_t \, = \, \alpha+X_t+\nu_t\cdot \end{equation*}\] e \[\begin{equation*} X_t \, = \, \phi_0 +\phi_1 X_{t-1}+W_t, \end{equation*}\] formariam um modelo de espaço de estados Gaussiano e poderíamos usar os resultados do modelo dinâmico linear padrão para ajustar o modelo aos dados.

Infelizmente, essa suposição não parece funcionar bem. Em vez disso, geralmente mantemos a suposição de normalidade do ARCH em \(\epsilon_t \sim N(0,1)\) independentes, caso em que \(\nu_t = \log\big(\epsilon_t^2\big)\) é distribuído como o logaritmo de uma variável aleatória qui-quadrada com um grau de liberdade. Esta densidade é dada por \[\begin{equation*} f(\nu) \, = \, \dfrac{1}{\sqrt{2\pi}}\exp\left( -\frac{1}{2}\big(e^\nu-\nu \big)\right), \qquad -\infty<\nu<\infty\cdot \end{equation*}\] A média da distribuição é \(-(\gamma+\log(2))\), onde \(\gamma\approx 0.5772\) é a constante de Euler e a variância da distribuição é \(\pi^2/2\). Esta é uma densidade altamente enviesada (veja a Figura VI.18), mas não é flexível porque não há parâmetros livres a serem estimados.

Várias abordagens para o ajuste de modelos de volatilidade estocástica foram examinadas; esses métodos incluem uma ampla gama de suposições sobre o processo de ruído observacional. Um bom resumo das técnicas propostas, ambas abordagens Bayesiana via MCMC e não Bayesiana, como estimação de quase-máxima verossimilhançe o algoritmo EM, pode ser encontrado em Jacquier et al. (1994) e Shephard (1996). Métodos de simulação para inferência clássica aplicada a modelos de volatilidade estocástica são discutidos em Danielson (1994) e Sandmann and Koopman (1998).

Kim, Shephard and Chib (1998) propuseram modelar o logaritmo de uma variável aleatória qui-quadrada por uma mistura de sete normais para aproximar os primeiros quatro momentos da distribuição do erro observacional; a mistura é fixada e nenhum parâmetro de modelo adicional é considerado usando esta técnica. A suposição do modelo básico de \(\epsilon_t\) ser gaussiano é irreal para a maioria das aplicações. Em um esforço para manter as coisas simples, mas mais gerais no sentido de que permitimos que a dinâmica do erro observacional dependa dos parâmetros que serão ajustados, nosso método de ajuste de modelos de volatilidade estocástica é manter a equação de estado Gaussiana, mas escrever a equação de observação, como \[\begin{equation*} Y_t \, = \, \alpha+X_t+\eta_t, \end{equation*}\] onde \(\eta_t\) é o ruído branco, cuja distribuição é uma mistura de duas normais, uma centrada em zero. Em particular, escrevemos \[\begin{equation*} \eta_t \, = \, I_t Z_{t0}+(1-I_t)Z_{t1}, \end{equation*}\] onde \(I_t\) é um processo Bernoulli independentes, \(P(I_t=0)=\pi_0\), \(P(I_t=1)=\pi_1\), sob a condição \(\pi_0+\pi_1=1\), \(Z_{t0}\sim N(0,\sigma_0^2)\) independentes identicamente distribuídas e \(Z_{t1}\sim N(\mu_1\sigma_1^2)\) independentes identicamente ditribuídas também.

A vantagem desse modelo é que ele é fácil de ajustar porque usa a normalidade. De fato, as equações que definem do modelo são semelhantes às apresentadas em Peña and Guttman (1988), que utilizaram a ideia para obter um filtro de Kalman robusto e, como mencionado anteriormente, em Kim et al. (1998). O material apresentado na Seção VI.10 se aplica aqui e, em particular, as equaçõs de filtragem para este modelo são \[\begin{array}{rcl} X_{t+1}^t & = & \displaystyle \phi_0 +\phi_1 X_t^{t-1}+\sum_{j=0}^1 \pi_{tj}K_{ij}\epsilon_{ij}, \\ P_{t+1}^t & = & \displaystyle \phi_1^2 P_t^{t-1}+\sigma_{_W}^2 - \sum_{j=0}^1\pi_{tj} K_{ij}^2 \Sigma_{tj}^, \\ \epsilon_{t0} \, = \, Y_t-\alpha-X_t^{t-1}, & & \epsilon_{t1} \, = \, Y_t -\alpha-X_t^{t-1}-\mu_1, \\ \Sigma_{t0} \, = \, P_t^{t-1}+\sigma_0^2, \qquad & & \qquad \Sigma_{t1} \, = \, P_t^{t-1}+\sigma_1^2, \\ K_{t0} \, = \, \phi_1 P_t^{t-1}/\Sigma_{t0}, & & K_{t1} \, = \, \phi_1 P_t^{t-1}/\Sigma_{t1}\cdot \end{array}\]

Para completar a filtragem, devemos ser capazes de avaliar as probabilidades \(\pi_{t1}=P(I_t=1 \, | \, Y_{1:t})\), para \(t=1,\cdots,n\); é claro que, \(\pi_{t0} = 1 - \pi_{t1}\). Denotemos por \(p_j(t \, | \, t-1)\) a densidade condicional de \(Y_t\) dado o passado \(Y_{1:t-1}\) e \(I_t = j\) para \(j = 0, 1\). Então, \[\begin{equation*} \pi_{t1} \, = \, \dfrac{\pi_1 p_1(t \, | \, t-1)}{\pi_0 p_0(t \, | \, t-1)+\pi_1 p_1(t \, | \, t-1)}, \end{equation*}\] onde assumimos que a distribuição \(\pi_j\), para \(j = 0,1\) foi especificada a priori.

Se o investigador não tiver razão para preferir um estado a outro, a escolha a priori uniformes \(\pi_1 = 1/2\), será suficiente. Infelizmente, é computacionalmente difícil obter os valores exatos de \(p_j(t \, | \, t - 1)\); embora possamos dar uma expressão explícita de \(p_j(t \, | \, t - 1)\), o cálculo real da densidade condicional é proibitivo.

Uma aproximação viável, entretanto, é escolher \(p_j(t \, | \, t - 1)\) como sendo a densidade normal, \(N\big(X_t^{t-1}+\mu_j, \Sigma_{tj}\big)\) para \(j=0,1\); consulte a Seção VI.10 para obter detalhes.

O filtro de inovações dado anteriormente pode ser derivado do filtro de Kalman por um simples argumento de condicionamento; por exemplo, para derivar \(X_{t+1}^t = \phi_0 +\phi_1 X_t^{t-1}+\sum_{j=0}^1 \pi_{tj}K_{ij}\epsilon_{ij}\), escreva \[\begin{array}{rcl} \mbox{E}(X_{t+1} \, | \, Y_{1:t}) & = & \displaystyle \sum_{j=0}^1 \mbox{E}(X_{t+1} \, | \, Y_{1:t}, I_t=j)P(I_t=j \, | \, Y_{1:t}) \\ & = & \displaystyle \sum_{j=0}^1 \Big(\phi_0+\phi_1 X_t^{t-1}+K_{tj}\epsilon_{tj} \Big)\pi_{tj} \, = \, \phi_0+\phi_1 X_t^{t-1}+\sum_{j=0}^1 \phi_{tj} K_{tj}\epsilon_{ij} \cdot \end{array}\]

A estimação dos parâmetros \(\Theta=(\phi_0,\phi_1,\sigma_0^2,\mu_1,\sigma_1^2,\sigma_{_W}^2)^\top\) é realizada via MLE com base na verossimilhança dada por \[\begin{equation*} \ln\big(L_Y(\Theta) \big) \, = \, \sum_{t=1}^n \ln\left(\sum_{j=0}^1 \pi_j p_j(t \, | \, t-1) \right), \end{equation*}\] onde a densidade \(p_j(t \, | \, t-1)\) é aproximada pela densidade normal \(N\big(X_t^{t-1}+\mu_j, \sigma_j^2\big)\), mencionada anteriormente.

Podemos considerar a maximização da verossimilhança acima diretamente como uma função dos parâmetros usando o método de Newton ou podemos considerar a aplicação do algoritmo EM para a verossimilhança completa dos dados.


Exemplo VI.23. Bolsa de Valores de Nova York.


A Figura VI.17 mostra os retornos \(r_t\), para cerca de 400 dos 2.000 pregões da NYSE. O modelo de volatilidade estocástica, com \(\pi_1\) fixo em 0.5; foi ajustado aos dados usando o método quase Newton-Raphson para maximizar a verossimilhança.

A Figura VI.18 compara a densidade do \(\log\big(\chi_1^2 \big)\) com a mistura normal ajustada; notamos que os dados indicam uma quantidade substancial de probabilidade na cauda superior na qual a distribuição \(\log\big(\chi_1^2\big)\) falha.

Finalmente, a Figura VI.17 também mostra a log-volatilidade prevista um passo à frente \(\widehat{X}_t^{t-1}\), onde \(X_t = \log(\sigma_t^2)\), em torno do crash de 19 de outubro de 1987. A análise indica que \(\phi_0\) não é necessário. O código R quando \(\phi_0\) está incluído no modelo é como segue.

library(astsa)
y = log(nyse^2)
num = length(y)
# Parâmetros inicias
phi0 = 0; phi1 =.95; sQ =.2; alpha = mean(y)
sR0 = 1; mu1 = -3; sR1 =2
init.par = c(phi0, phi1, sQ, alpha, sR0, mu1, sR1)
# Verossimilhança
Linn = function(para){
   phi0 = para[1]; phi1 = para[2]; sQ = para[3]; alpha = para[4]
   sR0 = para[5]; mu1 = para[6]; sR1 = para[7]
   sv = SVfilter(num, y, phi0, phi1, sQ, alpha, sR0, mu1, sR1)
   return(sv$like) }
# Estimação
(est = optim(init.par, Linn, NULL, method='BFGS', hessian=TRUE, 
             control=list(trace=0,REPORT=1)))
## $par
## [1] -0.005582453  0.988216120  0.093354667 -9.641761242  1.217808393
## [6] -2.295367514  2.682844415
## 
## $value
## [1] 1292.588
## 
## $counts
## function gradient 
##      101       30 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##             [,1]        [,2]        [,3]        [,4]        [,5]        [,6]
## [1,] 135142.5667 -63213.8525 -407.189121 1604.292844  561.279848  425.432307
## [2,] -63213.8525  58112.2463 5320.864939 -739.894262 -102.798225 -180.048458
## [3,]   -407.1891   5320.8649 2327.395840   -7.262781  131.607581    5.173039
## [4,]   1604.2928   -739.8943   -7.262781   19.505758    6.906964    5.144636
## [5,]    561.2798   -102.7982  131.607581    6.906964  273.949530  -20.156411
## [6,]    425.4323   -180.0485    5.173039    5.144636  -20.156411   30.983258
## [7,]    272.9453   -162.8978    3.920597    3.306895  -11.112028  -17.858787
##             [,7]
## [1,]  272.945294
## [2,] -162.897836
## [3,]    3.920597
## [4,]    3.306895
## [5,]  -11.112028
## [6,]  -17.858787
## [7,]  106.341280
SE = sqrt(diag(solve(est$hessian)))
u = cbind(estimates=est$par, SE)
rownames(u)=c('phi0','phi1','sQ','alpha','sigv0','mu1','sigv1'); u
##          estimates          SE
## phi0  -0.005582453 0.019001024
## phi1   0.988216120 0.007773915
## sQ     0.093354667 0.027643077
## alpha -9.641761242 1.504937290
## sigv0  1.217808393 0.064876896
## mu1   -2.295367514 0.204367169
## sigv1  2.682844415 0.104969139
# Gráficos (precisa de filtros nos parâmetros estimados)
phi0 = est$par[1]; phi1 = est$par[2]; sQ = est$par[3]; alpha = est$par[4]
sR0 = est$par[5]; mu1 = est$par[6]; sR1 = est$par[7]
sv = SVfilter(num,y,phi0,phi1,sQ,alpha,sR0,mu1,sR1)
# mostrando a densidade (f é chi-sq, fm é a mistura estimada)
x = seq(-15,6,by=.01)
f = exp(-.5*(exp(x)-x))/(sqrt(2*pi))
f0 = exp(-.5*(x^2)/sR0^2)/(sR0*sqrt(2*pi))
f1 = exp(-.5*(x-mu1)^2/sR1^2)/(sR1*sqrt(2*pi))
fm = (f0+f1)/2
par(mfrow = c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0), pch=19)
Time=701:1100
plot (ts(nyse[Time], start = c(1987), frequency = 365), type='l', col=4, lwd=2, ylab='', 
      xlab='', ylim=c(-.18,.12))
lines(ts(sv$xp[Time]/10, start = c(1987), frequency = 365), lwd=2, col=6)
grid()

Figura VI.17 Aproximadamente quatrocentas observações de \(r_t\), os retornos diários da NYSE em torno do crash de 19 de outubro de 1987. Também é exibida a previsão do logaritmo da volatilidade prevista de um passo à frente correspondente \(\widehat{X}_t^{t-1}\), onde \(X_t = \log(\sigma_t^2)\), escalado por 0.1 para caber no gráfico.

plot(x, f, type='l'); lines(x, fm, lty=2, lwd=2)
grid()

Figura VI.18 Densidade do \(\log(\chi_1^2)\) dada anteriormente (linha cheia) e a mistura normal ajustada (linha tracejada) neste exemplo.


É possível usar o procedimento de bootstrap descrito na Seção VI.7 para o modelo de volatilidade estocástica, com algumas pequenas alterações. O procedimento a seguir foi descrito em Stoffer and Wall (2004). Desenvolvemos uma equação vetorial de primeira ordem, como foi feito anteriormente. Primeiro e observando que \[\begin{equation*} Y_t \, = \, \pi_{t0}Y_t+\pi_{t1}Y_t, \end{equation*}\] podemos escrever \[\begin{equation*} Y_t \, = \, \alpha+X_t^{t-1}+\pi_{t0}\epsilon_{t0}+\pi_{t1}(\epsilon_{t1}+\mu_1)\cdot \end{equation*}\]

Considere as inovações padronizadas \[\begin{equation*} \epsilon_{tj} \, = \, \Sigma_{tj}^{-1/2}\epsilon_{tj}, \qquad j=0,1, \end{equation*}\] e definindo o vetor \(2\times 1\) \[\begin{equation*} \epsilon_t \, = \, \begin{pmatrix} e_{t0} \\ \epsilon_{t1} \end{pmatrix}\cdot \end{equation*}\] Também definimos o vetor \(2\times 1\) \[\begin{equation*} \xi_t \, = \, \begin{pmatrix} X_{t+1}^t \\ Y_{t} \end{pmatrix}\cdot \end{equation*}\]

Combinando os resultados acima, resulta numa equação vetorial de primeira ordem para \(\xi_t\) dada por \[\begin{equation*} \xi_t \, = \, F \xi_{t-1} +G_t +H_t \epsilon_t, \end{equation*}\] onde \[\begin{equation*} F \, = \, \begin{pmatrix} \phi_1 & 0 \\ 1 & 0 \end{pmatrix}, \qquad G \, = \, \begin{pmatrix} \phi_0 \\ \alpha+\pi_{t1} \mu_1 \end{pmatrix}, \qquad H \, = \, \begin{pmatrix} \phi_{t0}K_{t0} \Sigma_{t0}^{1/2} & \pi_{t1}K_{t1}\Sigma_{t1}^{1/2} \\ \pi_{t0}\Sigma_{t0}^{1/2} & \pi_{t1}\Sigma_{t1}^{1/2} \end{pmatrix} \cdot \end{equation*}\]

Portanto, as etapas do bootstrap para este caso são as mesmas das etapas (i) a (v) descritas na Seção VI.7, mas substituíndo a seguinte equação de primeira ordem: \[\begin{equation*} \xi_t^* \, = \, F(\widehat{\Theta})\xi_{t-1}^* G_t(\widehat{\Theta};\widehat{\pi}_{t1})+H_t(\widehat{\Theta};\widehat{\pi}_{t1})\epsilon_t^*, \end{equation*}\] onde \(\widehat{\Theta}=\{\widehat{\phi}_0,\widehat{\phi}_1,\widehat{\sigma}_0^2,\widehat{\alpha},\widehat{\mu}_1,\widehat{\sigma}_1^2,\widehat{\sigma}_{_W}^2\}\) é o vetor de estimativas de máxima verossimilhança e \(\widehat{\pi}_{t1}\) é estimado substituindo \(p_1(t \, | \, t-1)\) e \(p_0( t \, | \, t-1)\) por suas respectivas densidades normais estimadas \(\widehat{\pi}_{t0} = 1 - \widehat{\pi}_{t1}\).


Exemplo VI.24. Produto Interno Bruto (PIB) dos EUA.


No Exemplo V.4 ajustamos um modelo ARCH à taxa de crescimento do PIB dos EUA. Neste exemplo, ajustaremos um modelo de volatilidade estocástica aos resíduos do ajuste AR(1) na taxa de crescimento (ver Exemplo III.39). A Figura VI.19 mostra o logaritmo dos resíduos quadrados, digamos \(Y_t\), do ajuste na série do PIB dos EUA.

O modelo de volatilidade estocástica foi então ajustado para \(Y_t\). Mostramos as estmativas obtidas por máxima verossimilhança dos parâmetros do modelo junto com seus erros padrão assintóticos, assumindo que o modelo está correto. Também são exibidos os erros padrão de \(B = 500\) amostras bootstrapped.

Há pouca concordância entre a maioria dos valores assintóticos e os valores bootstrapped. O interesse aqui, entretanto, não está tanto nos erros padrão, mas na real distribuição amostral das estimativas.

A Figura VI.19 compara o histograma bootstrap e a distribuição normal assintótica de \(\widehat{\phi}_1\). Nesse caso, a distribuição bootstrap exibe curtose e assimetria positivas que não são percebidas pela suposição de normalidade assintótica.

O código R para este exemplo é o seguinte. Mantivemos \(\phi_0\) em 0 para esta análise porque não era significativamente diferente de 0 em uma análise inicial.

library(astsa)
n.boot = 500 # número de réplicas bootstrap
tol = sqrt(.Machine$double.eps) # tolerância de convergência
gnpgr = diff(log(gnp))
fit = arima(gnpgr, order=c(1,0,0))
y = as.matrix(log(resid(fit)^2))
num = length(y)
# Parâmetros iniciais
phi1 = .9; sQ = .5; alpha = mean(y); sR0 = 1; mu1 = -3; sR1 = 2.5
init.par = c(phi1, sQ, alpha, sR0, mu1, sR1)
# Verossimilhança das inovações
Linn = function(para, y.data){
   phi1 = para[1]; sQ = para[2]; alpha = para[3]
   sR0 = para[4]; mu1 = para[5]; sR1 = para[6]
   sv = SVfilter(num, y.data, 0, phi1, sQ, alpha, sR0, mu1, sR1)
   return(sv$like) }
# Estimação
(est = optim(init.par, Linn, NULL, y.data=y, method='BFGS', hessian=TRUE, 
             control=list(trace=0,REPORT=1)))
## $par
## [1]  0.8838776  0.3810748 -9.6536999  0.8345046 -2.3497986  2.4534855
## 
## $value
## [1] 132.3205
## 
## $counts
## function gradient 
##       48       19 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
## 
## $hessian
##            [,1]       [,2]       [,3]        [,4]       [,5]        [,6]
## [1,] 219.624085 89.1260626 -3.4942051  5.65766315  1.0437181  3.55144853
## [2,]  89.126063 69.7230615  0.6077947 24.77517909  0.9450767  3.51244389
## [3,]  -3.494205  0.6077947 10.0545887  3.76577026  1.8819022  1.39433578
## [4,]   5.657663 24.7751791  3.7657703 40.45361582  0.1686128 -0.09642438
## [5,]   1.043718  0.9450767  1.8819022  0.16861276  4.8442676 -1.81998986
## [6,]   3.551449  3.5124439  1.3943358 -0.09642438 -1.8199899 13.25172792
SE = sqrt(diag(solve(est$hessian)))
u = rbind(estimates=est$par, SE)
colnames(u)=c('phi1','sQ','alpha','sig0','mu1','sig1'); round(u, 3)
##            phi1    sQ  alpha  sig0    mu1  sig1
## estimates 0.884 0.381 -9.654 0.835 -2.350 2.453
## SE        0.109 0.221  0.343 0.204  0.495 0.293
# Bootstrap
para.star = matrix(0, n.boot, 6) # para armazenar as estimativas dos parâmetros
for (jb in 1:n.boot){
 #  cat('iteration:', jb, '\n')
   phi1 = est$par[1]; sQ = est$par[2]; alpha = est$par[3]
   sR0 = est$par[4]; mu1 = est$par[5]; sR1 = est$par[6]
   Q = sQ^2; R0 = sR0^2; R1 = sR1^2
   sv = SVfilter(num, y, 0, phi1, sQ, alpha, sR0, mu1, sR1)
   sig0 = sv$Pp+R0; sig1 = sv$Pp+R1;
   K0 = sv$Pp/sig0; K1 = sv$Pp/sig1
   inn0 = y-sv$xp-alpha; inn1 = y-sv$xp-mu1-alpha
   den1 = (1/sqrt(sig1))*exp(-.5*inn1^2/sig1)
   den0 = (1/sqrt(sig0))*exp(-.5*inn0^2/sig0)
   fpi1 = den1/(den0+den1)
   # start resampling at t=4
   e0 = inn0/sqrt(sig0); e1 = inn1/sqrt(sig1)
   indx = sample(4:num, replace=TRUE)
   sinn = cbind(c(e0[1:3], e0[indx]), c(e1[1:3], e1[indx]))
   eF = matrix(c(phi1, 1, 0, 0), 2, 2)
   xi = cbind(sv$xp,y) # initialize
   for (i in 4:num){ # generate boot sample
     G = matrix(c(0, alpha+fpi1[i]*mu1), 2, 1)
     h21 = (1-fpi1[i])*sqrt(sig0[i]); h11 = h21*K0[i]
     h22 = fpi1[i]*sqrt(sig1[i]); h12 = h22*K1[i]
     H = matrix(c(h11,h21,h12,h22),2,2)
     xi[i,] = t(eF%*%as.matrix(xi[i-1,],2) + G + H%*%as.matrix(sinn[i,],2))}
   # Estimates from boot data
   y.star = xi[,2]
   phi1=.9; sQ=.5; alpha=mean(y.star); sR0=1; mu1=-3; sR1=2.5
   init.par = c(phi1, sQ, alpha, sR0, mu1, sR1) # same as for data
   est.star = optim(init.par, Linn, NULL, y.data=y.star, method='BFGS', control=list(reltol=tol))
   para.star[jb,] = cbind(est.star$par[1], abs(est.star$par[2]),
                          est.star$par[3], abs(est.star$par[4]), est.star$par[5],
                          abs(est.star$par[6])) }
# Algumas estatísticas e gráficos resumidos
rmse = rep(NA,6) # Erros padrão do bootstrap
for(i in 1:6){
   rmse[i] = sqrt(sum((para.star[,i]-est$par[i])^2)/n.boot) 
   cat(i, rmse[i],'\n') }
## 1 0.06138293 
## 2 0.3252447 
## 3 1.498911 
## 4 0.5235395 
## 5 0.4237215 
## 6 0.4012229
layout(matrix(c(1,3,1,2), 1))
par(mar = c(3,3,1,1), mgp = c(1.6,.6,0))
plot.ts(y, ylab='')
grid()
phi = para.star[,1]
hist(phi, 15, prob=TRUE, main='', xlim=c(.4,1.2), xlab='')
xx = seq(.4, 1.2, by=.01)
lines(xx, dnorm(xx, mean=u[1,1], sd=u[2,1]), lty='dashed', lwd=2)
box()
grid()

Figura VI.19 Resultados do ajuste para o logaritmo dos resíduos quadrados de um ajuste AR(1) na taxa de crescimento do PIB dos EUA. Histograma do bootstrap e distribuição assintótica de \(\widehat{\phi}_1\).



VI.12 Análise Bayesiana de modelos de espaço de estados


Vamos agora considerar algumas abordagens Bayesianas para ajustar modelos de espaço de estado lineares gaussianos via métodos de Monte Carlo por Cadeias de Markov (MCMC). Assumimos que o modelo é dado na forma da Definição VI.1 quando \(\Upsilon=\Gamma=0\); entradas são permitidas no modelo, mas não as exibimos por uma questão de brevidade. Nesse caso, Frühwirth-Schnatter (1994) e Carter and Kohn (1994) estabeleceram o procedimento MCMC que discutiremos aqui.

Um texto abrangente que recomendamos fortemente para este caso é Petris et al. (2009) e o pacote R correspondente dlm. Para modelos não lineares e não gaussianos, o leitor deve consultar Douc, Moulines and Stoffer (2014).

Como nas seções anteriores, temos \(n\) observações denotadas por \(Y_{1:n} = \{Y_1,\cdots,Y_n\}\), enquanto os estados são denotados como \(X_{0:n} = \{X_0,X_1,\cdots,X_n\}\), com \(X_0\) sendo o estado inicial.

Os métodos MCMC referem-se aos métodos de integração de Monte Carlo que usam um esquema de atualização Markoviano para obter amostras de distribuições a posteriori intratáveis. O método MCMC mais comum é o amostrador de Gibbs, que é ssencialmente uma modificação do algoritmo Metropolis (Metropolis et al., 1953) desenvolvido por Hastings (1970) no cenário estatístico e por Geman and Geman (1984) no contexto de retauração de imagem. Mais tarde, Tanner and Wong (1987) usaram as ideias em sua abordagem de amostragem por substituição e Gelfand and Smith (1990) desenvolveram o amostrador de Gibbs para uma ampla classe de modelos paramétricos.

A estratégia básica é usar distribuições condicionais para configurar uma Cadeia de Markov para obter amostras de uma distribuição conjunta. O seguinte caso simples demonstra essa ideia.


Exemplo VI.25. Amostrador de Gibbs.


Suponha que desejamos obter amostras de uma distribuição normal bivariada, \[\begin{equation*} \begin{pmatrix} X \\ Y \end{pmatrix} \, \sim \, N\begin{pmatrix} \begin{pmatrix} 0 \\ 0 \end{pmatrix}, \begin{pmatrix} 1 & \rho \\ \rho & 1 \end{pmatrix}\end{pmatrix}, \end{equation*}\] onde \(|\rho|<1\), mas somente podemos gerar amostras de uma normal univariada.


Para modelos de espaço de estados, o objetivo principal é obter a densidade a posteriori dos parâmetros \(p(\Theta\, | \, Y_{1:n})\) ou \(p(X_{0:n} \, | \, Y_{1:n})\) se os estados forem significativos. Por exemplo, os estados não têm nenhum significado para um modelo ARMA, mas são importantes para um modelo de volatilidade estocástica.

Geralmente é mais fácil obter amostras da distribuição a posteriori completa \(p(\Theta,X_{0:n} \, | \, Y_{1:n})\) e então marginalizar para obter \(p(\Theta\, | \, Y_{1:n})\) ou \(p(X_{0:n} \, | \, Y_{1:n})\). Como mencionado anteriormente, o método mais popular é executar um amostrador de Gibbs completo, alternando entre os parâmetros do modelo amostral e as sequências de estado latente de suas respectivas distribuições condicionais completas.



Procedimento VI.1. Amostrador de Gibbs para modelos de espaço de estado

O Procedimento VI.1- (i) é geralmente muito mais fácil porque condiciona nos dados completos \(\{X_{0:n},Y_{1:n}\}\), segundo vimos na Seção VI.3, pode simplificar o problema. O Procedimento VI.1- (ii) equivale à amostragem da distribuição conjunta de suavização da sequência de estado latente e é geralmente difícil. Para modelos lineares de Gaussianos, entretanto, ambas as partes do Procedimento VI.1 são relativamente fáceis de executar.

Para realizar o Procedimento VI.1-(i), observe que \[\begin{equation*} p(\Theta \, | \,X_{0:n},Y_{1:n}) \approx \pi(\Theta)p(x_0 \, | \, \Theta)\prod_{t=1}^n p(X_t \, | \, X_{t-1},\Theta)p(Y_t \, | \, X_t,\Theta), \end{equation*}\] onde \(\pi(\Theta)\) é a distribuição a priori nos parâmetros. A a priori geralmente depende de hiperparâmetros que adicionam outro nível à hierarquia. Para simplificar, esses hiperparâmetros são considerados conhecidos. Os parâmetros são tipicamente condicionalmente independentes com distribuições de famílias paramétricas padrão, pelo menos desde que a distribuição a priori seja conjugada em relação à especificação do modelo Bayesiano. Para modelos não conjugados, uma opção é substituir o Procedimento VI.1-(i) por uma etapa Metropolis-Hastings, o que é viável uma vez que a densidade completa dos dados \(p(\Theta,X_{0:n},Y_{1:n})\) pode ser avaliada pontualmente.

Por exemplo, no modelo univariado \[\begin{equation*} X_t \, = \, \phi X_{t-1}+W_t \qquad \mbox{e} \qquad Y_t \, = \, X_t+\eta_t, \end{equation*}\] onde \(W_t\sim N(0,\sigma_{_W}^2)\) são indpendentes identicamente distribuídos, independentes de \(\eta_t\sim N(0,\sigma_{_\eta}^2)\) os quais também são independentes identicamente distribuídos. Podemos usar as distribuições Normal inversas e Gama inversa (IG) para a priori. Neste caso, os antecedentes nos componentes de variância são escolhidos de uma família conjugada, ou seja, \(\sigma_{_W}^2\sim IG(a_0/2,b_0/2)\) independentes de \(\sigma_{_\eta}^2\sim IG(c_0/2,d_0/2)\), onde IG denota a distribuição Gama inversa. Então, por exemplo, se a priori de \(\phi\) é Gaussiana, \(\phi\sim N(\mu_\phi,\sigma_{_\phi}^2)\), então \(\phi \, | \, \sigma_{_W},X_{0:n},Y_{1:n}\sim N(Bb,B)\), onde \[\begin{equation*} B^{-1} \, = \, \dfrac{1}{\sigma_{_\phi}^2}+\dfrac{1}{\sigma_{_W}^2}\sum_{t=1}^n x_{t-1}^2, \qquad b \, = \, \dfrac{\mu_\phi}{\sigma_{_\phi}^2}+\dfrac{1}{\sigma_{_W}^2}\sum_{t=1}^n x_{t-1}x_t, \end{equation*}\] sendo \[\begin{equation*} \sigma_{_W}^2 \, | \, \phi,X_{0:n},Y_{1:n} \, \sim \, IG\Big(\frac{1}{2}(a_0+n),\frac{1}{2}\big(b_0+\sum_{t=1}^n(x_t-\phi x_{t-1})^2 \big)\Big) \end{equation*}\] e \[\begin{equation*} \sigma_{\eta}^2 \, | \, X_{0:n},Y_{1:n} \, \sim \, IG\Big(\frac{1}{2}(c_0+n),\frac{1}{2}\big(c_0+\sum_{t=1}^n(y_t-\phi x_{t})^2 \big)\Big)\cdot \end{equation*}\]

Para o Procedimento VI.1-(ii), o objetivo é amostrar todo o conjunto de vetores de estado \(\{X_{0:n}\}\), a partir da densidade a posteriori \(p(X_{0:n} \, | \, \Theta,Y_{1:n})\), onde \(\Theta\) é um conjunto fixo de parâmetros obtidos na etapa anterior. Escreveremos a densidade posterior como \(p_\Theta(X_{0:n} \, | \, Y_{1:n})\) para economizar espaço. Por causa da estrutura de Markov, podemos escrever, \[\begin{equation*} p_\Theta(X_{0:n} \, | \, Y_{1:n}) \, = \, p_\Theta(X_{n} \, | \, Y_{1:n})p_\Theta(X_{n-1} \, | \, X_n,Y_{1:n-1})\cdots p_\Theta(X_0 \, | \, X_1)\cdot \end{equation*}\]

Em vista da expressão acima é possível amostrar todo o conjunto de vetores de estado \(\{X_{0:n}\}\), simulando sequencialmente os estados individuais para trás. Esse processo produz um método de simulação que Frühwirth and Schnatter (1994) chamaram de algoritmo de filtragem direta e amostragem para trás (FFBS). Da expressão acima, vemos que devemos obter as densidades \[\begin{equation*} p_\Theta(X_t \, | \, X_{t+1},Y_{1:t}) \approx p_\Theta(X_t \, | \, Y_{1:t})p_\Theta(X_{t+1} \, | \, X_t)\cdot \end{equation*}\]

Em particular, sabemos que \(X_t \, | \, Y_{1:t} \sim N_p^\Theta(X_t^t,P_t^t)\) e \(X_{t+1} \, | \, X_t \sim N_p^\Theta(\Phi X_t,Q)\). E porque os processos são Gaussianos, precisamos apenas obter as médias e variâncias condicionais, digamos, \[\begin{equation*} m_t \, = \, \mbox{E}(X_t \, | \, Y_{1:t},X_{t+1}) \qquad \mbox{e} \qquad \mbox{Var}_\Theta(X_t \, | \, Y_{1:t},X_{t+1})\cdot \end{equation*}\]

Em particular, \[\begin{equation*} m_t \, = \, X_t^t + J_t(X_{t+1}-X_{t+1}^t) \qquad \mbox{e} \qquad V_t \, = \, P_t^t - J_t P_{t+1}^t J_t^\top, \end{equation*}\] para \(t=n-1,n-2,\cdots,0\), sendo que \(J_t\) foi obtido no Teorema VI.2 como \(J_{t-1}=P_{t-1}^{t-1}\Phi^\top (P_t^{t-1})^{-1}\). Notamos também que \(m_t\) já foi derivado na demonstração do mesmo teorema, sendo que \(m_t = X_{t-1}^{t-1}+J_{t-1}\big(X_t-X_{t-1}^{t-1}\big)\). Para derivar \(m_t\) e \(V_t\) usando a teoria normal padrão, use uma estratégia semelhante à derivação do filtro no Teorema VI.1. Isso é \[\begin{equation*} \left. \begin{pmatrix} X_t \\ X_{t+1} \end{pmatrix} \right| Y_{1:t} \, \sim \, N\begin{pmatrix} \begin{pmatrix} X_t^t \\ X_{t+1}^t \end{pmatrix}, \begin{pmatrix} P_t^t & P_t^t \Phi ^\top \\ \Phi P_t^t & P_{t+1}^t \end{pmatrix}\end{pmatrix}\cdot \end{equation*}\] Além disso, lembre-se da demonstração do Teorema VI.3 em que observamos que, fora da diagonal \(P_{t+1,t}^t=\Phi P_t^t\).

Portanto, dado \(\Theta\), o algoritmo é primeiro amostrar \(X_n\) de uma \(N_p^\Theta(X_n,P_n^n)\), onde \(X_n^n\) e \(P_n^n\) são obtidos a partir do filtro de Kalman, Toerema VI.1 e a seguir amostrar \(X_t\) de uma \(N_p^\Theta(m_t,V_t)\), para \(t = n-1,n-2,\cdots,0\), onde o valor de condicionamento de \(X_{t+1}\) é o valor amostrado anteriormente.


Exemplo VI.26. Modelo de nível local.


Neste exemplo, consideramos o modelo de nível local discutido anteriormente no Exemplo VI.4. Aqui, consideramos o modelo \[\begin{equation*} Y_t \, = \, X_t+\nu_t \qquad \mbox{e} \qquad X_t \, = \, X_{t-1}+W_t, \end{equation*}\] onde \(\nu_t\sim N(0,\sigma_\nu^2=1)\) são iid, independentes de \(W_t \sim N(0,\sigma_{_W}^2=0.5)\). Este é o modelo univariado que acabamos de discutir, mas onde \(\phi= 1\). Nesse caso, usamos priori IG para cada um dos componentes de variância.

Para as distribuições a priori, todos os parâmetros \((a_0, b_0, c_0, d_0)\) foram definidos como \(0.02\). Geramos 1010 amostras, usando as primeiras 10 como teste.

A Figura VI.20 exibe os dados e estados simulados, os contornos da verossimilhança dos dados, os valores a posteriori amostrados como pontos e as marginais a posteriori amostrados de cada componente de variância junto com as médias a posteriori.

##-- Notação --##
# y(t) = x(t) + v(t); v(t) ~ iid N(0,V)
# x(t) = x(t-1) + w(t); w(t) ~ iid N(0,W)
# priori: x(0) ~ N(m0,C0); V ~ IG(a,b); W ~ IG(c,d)
# FFBS: x(t|t) ~ N(m,C); x(t|n) ~ N(mm,CC); x(t|t+1) ~ N(a,R)
##--
library(astsa)
ffbs = function(y,V,W,m0,C0){
   n = length(y); a = rep(0,n); R = rep(0,n)
   m = rep(0,n); C = rep(0,n); B = rep(0,n-1)
   H = rep(0,n-1); mm = rep(0,n); CC = rep(0,n)
   x = rep(0,n); llike = 0.0
   for (t in 1:n){
     if(t==1){a[1] = m0; R[1] = C0 + W
     }else{ a[t] = m[t-1]; R[t] = C[t-1] + W }
     f = a[t]
     Q = R[t] + V
     A = R[t]/Q
     m[t] = a[t]+A*(y[t]-f)
     C[t] = R[t]-Q*A**2
     B[t-1] = C[t-1]/R[t]
     H[t-1] = C[t-1]-R[t]*B[t-1]**2
     llike = llike + dnorm(y[t],f,sqrt(Q),log=TRUE) }
   mm[n] = m[n]; CC[n] = C[n]
   x[n] = rnorm(1,m[n],sqrt(C[n]))
   for (t in (n-1):1){
     mm[t] = m[t] + C[t]/R[t+1]*(mm[t+1]-a[t+1])
     CC[t] = C[t] - (C[t]^2)/(R[t+1]^2)*(R[t+1]-CC[t+1])
     x[t] = rnorm(1,m[t]+B[t]*(x[t+1]-a[t+1]),sqrt(H[t])) }
   return(list(x=x,m=m,C=C,mm=mm,CC=CC,llike=llike)) }
# Simulando estados e dados
set.seed(1); W = 0.5; V = 1.0
n = 100; m0 = 0.0; C0 = 10.0; x0 = 0
w = rnorm(n,0,sqrt(W))
v = rnorm(n,0,sqrt(V))
x = y = rep(0,n)
x[1] = x0 + w[1]
y[1] = x[1] + v[1]
for (t in 2:n){
   x[t] = x[t-1] + w[t]
   y[t] = x[t] + v[t] }
# actual smoother (for plotting)
ks = Ksmooth(y, A=1, m0, C0, Phi=1, sQ=sqrt(W), sR=sqrt(V))
# alisamento atual (para graficar)
ks = Ksmooth(y, A=1, m0, C0, Phi=1, sQ=sqrt(W), sR=sqrt(V))
xsmooth = as.vector(ks$xs)
#
run = ffbs(y,V,W,m0,C0)
m = run$m; C = run$C; mm = run$mm
CC = run$CC; L1 = m-2*C; U1 = m+2*C
L2 = mm-2*CC; U2 = mm+2*CC
N = 50
Vs = seq(0.1,2,length=N)
Ws = seq(0.1,2,length=N)
likes = matrix(0,N,N)
for (i in 1:N){
   for (j in 1:N){
     V = Vs[i]
     W = Ws[j]
     run = ffbs(y,V,W,m0,C0)
     likes[i,j] = run$llike } }
# Hiperparâmetros
a = 0.01; b = 0.01; c = 0.01; d = 0.01
# MCMC
set.seed(90210)
burn = 10; M = 1000
niter = burn + M
V1 = V; W1 = W
draws = NULL
all_draws = NULL
for (iter in 1:niter){
   run = ffbs(y,V1,W1,m0,C0)
   x = run$x
   V1 = 1/rgamma(1,a+n/2,b+sum((y-x)^2)/2)
   W1 = 1/rgamma(1,c+(n-1)/2,d+sum(diff(x)^2)/2)
   draws = rbind(draws,c(V1,W1,x)) }
all_draws = draws[,1:2]
q025 = function(x){quantile(x,0.025)}
q975 = function(x){quantile(x,0.975)}
draws = draws[(burn+1):(niter),]
xs = draws[,3:(n+2)]
lx = apply(xs,2,q025)
mx = apply(xs,2,mean)
ux = apply(xs,2,q975)
## plot of the data
par(mfrow=c(2,2), mgp=c(1.6,.6,0), mar=c(3,3.2,1,1))
ts.plot(ts(x), ts(y), ylab='', col=c(1,8), lwd=2)
grid()
points(y)
legend(0, 11, legend=c("x(t)","y(t)"), lty=1, col=c(1,8), lwd=2, bty="n",
        pch=c(-1,1))
contour(Vs, Ws, exp(likes), xlab=expression(sigma[v]^2),
         ylab=expression(sigma[w]^2), drawlabels=FALSE, ylim=c(0,1.2))
grid()
points(draws[,1:2], pch=16, col=rgb(.9,0,0,0.3), cex=.7)
hist(draws[,1], ylab="Density",main="", xlab=expression(sigma[v]^2))
box()
grid()
abline(v=mean(draws[,1]), col=3, lwd=3)
hist(draws[,2],main="", ylab="Density", xlab=expression(sigma[w]^2))
box()
grid()
abline(v=mean(draws[,2]), col=3, lwd=3)

Figura VI.20 Acima: Estados gerados, \(X_t\) e dados \(Y_t\). Contornos da verossimilhança (linha sólida) dos dados e valores a posteriori amostrados como pontos. Abaixo: marginais amostrais a posteriori e médias a posteriori (linhas verticais) de cada componente de variância. Os verdadeiros valores são \(\sigma_{_\nu}^2 = 1\) e \(\sigma_{_W}^2 =0.5\).

A Figura VI.21 compara o alisamento atual \(X_t^n\) com a média a posteriori dos valores suavizados amostrados. Além disso, um intervalo de 95% de confiabiliade é exibido como uma área preenchida.

## plot states
par(mfrow=c(1,1), mgp=c(1.6,.6,0), mar=c(2,1,.5,0)+.5)
plot(ts(mx), ylab='', type='n', ylim=c(min(y),max(y)))
grid(lty=2); points(y)
lines(xsmooth, lwd=4, col=rgb(1,0,1,alpha=.4))
lines(mx, col= 4)
xx=c(1:100, 100:1)
yy=c(lx, rev(ux))
polygon(xx, yy, border=NA, col= gray(.6,alpha=.2))
lines(y, col=gray(.4))
legend('topleft', c('true smoother', 'data', 'posterior mean', '95% of draws'), lty=1, 
        lwd=c(3,1,1,10), pch=c(-1,1,-1,-1), col=c(6, gray(.4) ,4, gray(.6, alpha=.5)), bg='white' )

Figura VI.21 O verdadeiro alisamento \(X_t^n\), os dados \(Y_t\) e a média a posteriori dos valores amostrados alisados; a área preenchida apresenta o intervalo de confiança entre os precentis 2.5% a 97.5%.


A seguir, consideramos um modelo mais complicado.


Exemplo VI.27. Modelo estrutural.


Considere a série de ganhos trimestrais por ação da Johnson & Johnson que foi discutida no Exemplo VI.10. Lembre-se de que o modelo foi \[\begin{array}{rcl} Y_t & = & \begin{pmatrix} 1 & 1 & 0 & 0 \end{pmatrix} X_t+\nu_t, \\ X_t & = & \begin{pmatrix} T_t \\ S_t \\ S_{t-1} \\ S_{t-2} \end{pmatrix} \, = \, \begin{pmatrix} \phi & 0 & 0 & 0 \\ 0 & -1 & -1 & -1 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} T_{t-1} \\ S_{t-1} \\ S_{t-1} \\ S_{t-3} \end{pmatrix} \, + \, \begin{pmatrix} W_{t1} \\ W_{t2} \\ 0 \\ 0 \end{pmatrix}, \end{array}\]

onde \(R=\sigma_{_\nu}^2\) e \[\begin{equation*} Q \, = \, \begin{pmatrix} \sigma_{_{W,11}}^2 & 0 & 0 & 0 \\ 0 & \sigma_{_{W,22}}^2 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}\cdot \end{equation*}\]

Os parâmetros a serem estimados são o parâmetro de transição associado à taxa de crescimento \(\phi> 1\), a variância do ruído observado \(\sigma_{_\nu}^2\) e as variâncias do ruído de estado associados à tendência e às componentes sazonais \(\sigma_{_{W,11}}^2\) e \(\sigma_{_{W,22}}^2\), respectivamente.

Nesse caso, a amostragem de \(p(X_{0:n} \, | \, \Theta,Y_{1:n})\) segue diretamente das expressões apresentadas anteriormente. A seguir, discutimos como amostrar de \(p(\Theta \, | \, X_{0:n},Y_{1:n})\). Para o parâmetro de transição, escrevemos \(\phi = 1 +\beta\), onde \(0 <\beta < 1\); lembre-se que no Exemplo VI.10, \(\phi\) foi estimado em 1.035, o que indicava uma taxa de crescimento \(\beta\) de 3.5%. Observe que a componente de tendência pode ser reescrito como \[\begin{equation*} \nabla T_t \, = \, T_t - T_{t-1} \, = \, \beta T_{t-1}+W_{t1}\cdot \end{equation*}\] Conseqüentemente, condicionado aos estados, o parâmetro \(\beta\) é a inclinação na regressão linear pela origem de \(\nabla T_t\) em \(T_t\), para \(t = 1,\cdots,n\) e \(W_{t1}\) é o erro. Como é típico, cosideramos a distribuição Normal - Gamma Inversa (IG) como a priori de \(\beta,\sigma_{_{W,11}}^2\), isto é,

library(astsa); library(plyr) # used to view progress (install it if you don't have it)
y = jj
### setup - model and initial parameters
set.seed(90210)
n = length(y)
F = c(1,1,0,0) # this is A
G = diag(0,4) # G is Phi
G[1,1] = 1.03
G[2,] = c(0,-1,-1,-1); G[3,]=c(0,1,0,0); G[4,]=c(0,0,1,0)
a1 = rbind(.7,0,0,0) # this is mu0
R1 = diag(.04,4) # this is Sigma0
V = .1
W11 = .1
W22 = .1
##-- FFBS --##
ffbs = function(y,F,G,V,W11,W22,a1,R1){
   n = length(y)
   Ws = diag(c(W11,W22,1,1)) # this is Q with 1s as a device only
   iW = diag(1/diag(Ws),4)
   a = matrix(0,n,4) # this is m_t
   R = array(0,c(n,4,4)) # this is V_t
   m = matrix(0,n,4)
   C = array(0,c(n,4,4))
   a[1,] = a1[,1]
   R[1,,] = R1
   f = t(F)%*%a[1,]
   Q = t(F)%*%R[1,,]%*%F + V
   A = R[1,,]%*%F/Q[1,1]
   m[1,] = a[1,]+A%*%(y[1]-f)
   C[1,,] = R[1,,]-A%*%t(A)*Q[1,1]
   for (t in 2:n){
     a[t,] = G%*%m[t-1,]
     R[t,,] = G%*%C[t-1,,]%*%t(G) + Ws
     f = t(F)%*%a[t,]
     Q = t(F)%*%R[t,,]%*%F + V
     A = R[t,,]%*%F/Q[1,1]
     m[t,] = a[t,] + A%*%(y[t]-f)
     C[t,,] = R[t,,] - A%*%t(A)*Q[1,1] }
   xb = matrix(0,n,4)
   xb[n,] = m[n,] + t(chol(C[n,,]))%*%rnorm(4)
   for (t in (n-1):1){
     iC = solve(C[t,,])
     CCC = solve(t(G)%*%iW%*%G + iC)
     mmm = CCC%*%(t(G)%*%iW%*%xb[t+1,] + iC%*%m[t,])
     xb[t,] = mmm + t(chol(CCC))%*%rnorm(4) }
   return(xb) }
##-- Prior hyperparameters --##
# b0 = 0 # mean for beta = phi -1
# B0 = Inf # var for beta (non-informative => use OLS for sampling beta)
n0 = 10 # use same for all- the prior is 1/Gamma(n0/2, n0*s20_/2)
s20v = .001 # for V
s20w =.05 # for Ws
##-- MCMC scheme --##
set.seed(90210)
burnin = 100
step = 10
M = 1000
niter = burnin+step*M
pars = matrix(0,niter,4)
xbs = array(0,c(niter,n,4))
pr <- progress_text() # displays progress
pr$init(niter)
## 
  |                                                                            
  |                                                                      |   0%
for (iter in 1:niter){
   xb = ffbs(y,F,G,V,W11,W22,a1,R1)
   u = xb[,1]
   yu = diff(u); xu = u[-n] # for phihat and se(phihat)
   regu = lm(yu~0+xu) # est of beta = phi-1
   phies = as.vector(coef(summary(regu)))[1:2] + c(1,0) # phi estimate and SE
   dft = df.residual(regu)
   G[1,1] = phies[1] + rt(1,dft)*phies[2] # use a t
   V = 1/rgamma(1, (n0+n)/2, (n0*s20v/2) + sum((y-xb[,1]-xb[,2])^2)/2)
   W11 = 1/rgamma(1, (n0+n-1)/2, (n0*s20w/2) +
                    sum((xb[-1,1]-phies[1]*xb[-n,1])^2)/2)
   W22 = 1/rgamma(1, (n0+ n-3)/2, (n0*s20w/2) + sum((xb[4:n,2] +
                                                       xb[3:(n-1),2]+ xb[2:(n-2),2] +xb[1:(n-3),2])^2)/2)
   xbs[iter,,] = xb
   pars[iter,] = c(G[1,1], sqrt(V), sqrt(W11), sqrt(W22))
   }
# Plot results
ind = seq(burnin+1,niter,by=step)
names= c(expression(phi), expression(sigma[v]), expression(sigma[w~11]),
          expression(sigma[w~22]))
# dev.new(height=5)
#par(mfcol=c(3,4), mar=c(2,2,.25,0)+.75, mgp=c(1.6,.6,0), oma=c(0,0,1,0))
par(mfrow=c(3,4), mar=c(2,2,.25,0)+.75, mgp=c(1.6,.6,0), oma=c(0,0,1,0))
for (i in 1:4){
   plot.ts(pars[ind,i],xlab="iterations", ylab="trace", main="")
   mtext(names[i], side=3, line=.5, cex=1) }
for (i in 1:4) acf(pars[ind,i],main="", lag.max=25, xlim=c(1,25), ylim=c(-.4,.4))
for (i in 1:4) hist(pars[ind,i],main="",xlab="")
for (i in 1:4) abline(v=mean(pars[ind,i]), lwd=2, col=3)

Figura VI.22 Resultados da estimação dos parâmetros. A linha superior exibe os traços de 1000 realizações após o treino. A linha do meio exibe o ACF das realizações. As a posteriori amostrais sãdo exibidos na última linha, a média é marcada por uma linha vertical sólida.

par(mfrow=c(2,1), mar=c(2,2,0,0)+.7, mgp=c(1.6,.6,0))
mxb = cbind(apply(xbs[ind,,1],2,mean), apply(xbs[,,2],2,mean))
lxb = cbind(apply(xbs[ind,,1],2,quantile,0.005),
             apply(xbs[ind,,2],2,quantile,0.005))
uxb = cbind(apply(xbs[ind,,1],2,quantile,0.995),
             apply(xbs[ind,,2],2,quantile,0.995))
mxb = ts(cbind(mxb,rowSums(mxb)), start = tsp(jj)[1], freq=4)
lxb = ts(cbind(lxb,rowSums(lxb)), start = tsp(jj)[1], freq=4)
uxb = ts(cbind(uxb,rowSums(uxb)), start = tsp(jj)[1], freq=4)
names=c('Trend', 'Season', 'Trend + Season')
L = min(lxb[,1])-.01; U = max(uxb[,1]) +.01
plot(mxb[,1], ylab=names[1], ylim=c(L,U), type='n')
grid(lty=2); lines(mxb[,1])
xx=c(time(jj), rev(time(jj)))
yy=c(lxb[,1], rev(uxb[,1]))
polygon(xx, yy, border=NA, col=gray(.4, alpha = .2))
L = min(lxb[,3])-.01; U = max(uxb[,3]) +.01
plot(mxb[,3], ylab=names[3], ylim=c(L,U), type='n')
grid(lty=2); lines(mxb[,3])
xx=c(time(jj), rev(time(jj)))
yy=c(lxb[,3], rev(uxb[,3]))
polygon(xx, yy, border=NA, col=gray(.4, alpha = .2)) 

Figura VI.23 Estimativas do alisamento de tendência \((T_t)\) e tendência mais sazonalidade \((T_t + S_t)\) junto com intervalos de 99% de credibilidade correspondentes.



VI.13 Exercícios


  1. Considere um processo de sistema dado por \[\begin{equation*} X_t \, = \, -0.9 X_{t-2}+W_t, \qquad t=1,2,\cdots,n, \end{equation*}\] onde \(X_0\sim N(0,\sigma_0^2)\), \(X_{t-1}\sim N(0,\sigma_1^2)\) e \(W_t\) é um ruído branco Gaussiano com variância \(\sigma_{_W}^2\). O processo do sistema é observado com ruído, digamos, \[\begin{equation*} Y_t \, = \, X_t+\nu_t, \end{equation*}\] onde \(\nu_t\) é um ruído Gaussiano com variância \(\sigma_{_\nu}^2\). Além disso, suponha \(X_0\), \(X_{-1}\),\(\{W_t\}\) e \(\{\nu_t\}\) independentes.

    1. Escreva o sistema e as equações de observação na forma de um modelo de espaço de estados.

    2. Encontre os valores de \(\sigma_0^2\) e \(\sigma_1^2\) que tornam as observações \(Y_t\), um processo estacionário.

    3. Gere \(n = 100\) observações com \(\sigma_{_W}^2=1\), \(\sigma_{_\nu}^2=1\) e usando os valores de \(\sigma_0^2\) e \(\sigma_1^2\) encontrados em (b). Faça um gráfico de tempo de \(X_t\) e de \(Y_t\) e compare os dois processos. Além disso, compare os ACF e PACF amostrais de \(X_t\) e de \(Y_t\).

    4. Repita (c), mas com \(\sigma_{_\nu}=10\).

  2. Considere o modelo de espaço de estados apresentado no Exemplo VI.3. Seja \[\begin{equation*} X_t^{t-1} \, = \, \mbox{E}(X_t \, | \, Y_{t-1},\cdots,Y_1) \end{equation*}\] e seja \[\begin{equation*} P_t^{t-1} \, = \, \mbox{E}\big(X_t-X_t^{t-1}\big)^2\cdot \end{equation*}\] A sequência de inovações ou resíduos são \(\epsilon_t=Y_t-Y_t^{t-1}\), onde \(Y_t^{t-1} \, = \, \mbox{E}(Y_t \, | \, Y_{t-1},\cdots,Y_1)\). Encontre \(\mbox{Cov}(\epsilon_s,\epsilon_t)\), em termos de \(X_t^{t-1}\) e \(P_t^{t-1}\) para (i) \(s\neq t\) e (ii) \(s=t\).

  3. Simule \(n = 100\) observações do seguinte modelo de espaço de estados: \[\begin{equation*} X_t \, = \, 0.8 X_{t-1}+W_t, \qquad Y_t \, = \, X_t+\nu_t, \end{equation*}\] onde \(X_0\sim N(0,2.78)\), \(W_{t}\sim N(0,1)\) independentes identicamente distribuídos e \(\nu_t\sim N(0,1)\) são também independentes identicamente distribuídos e todos mutuamente independentes. Calcule e plote os dados \(Y_t\), os preditores de um passo à frente \(Y_t^{t-1}\) junto com a média da raiz quadrada dos erros de predição, \[\begin{equation*} \mbox{E}^{1/2}\big(Y_t-Y_t^{t-1}\big)^2, \end{equation*}\] utilizando o Exemplo VI.5 como guia.

  4. Suponha o vetor \(Z=(X^\top,Y^\top)^\top\), onde \(X\) é de dimensão \(p\times 1\) e \(Y\) de dimensão \(q\times 1\) com distirbuição conjunta de médias \(\mu_{_X}\) e \(\mu_{_Y}\) e matriz de covariâncias \[\begin{equation*} \mbox{Cov}(Z) \, = \, \begin{pmatrix} \Sigma_{_{XX}} & \Sigma_{_{XY}} \\ \Sigma_{_{YX}} & \Sigma_{_{YY}} \end{pmatrix}\cdot \end{equation*}\] Considere a projeção de \(X\) em \(\mathcal{M}=\overline{\mbox{sp}}\{1,Y\}\), digamos \(\widehat{X}=b+BY\).

    1. Mostrar que as condições de ortogonalidade podem ser escritas como

      \[\begin{array}{rcl} \mbox{E}(X-b-BY) & = & 0,\\ \mbox{E}\big( (X-b-BY)Y^\top\big) & = & 0, \end{array}\]

      levando às soluções \[\begin{equation*} \widehat{b} \, = \, \mu_{_X}-\widehat{B}\mu_{_Y} \qquad \mbox{e} \qquad \widehat{B} \, = \, \Sigma_{_{XY}}\Sigma_{_{YY}}^{-1}\cdot \end{equation*}\]

    2. Prove que a matriz de erro quadrático médio é \[\begin{equation*} \mbox{MSE} \, = \, \mbox{E}\big( (X-b-BY)X^\top\big) \, = \, \Sigma_{_{XX}}-\Sigma_{_{XY}}\Sigma_{_{YY}}^{-1}\Sigma_{_{YX}}\cdot \end{equation*}\]

    3. Como esses resultados podem ser usados para justificar a afirmação de que, na ausência de normalidade, o Teorema VI.1 produz a melhor estimativa linear do estado \(X_t\) dado os dados \(Y_t\), a saber, \(X_t^t\) e seu \(\mbox{MSE}\) correspondente, a saber, \(P_t^t\)?

  5. Teorema da Projeção Derivação do Teorema VI.2. Ao longo deste problema, usamos a notação do Teorema VI.2 e do Teorema da Projeção dado no Apêndice B, onde \(\mathcal{H}\) é \(\mathcal{L}^2\). Se \[\begin{equation*} \mathcal{L}_{k+1} \, = \, \overline{\mbox{sp}}\{Y_1,\cdots,Y_{k+1}\} \end{equation*}\] e \[\begin{equation*} \mathcal{V}_{k+1} \, = \, \overline{\mbox{sp}}\{Y_{k+1}-Y_{k+1}^k\}, \end{equation*}\] para \(k = 0,1,\cdots,n-1\), onde \(Y_{k+1}^k\) é a projeção de \(Y_{k+1}\) em \(\mathcal{L}_k\), então, \(\mathcal{L}_{k+1} = \mathcal{L}_k\oplus; \mathcal{V}_{k+1}\). Assumimos \(P_0^0> 0\) e \(R> 0\).

    1. Mostrar que a projeção de \(X_k\) em \(\mathcal{L}_{k+1}\), isto é, \(X_k^{k+1}\) é dada por \[\begin{equation*} X_k^{k+1} \, = \, X_k^k+H_{k+1}\big(Y_{k+1}-Y_{k+1}^k\big), \end{equation*}\] onde \(H_{k+1}\) pode ser determinado pela propriedade de ortogonalidade \[\begin{equation*} \mbox{E}\left(\Big(X_k-H_{k+1} \big(Y_{k+1}-Y_{k+1}^k\big)\Big)\Big(Y_{k+1}-Y_{k+1}^k \Big)^\top\right) \, = \, 0\cdot \end{equation*}\] Prove que \[\begin{equation*} H_{k+1} \, = \, P_k^k\Phi^\top A_{k+1}^\top \big(A_{k+1}P_k^{k+1}A_{k+1}^\top + R \big)^{-1}\cdot \end{equation*}\]

    2. Defina \(J_k = P_k^k \Phi^\top {P_{k+1}^k}^{-1}\) e mostre que \[\begin{equation*} X_k^{k+1} \, = \, X_k^k +J_k \big( X_{k+1}^{k+1}-X_{k+1}^k\big)\cdot \end{equation*}\]

    3. Repetindo o processo, prove que \[\begin{equation*} X_k^{k+2} \, = \, X_k^k+J_k \big( X_{k+1}^{k+1}-X_{k+1}^k\big) + H_{k+2} \big( Y_{k+2}-Y_{k+2}^{k+1}\big), \end{equation*}\] resolvendo para \(H_{k+2}\). Simplifique e mostre que \[\begin{equation*} X_k^{k+2} \, = \, X_k^k +J_k\big(X_{k+1}^{k+2}-X_{k+1}^k \big)\cdot \end{equation*}\]

    4. Usando indução, conclua \[\begin{equation*} X_k^n \, = \, X_k^k +J_k \big( X_{k+1}^n-X_{k+1}^k\big), \end{equation*}\] que produz o alisamento com \(k=t-1\)

  6. Considere o modelo univariado de espaço de estados dado pelas condições de estado \(X_0 = W_0\), \(X_t = X_{t-1} + W_t\) e observações \(Y_t = X_t + \nu_t\), \(t = 1,2,\cdots,\), onde \(W_t\) e \(\nu_t\) são processos de ruído branco Gaussianos independentes, com \(\mbox{Var}(W_t) = \sigma_{_W}^2\) e \(\mbox{Var}(\nu_t) = \sigma_{_\nu}^2\).

    1. Mostre que \(Y_t\) segue um modelo IMA(1,1), ou seja, \(\nabla Y_t\) segue um modelo MA(1).

    2. Ajuste o modelo especificado na parte (a) ao logaritmo da série das variedades glaciais e compare os resultados com os apresentados no Exemplo III.33.

  7. Considere o modelo \[\begin{equation*} Y_t \, = \, X_t+\nu_t, \end{equation*}\] onde \(\nu_t\) é um ruído branco Gaussiano com variância \(\sigma_{_\nu}^2\), \(X_t\) são variáveis aleatórias Gaussianas independentes com média zero e \(\mbox{Var}(X_t) = r_t\sigma_{_X}^2\), com \(X_t\) independente de \(\nu_t\) e \(r_1,\cdots,r_n\) são constantes conhecidas. Mostre que a aplicação do algoritmo EM ao problema de estimar \(\sigma_{_X}^2\) e \(\sigma_{_\nu}^2\) leva às atualizações \[\begin{equation*} \widehat{\sigma}_{_X}^2 \, = \, \frac{1}{n}\sum_{t=1}^n \dfrac{\sigma_t^2+\mu_t^2}{r_t} \qquad \mbox{e} \qquad \widehat{\sigma}_{_\nu}^2 \, = \, \frac{1}{n}\sum_{t=1}^n \big((Y_t-\mu_t)^2+\sigma_t^2\big), \end{equation*}\] onde, com base nas estimativas atuais \[\begin{equation*} \mu_t \, = \, \dfrac{r_t\widetilde{\sigma}_{_X}^2}{r_t\widetilde{\sigma}_{_X}^2+\widetilde{\sigma}_{_\nu}^2}Y_t \qquad \mbox{e} \qquad \sigma_t^2 \, = \, \dfrac{r_t\widetilde{\sigma}_{_X}^2\widetilde{\sigma}_{_\nu}^2}{r_t\widetilde{\sigma}_{_X}^2+\widetilde{\sigma}_{_\nu}^2}\cdot \end{equation*}\]

  8. Para explorar a estabilidade do filtro, considere um modelo de espaço de estados univariado. Ou seja, para \(t = 1,2,\cdots,\), as observações são \(Y_t = X_t + \nu_t\) e a equação de estado é \(X_t = \phi X_{t-1} + W_t\), onde \(\sigma_{_W}=\sigma_{_\nu} = 1\) e \(|\phi|<1\). O estado inicial \(X_0\), tem média zero e variância um.

    1. Mostre a recursão para \(P_t^{t-1}\) no Teorema VI.1 em termos de \(P_{t-1}^{t-2}\).

    2. Use o resultado de (a) para verificar se \(P_t^{t-1}\) se aproxima de um limite \(P\) quando \(t\to\infty\), que é a solução positiva de \(P^2-\phi^2 P- 1 = 0\).

    3. Com \(K = \lim_{t\to\infty} K_t\) conforme dado no Teorema VI.1, mostre que \(|1 - K| <1\).

    4. Mostre, em estado estacionário, o preditor de um passo à frente, \[\begin{equation*} Y_{n+1}^n \, = \, \mbox{E}\big(Y_{n+1} \, | \, Y_n,Y_{n-1},\cdots \big), \end{equation*}\] de uma observação futura satisfaz \[\begin{equation*} Y_{n+1}^n \, = \, \sum_{j=0}^\infty \phi^j K(1-K)^{j-1} Y_{n+1-j}\cdot \end{equation*}\]

  9. Nesta seção discutimos que é possível obter uma recursão para o vetor gradiente \(-\partial \ln\big(L_Y(\Theta)\big)/\partial \Theta\). Assuma que o modelo é dado pela Definição VI.1 com as matrizes \(\Upsilon = \Gamma =0\) e \(A_t\) é uma matriz de pranejamento conhecida que não depende de \(\Theta\), caso em que o Teorema VI.1 se aplica. Para o vetor gradiente, mostre que \[\begin{equation*} \dfrac{\partial \ln\big(L_Y(\Theta) \big)}{\partial\Theta_i} \, = \, \sum_{t=1}^n \left( \epsilon_t^\top \Sigma_t^{-1} \dfrac{\partial\epsilon_t}{\partial\Theta_i}-\dfrac{1}{2} \epsilon_t^\top \Sigma_t^{-1} \dfrac{\partial\Sigma_t}{\partial\Theta_i}\Sigma_t^{-1}\epsilon_t +\dfrac{1}{2}\mbox{tr}\Big(\Sigma_t^{-1}\dfrac{\partial \Sigma_t}{\partial\Theta_i} \Big)\right), \end{equation*}\] onde a dependência dos valores de inovação em \(\Theta\) é compreendida. Além disso, com a definição geral \(\partial_i g = \partial g(\Theta)/\partial\Theta_i\), mostrar as seguintes recursões, para \(t = 2,\cdots,n\) se aplicam:

    1. \(\partial_i \epsilon_t = -A_t\partial_i X_t^{t-1}\),

    2. \(\partial_i X_t^{t-1} = \partial_i \Phi X_{t-1}^{t-2}+\Phi\partial_i X_{t-1}^{t-2}+\partial_i K_{t-1}\epsilon_{t-1}+K_{t-1}\partial_i \epsilon_{t-1}\),

    3. \(\partial_i \Sigma_t = A_t \partial_i P_t^{t-1} A_t^\top+\partial_i R\),

    4. \(\partial_i K_t=\Big(\partial_i \Phi P_t^{t-1}A_t^\top + \Phi \partial_i P_t^{t-1}A_t^\top -K_t \partial_i \Sigma_i\Big)\Sigma_t^{-1}\),

    5. \[\begin{array}{rcl} \partial_i P_{t}^{t-1} & = & \partial_i\Phi P_{t-1}^{t-2}\Phi^\top+ \Phi\partial_i P_{t-1}^{t-2}\Phi^\top+\Phi P_{t-1}^{t-2}\partial_i \Phi^\top +\partial_i Q -\partial_i K_{t-1}\Sigma_t K_{t-1}^\top \\ & & \qquad -K_{t-1}\partial_i \Sigma_t K_{t-1}^\top -K_{t-1}\Sigma_t \partial_i K_{t-1}^\top, \end{array}\]

      utilizando o fato que \(P_t^{t-1}=\Phi P_{t-1}^{t-2}\Phi^\top +Q-K_{t-1}\Sigma_t K_{t-1}^\top\).

  10. Continuando com o problema anterior, considere a avaliação da matriz Hessiana e a avaliação numérica da matriz de variâncias e covariâncias assintótica dos estimadores dos parâmetros. A matriz de informação satisfaz \[\begin{equation*} \mbox{E}\left( -\dfrac{\partial^2 \ln\big(L_Y(\Theta)\big)}{\partial\Theta\partial\Theta^\top}\right) \, = \, \mbox{E}\left( \left( \dfrac{\partial \ln\big(L_Y(\Theta)\big)}{\partial\Theta}\right)\left( \dfrac{\partial \ln\big(L_Y(\Theta)\big)}{\partial\Theta}\right)^\top\right), \end{equation*}\] ver Anderson (1984, Seção 4.4), por exemplo. Mostre que o \((i,j)\)-ésimo elemento da matriz de informação, digamos \[\begin{equation*} \mathcal{I}_{ij}(\Theta) \, = \, \mbox{E}\left( -\dfrac{\partial^2 \ln\big(L_Y(\Theta)\big)}{\partial\Theta_i\partial\Theta_j}\right), \end{equation*}\] é \[\begin{equation*} \mathcal{I}_{ij}(\Theta) \, = \, \sum_{t=1}^n \mbox{E}\left( \partial_i \epsilon_t^\top \Sigma_t^{-1}\partial_j \epsilon_t+\frac{1}{2} \mbox{tr}\left(\Sigma_t^{-1}\partial_i\Sigma_t\Sigma_t^{-1}\partial_j\Sigma_t \right)+\frac{1}{4}\mbox{tr}\left(\Sigma_t^{-1}\partial_i\Sigma_t \right) \mbox{tr}\left(\Sigma_t^{-1}\partial_j \Sigma_t \right)\right)\cdot \end{equation*}\] Consequentemente, uma matriz Hessiana aproximada pode ser obtida a partir da amostra descartando a esperança \(\mbox{E}\), no resultado acima são usandos apenas as recursões necessárias para calcular o vetor gradiente.

  11. Como um exemplo da forma como o modelo de espaço de estados lida com o problema de dados ausentes, suponha que o processo autoregressivo de primeira ordem \[\begin{equation*} X_t \, = \, \phi X_{t-1}+W_t, \qquad t=1,2,\cdots,n, \end{equation*}\] tem uma observação ausente em \(t = m\), levando às observações \(Y_t=A_t X_t\), onde \(A_t=1\) para todo \(t\), exceto \(t = m\), em que \(A_t = 0\). Assuma \(X_0 = 0\) com variância \(\sigma_{_W}^2/(1-\phi^2)\); onde a variância de \(W_t\) é \(\sigma_{_W}^2\). Mostrar que os estimadores alisados de Kalman neste caso são \[\begin{equation*} X_t^n \, = \, \left\{ \begin{array}{ccl} \phi Y_1, & \mbox{quando} & t=0, \\ \dfrac{\phi}{1+\phi^2}\big(Y_{m-1}+Y_{m+1} \big), & \mbox{quando} & t=m, \\ Y, & \mbox{quando} & t\neq 0,m, \end{array}\right. \end{equation*}\] com covariância média quadrática da forma \[\begin{equation*} P_t^n \, = \, \left\{ \begin{array}{ccl} \sigma_{_W}^2, & \mbox{quando} & t=0, \\ \dfrac{\sigma_{_W}^2}{1+\phi^2}, & \mbox{quando} & t=m, \\ 0, & \mbox{quando} & t\neq 0,m\cdot \end{array}\right. \end{equation*}\]

  12. O conjunto de dados ar1miss (pacote astsa) contém \(n = 100\) observações geradas a partir de um processo AR(1), \(X_t = \phi X_{t-1}+W_t\), com \(\phi=0.9\) e \(\sigma_{_W} = 1\), onde 10% dos dados foram excluídos aleatoriamente (substituídos por NA). Use os resultados do Exercício 1 para estimar os parâmetros do modelo \(\phi\) e \(\sigma_{_W}\), usando o algoritmo EM e, a seguir, estime os valores ausentes.

  13. Refaça o Exemplo VI.10, dos lucros trimestrais por ação registrados da Johnson & Johnson.

  14. Ajuste um modelo estrutural para o desemprego trimestral da seguinte maneira. Use os dados em unemp, que são mensais. A série pode ser feita trimestralmente agregando e calculando a média:

y = aggregate(unemp, nfrequency = 4, FUN = mean)

de modo que \(y\) seja o desemprego médio trimestral. Use o Exemplo VI.10 como guia.

    1. Ajuste um modelo AR(2) para a série de recrutamento \(R_t\) em rec e considere um gráfico de latência ou lag-plot dos resíduos do ajuste versus a série SOI \(S_t\) em soi, em vários lag ou atrasos \(S_{t-h}\), para \(h = 0,1,\cdots\). Use o gráfico de latência ou lag-plot para argumentar que \(S_{t-5}\) é razoável para incluir como uma variável exôgena.

    2. Ajuste um modelo ARX(2) para \(R_t\) usando \(S_{t-5}\) como uma variável exôgena e comente os resultados; incluir um exame das inovações.

  1. Use o Teorema VI.6 para completar os exercícios a seguir.

    1. Escreva o modelo AR(1) univariado \(Y_t = \phi Y_{t-1} +\nu_t\), na forma de espaço de estados. Verifique se sua resposta é de fato um \(AR(1)\).

    2. Repita (a) para um modelo MA(1) \(Y_t=\nu_t+\theta \nu_{t-1}\).

    3. Escreva um modelo IMA(1,1) \(Y_t = Y_{t-1}+\nu_t + \theta \nu_{t-1}\), na forma de espaço de estados.

  2. Verifique o Teorema VI.5.

  3. Verifique o Teorema VI.6.

  4. Repita a análise bootstrap do Exemplo VI.13 em todos os dados do título do Tesouro de três meses e o conjunto de dados da taxa de inflação com 110 observações. As conclusões do Exemplo VI.13, que a dinâmica dos dados são mais bem descritas em termos de uma regressão fixa em vez de estocástica, ainda se mantêm?

  5. Seja \(Y_t\) a série de temperatura global globtemp mostrada na Figura I.2.

    1. Ajuste uma spline de suavização usando GCV (o padrão) para \(Y_t\) e mostre o resultado sobreposto aos dados. Repita o ajuste usando spar = 0.7; o método GCV produz aproximadamente spar = 0.5. O Exemplo II.14 pode ajudar. Também consulte o arquivo de ajuda R ?smooth.spline.

    2. Escreva o modelo \(Y_t = X_t + \nu_t\) com \(\nabla^2 X_t = W_t\), na forma de espaço de estados. Ajuste este modelo de espaço de estados a \(Y_t\) e exiba num gráfico de tempo o alisamento estimado \(\widehat{X}_t^n\) e os limites de erro correspondentes, \(\widehat{X}_t^n\pm 2\sqrt{\widehat{P}_t^n}\) sobrepostos aos dados.

    3. Sobreponha todos os ajustes das partes (a) e (b) incluindo os limites de erro nos dados e compare e contraste brevemente os resultados.

  6. Verifique que no Exemplo VI.15 se satisfazem os seguintes resultados:

    1. \(\mbox{E}(Y_t) \, = \, \pi_1\lambda_1 +\pi_2\lambda_2\),

    2. \(\mbox{Var}(Y_t) \, = \, \mbox{E}(Y_t)+\pi_1\pi_2(\lambda_2-\lambda_1)^2 \geq \mbox{E}(Y_t)\), e

    3. \(\gamma_{_Y}(h) \, = \, \sum_{i=1}^2\sum_{j=1}^2 \pi_i(\pi_{ij}^h-\pi_j)\lambda_i\lambda_j \, = \, \pi_1\pi_2(\lambda_2-\lambda_1)^2(1-\pi_{12}-\pi_{21})^h\).

  7. Verifique que no Teorema VI.8 se verifica que: \(\pi_j(t \, | \, n) = \displaystyle \dfrac{\pi_j(t \, | \, t)\varphi_j(t)}{\displaystyle \sum_{i=1}^m \pi_i (t \, | \, t) \varphi_i(t)}\).

  8. Ajuste um modelo Poisson-HMM ao conjunto de dados da poliomielite do pacote gamlss.data. Os dados são casos de poliomielite relatados nos EUA entre os anos 1970 a 1983. Para começar, instale o pacote e digite:

library(gamlss.data) # lendo o pacote
plot(polio, type='s') # observando os dados


  1. Ajuste um modelo HMM de dois estados aos retornos semanais do S&P 500 que foram analisados no Exemplo VI.17 e compare os resultados.

  2. Ajuste o modelo de comutação descrito no Exemplo VI.20 à taxa de crescimento do PIB. Os dados estão em gnp e, na notação do exemplo, \(Y_t\) é o logaritmo do PIB e \(\nabla Y_t\) é a taxa de crescimento. Use o código do Exemplo VI.22 como guia.

  3. Argumente que um modelo de comutação é razoável para explicar o comportamento do número de manchas solares (veja a Figura IV.22) e então ajuste um modelo de comutação aos dados de manchas solares.

  4. Ajustar um modelo de volatilidade estocástica aos retornos de uma ou mais das quatro séries temporais financeiras disponíveis no pacote de conjuntos de dados R EuStockMarkets.

  5. Ajuste um modelo de volatilidade estocástica aos resíduos dos retornos do PIB (gnp) analisados no Exemplo III.39.

  6. Consideramos o modelo de volatilidade estocástica \(r_t \, = \, \sigma_t \epsilon_t,\) sendo que \(X_t = \log(\sigma_t^2)\), seguindo um processo autoregresivo de primeira ordem, \(X_t = \phi X_{t-1}+W_t\), sendo \(r_t = \beta \exp\big(\frac{1}{2}X_t\big)\epsilon_t\) e onde \(W_t\sim N(0,\sigma_{_W}^2)\) são independentes identicamente distribuídos e \(\epsilon_t\) é o ruído, sendo tembém independentes identicamente distribuídos com momentos finitos. Os processos de erro ou de ruído branco \(W_t\) e \(\epsilon_t\) são considerados mutuamente independentes e \(|\phi| <1\):

    1. Mostre que \(\mbox{E}\big(r_t^{2m}\big) = \beta^{2m}\mbox{E}\big(r_t^{2m}\big)\exp\big(\frac{1}{2}m^2\sigma_{_X}^2\big)\), onde \(\sigma_{_X}^2=\sigma^2/(1-\phi^2)\), para qualquer inteiro \(m\).

    2. Mostre que a curtose de \(r_t\) é dada por \(\kappa_4(r_t) = \kappa_4(\epsilon_t)\exp\big( \sigma_{_X}^2\big)\), onde \(\sigma_{_X}^2\) dada acima é a variância estacionária de \(X_t\).

    3. Mostre que, para qualquer inteiro positivo \(h\), \(\mbox{Var}(X_t+X_{t+h}) \, = \, 2\sigma_{_X}^2(1+\phi^h)\).

    4. Mostrar que \[\begin{equation*} \mbox{Cov}\big(r_t^{2m},r_{t+h}^{2m} \big) \, = \, \beta^{4m}\Big(\mbox{E}\big(\nu_t^{2m}\big)\Big)^2\Big(\exp\big(m^2\sigma_{_X}^2(1+\phi^h)\big)-\exp\big(m^2\sigma_{_X}^2\big)\Big)\cdot \end{equation*}\]

    5. Encontrar que \[\begin{equation*} \mbox{Corr}(r_{t+h}^{2m},r_t^{2m}) \, = \, \dfrac{\exp\big(m^2\sigma_{_X}^2\phi^h\big)-1}{\kappa_{4m}(\epsilon_t)\exp\big(m^2\sigma_{_X}^2\big)-1}\cdot \end{equation*}\]

  7. Verifique as declarações de distribuição feitas no Exemplo VI.25.

  8. Repita o Exemplo VI.27 no logaritmo dos dados da Johnson & Johnson.

  9. Ajuste um modelo AR(1) aos retornos do PIB dos EUA (gnp) usando uma abordagem Bayesiana via MCMC.