Learn R Programming

ElastH (version 0.3.1)

decompor: Estimacao de componentes do Filtro de Kalman

Description

Fun<U+00E7><U+00E3>o principal, usada para calcular as elasticidades dos grupos de receitas, ou, de modo mais gen<U+00E9>rico, decompor por meio de um Filtro de Kalman a s<U+00E9>rie de tempo dependente (y)

Usage

decompor(y, X = NULL, irregular = "S", nivel = "S", inclinacao = "S",
  sazon = "S", regres = "S", comeco = NULL, fim = NULL, freq = NULL,
  ipar = c(-0.5, -1, -1.5, -2, 16), interv.b = TRUE)

Arguments

y

S<U+00E9>rie temporal a ser decomposta.

X

S<U+00E9>rie temporal independente - (Hiatos).

irregular

String definidora do comportamento do disturbio da equa<U+00E7><U+00E3>o principal (Vide details):

  • "S" Vari<U+00E2>ncia definida automaticamente

  • "F" Vari<U+00E2>ncia fixa zero

  • "N" Ignorar Componente (n<U+00E3>o <U+00E9> poss<U+00ED>vel ignorar a equa<U+00E7><U+00E3>o principal)

nivel

String definidora do comportamento do disturbio da equa<U+00E7><U+00E3>o do n<U+00ED>vel. Ver irregular para valores poss<U+00ED>veis.

inclinacao

String definidora do comportamento do disturbio da equa<U+00E7><U+00E3>o do inclinacao. Ver irregular para valores poss<U+00ED>veis.

sazon

String definidora do comportamento do disturbio da equa<U+00E7><U+00E3>o da sazonalidade. Ver irregular para valores poss<U+00ED>veis.

regres

String definidora do comportamento do disturbio da equa<U+00E7><U+00E3>o dos coeficientes. Ver irregular para valores poss<U+00ED>veis.

comeco

Per<U+00ED>odo inicial de estima<U+00E7><U+00E3>o.

fim

Per<U+00ED>odo final de estima<U+00E7><U+00E3>o.

freq

Frequ<U+00EA>ncia da s<U+00E9>rie de tempo. Informar somente se y n<U+00E3>o for uma s<U+00E9>rie de tempo.

ipar

Par<U+00E2>metros iniciais para o processo de otimiza<U+00E7><U+00E3>o. N<U+00E3>o <U+00E9> aconselh<U+00E1>vel modificar os valores padr<U+00F5>es.

interv.b

TRUE (Padr<U+00E3>o) ou FALSE. Define se as interven<U+00E7><U+00F5>es ser<U+00E3>o detectadas automaticamente.

Value

A fun<U+00E7><U+00E3>o retorna uma lista com 15 vari<U+00E1>veis, entre componentes e testes:

  • y: S<U+00E9>rie que foi decomposta.

  • dlm: Estrutura do objeto dlm usado na decomposi<U+00E7><U+00E3>o.

  • f: Lista de resultados do Filtro de Kalman. Ver dlmFilter.

  • s: Lista de resultados do processo de suaviza<U+00E7><U+00E3>o. Ver dlmSmooth.

  • comp: Tabela com os componentes de interesses suavizados (Resultado Principal).

  • interv: tabela listando as interven<U+00E7><U+00F5>es, seu componente. per<U+00ED>odo, valor, desvio padr<U+00E3>o do estimador e o pvalor do teste t.

  • choques: Matriz dos disturbios suavizados. Ver choques.

  • e: S<U+00E9>rie dos erros de proje<U+00E7><U+00E3>o um passo a frente.

  • q: Teste de independ<U+00EA>ncia dos erros de proje<U+00E7><U+00E3>o.

  • q2: Teste de independ<U+00EA>ncia dos erros de proje<U+00E7><U+00E3>o, com o dobro de lags.

  • h: Teste de homocedasticidade dos erros de proje<U+00E7><U+00E3>o.

  • nt: Teste de normalidade dos erros de proje<U+00E7><U+00E3>o.

  • aic: Crit<U+00E9>rio de Akaike.

  • bic: Crit<U+00E9>rio de Bayes.

  • tt: Lista com resultado de testes t para os coeficientes estimados.

Details

O modelo linear din<U+00E2>mico usado neste pacote tem a seguinte estrutura:

$$y_t = \mu_t + \beta_t \cdot{X_t} + \gamma_t + \varepsilon_t$$ $$\mu_t = \mu_{t-1} + \nu_{t-1} + \xi_t$$ $$\nu_t = \nu_{t-1} + \zeta_t$$ $$\gamma_t = \gamma_{1,t} + \gamma_{2,t}$$ $$\gamma_{1,t} = - \gamma_{1,t-2} + \omega_{1,t}$$ $$\gamma_{2,t} = - \gamma_{2,t-1} + \omega_{2,t}$$ $$\beta_t = \beta_{t-1} + \eta_t$$

