//styles, look here: https://cdnjs.com/libraries/highlight.js/9.12.0

June 10, 2019

533 palavras 3 mins

Comportamento de Random Walks

Um processo estocástico autoregressivo com \(1\) lag, doravante chamado de AR1, é, no caso simplificado em uma dimensão que eu abordarei aqui, descrito como:

\[y_t = \beta y_{t-1} + \mu_t\] Para algum \(y_o = c\) e, no caso com que lidaremos hoje, \(\beta \in \mathbb{R}\) e \(\mu_t \sim N(0, \sigma^2)\), logo vale que $[_t] = 0 $.

Variância e Esperança do Processo AR1

Esperança

Vamos agora caracterizar o Valor Esperado e a Variância desse processo, assim como caracterizaríamos os dois primeiros momentos centrais de uma distribuição. Note que o operador de Esperança é linear, isso é importante.

\[\mathbb{E} [y_t] = \mathbb{E} [\beta y_{t-1} + \mu_t]\] \[\mathbb{E} [y_t] = \beta\mathbb{E} [ y_{t-1}] + \mathbb{E}[\mu_t]\] \[\mathbb{E} [y_t] = \beta\mathbb{E} [ \beta y_{t-2} + \mu_{t-1}] + 0\] \[\mathbb{E} [y_t] = \beta^2\mathbb{E} [y_{t-2}] + \mathbb{E}[\mu_{t-1}] + 0\]

Acho que o leitor já captou o padrão aqui. Se não, recomendo continuar o processo mais algumas vezes no papel. No final chegaremos em:

\[\mathbb{E} [y_t] = \beta^t y_0\]

Espero que seja claro ao leitor também - ou que a verificação não tome muito tempo - que se \(| \beta | < 1\) então \(\lim_{t \to \infty}\beta^t y_0 = 0\). No entanto o mesmo limite explode para infinito se o parâmetro for maior ou igual a \(1\) em módulo.

Variância

Note que variância de constantes dadas é \(0\) e que variância de combinações lineares de variáveis aleatórias independentes é soma das variâncias de cada variável. Podemos reduzir a variância de \(y_t\) à:

\[\mathbb{V}[y_t] = \mathbb{V} [\sum_{i=1}^t \mu_i] \] \[ \mathbb{V} [\sum_{i=1}^t \mu_i] = \sum_{i=1}^t\mathbb{V}[\mu_i]\] Como \(\mathbb{V}[\mu_i] = \sigma^2\), vale que \(\mathbb{V}[y_t] = t \sigma^2\). Esperamos variância crescente com o tempo, porém que sorteios diferentes do mesmo processo se cancelem perto de zero - ou melhor, que não exista alguma forte de viés para números positivos ou negativos. Será que podemos verificar isso acontecendo?

Simulando

Vamos simular alguns processos random walk:

library(tidyverse)
library(gganimate)

processos = list()
tmax = 10000
inicial = 0
nprocessos = 50
beta = 1
set.seed(1234)

for(i in 1:nprocessos) {
  
  t = seq(1, tmax)
  processo = vector(length = tmax)
  processo[1] = inicial
  
  for(j in 2:tmax) {
  
  choque = rnorm(n = 1)
    
  processo[j] = beta*processo[j-1] + choque
  
  }
  
  dados = tibble(t = t,
                 processo = processo)

  
  processos[[i]] = dados

  
}

processos = do.call(rbind, processos) # agregamos as listas

Vamos entender o que acabamos de produzir. Criamos 50 processos estocásticos com características muito similares. Condição inicial no zero, sujeitos a choques com a mesma distribuição probabilística e com a mesma “inércia”. Valores anteriores são repassados integralmente. Vamos primeiro visualizar um processo sozinho:

processos[1:tmax,] %>%
  ggplot(aes(x = t, y = processo)) +
  geom_point() +
  transition_reveal(t)

processos[1:tmax,] %>%
  ggplot(aes(x = t, y = processo)) +
  geom_line(size = 1.2)

Vamos observar agora o comportamento conjunto dos processos pontualmente em cada instante \(t\).

processos %>%
  ggplot(aes(x = t, y = processo)) +
  geom_point() +
  transition_reveal(t)

processos %>%
  ggplot(aes(x = t, y = processo)) +
  geom_point() 

De fato, parece que conseguimos o

bservar o comportamento previsto na teoria. Em breve revisitarei esse post falando de processos AR1 que regridem assintoticamente a um patamar e mostrar como isso está conectado com o Teorema do Ponto Fixo de Banach - de que já falei aqui no blog.