Diferenças R e EViews nas estimativas de AR (1)


10

O principal problema é: não consigo obter estimativas de parâmetros semelhantes com EViews e R.

Por razões que eu não conheço, preciso estimar parâmetros para determinados dados usando EViews. Isso é feito escolhendo a opção NLS (mínimos quadrados não lineares) e usando a seguinte fórmula:indep_var c dep_var ar(1)

O EViews alega que eles estimam processos lineares de AR (1), como: onde os erros são definidos como: usando um equivalente equação (com algumas substituições algébricas): Além disso, esta discussão sobre nos fóruns do EViews sugere que suas estimativas de NLS são geradas pelo algoritmo de Marquardt.u t u t = ρ u t - 1 + ε Y t = ( 1 - ρ ) α + ρ Y t - 1 + β X t - ρ β X t - 1 + ε t

Yt=α+βXt+ut
ut
ut=ρut1+ε
Yt=(1ρ)α+ρYt1+βXtρβXt1+εt

Agora, a função go-to R para estimar os processos AR (1) é arima. No entanto, existem dois problemas:

  1. as estimativas são estimativas de probabilidade máxima;
  2. a estimativa de interceptação não é realmente a estimativa de interceptação (de acordo com RH Shumway e DS Stoffer).

Portanto, virei para a nlsLMfunção do pacote minpack.lm. Essa função usa o algoritmo de Marquardt para obter estimativas de mínimos quadrados não lineares, que devem produzir os mesmos resultados que a implementação do EViews (ou pelo menos muito similares).

Agora o código. Eu tenho um quadro de dados ( data) com uma variável independente e uma variável dependente, como a gerada pelo seguinte código:

data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))

Para estimar parâmetros na equação que o EViews reivindica para estimar ( terceiro nesta publicação), use os seguintes comandos:

library(minpack.lm)
result <-
nlsLM(dependentB ~ ((1 - theta1) * theta2) + (theta1 * dependentA) +
                    (theta3 * independentB) - (theta1 * theta3 * independentA),
data = list(dependentB = data$dependent[2:48], dependentA = data$dependent[1:47],
   independentB = data$independent[2:48], independentA = data$independent[1:47]),
start = list(theta1 = -10, theta2 = -10, theta3 = -10)
)

Infelizmente, as estimativas produzidas por nlsLMnão são próximas das produzidas pelos EViews. Você tem alguma idéia do que pode estar causando isso? Ou talvez meu código esteja errado?

Por fim, gostaria de dizer que pessoalmente sou um usuário R - é exatamente por isso que estou tentando fazer isso no R, em vez do EViews. Também gostaria de fornecer os dados com os quais estou trabalhando, mas é impossível, pois são dados confidenciais.


4
Bem-vindo ao site, @Fael. +1 para uma pergunta clara. Tomei a liberdade de ajustar um pouco a formatação para torná-la mais limpa. Certifique-se de que ainda diz o que deseja.
gung - Restabelece Monica

Uau, isso foi muito legal da sua parte. Muito obrigado, @gung!
Fael #

2
Você sempre dimensiona / codifica os dados e os publica. uma transformação da forma [(constante-y1) / constante2] fará o truque.
IrishStat

BTW: Parâmetros de processos lineares podem ser estimados através do OLS.
28414 Germaniawerks

Respostas:


1

ρ,β,αXt1

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.