Onde \(y_t\) <U+00E9> o argumento y, \(X_t\) <U+00E9> o argumento X, e \(\mu_t\), \(\nu_t\), \(\gamma_t\) e \(\beta_t\) s<U+00E3>o os componentes n<U+00E3>o observados estimados pelo Filtro de Kalman, respectivamente, n<U+00ED>vel, inclina<U+00E7><U+00E3>o, sazonalidade e coeficiente(s). Por fim os res<U+00ED>duos seguem as seguintes distribui<U+00E7><U+00F5>es:

$$\varepsilon_t \sim \mathcal{N}(0, \sigma^2_\varepsilon)$$ $$\xi_t \sim \mathcal{N}(0, \sigma^2_\xi)$$ $$\zeta_t \sim \mathcal{N}(0, \sigma^2_\zeta)$$ $$\omega_{1,t} \sim \mathcal{N}(0, 2\sigma^2_\omega)$$ $$\omega_{2,t} \sim \mathcal{N}(0, \sigma^2_\omega)$$ $$\eta_t \sim \mathcal{N}(0, \sigma^2_\eta)$$

Os argumentos irregular, nivel, inclinacao, sazon e regres controlam as vari<U+00E2>ncias dos res<U+00ED>duos. Quando definidos igual a "S" as vari<U+00E2>ncia s<U+00E3>o estimadas por um processo de otimiza<U+00E7><U+00E3>o. Quanto definidos igual a "F", as vari<U+00E2>ncias s<U+00E3>o fixas em 0 (e logo o res<U+00ED>duo <U+00E9> 0 em todo \(t\)), por fim se forem definidos igual a "N" o componente <U+00E9> ignorado, por exemplo se sazon igual a "N" ent<U+00E3>o \(\gamma_t = 0\ \forall t\) e logo n<U+00E3>o <U+00E9> estimado efeitos de sazonalidade.

Note que as equa<U+00E7><U+00F5>es de sazonalidade dependem da frequ<U+00EA>ncia dos dados. Logo, a forma funcional apresentada acima s<U+00F3> funciona para o caso particular em quest<U+00E3>o, com frequ<U+00EA>ncia trimestral.

Note que X pode ser um data.frame, ou seja, um conjunto de vari<U+00E1>veis independentes. Com isso, 2 ou mais coeficientes ser<U+00E3>o estimados, nesse caso \(X\), \(\beta\) e \(\eta\) devem ser tratados como matrix (e n<U+00E3>o um vetor).

Caso interv.b seja definido como FALSE. Ent<U+00E3>o interven<U+00E7><U+00F5>es n<U+00E3>o ser<U+00E3>o calculadas automaticamente, caso se deseje implementer interven<U+00E7><U+00F5>es de modo manual, ent<U+00E3>o os vetores de interven<U+00E7><U+00E3>o devem ser colocados na matrix X.

Examples

Run this code
seriey <- ts(runif(76), start=1997, end=c(2015,4), frequency=4)

 decomposicao <- decompor(seriey)  #Decomposi<U+00E7><U+00E3>o sem vari<U+00E1>vel independente

seriex <- ts(runif(76), start=1997, end=c(2015,4), frequency=4)
 modelo <- decompor(seriey, seriex)  #Decomposi<U+00E7><U+00E3>o e estima<U+00E7><U+00E3>o de coeficente

#Decomposi<U+00E7><U+00E3>o e estima<U+00E7><U+00E3>o com n<U+00ED>vel e inclinacao fixos e sem sazonalidade
 modelo2 <- decompor(seriey, seriex, nivel="F", inclinacao="F", sazon="N") 
#Decomposi<U+00E7><U+00E3>o e estima<U+00E7><U+00E3>o com coeficente constante
 modelo3 <- decompor(seriey, seriex, regres="F") 
#Decomposi<U+00E7><U+00E3>o e estima<U+00E7><U+00E3>o usando apenas um subconjunto dos dados
 modelo4 <- decompor(seriey, seriex, comeco=2000, fim=2010) 
#Decomposi<U+00E7><U+00E3>o e estima<U+00E7><U+00E3>o sem a detec<U+00E7><U+00E3>o de interven<U+00E7><U+00F5>es
 modelo5 <- decompor(seriey, seriex, interv.b=F) 

Run the code above in your browser using DataLab