Różnice R i EView oszacowań AR (1)


10

Główny problem to: nie mogę uzyskać podobnych oszacowań parametrów z EViews i R.

Z powodów, których sam nie znam, muszę oszacować parametry dla niektórych danych za pomocą EViews. Odbywa się to poprzez wybranie opcji NLS (nieliniowe najmniejsze kwadraty) i użycie następującej formuły:indep_var c dep_var ar(1)

EViews twierdzi , że szacuje liniowe procesy AR (1), takie jak: gdzie błędy są zdefiniowane jako: przy użyciu równoważnego równanie (z pewnymi podstawieniami algebraicznymi): Ponadto ten wątek na forach EViews sugeruje, że ich oszacowania NLS są generowane przez algorytm Marquardta.

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

Teraz funkcja przejścia do R w celu oszacowania procesów AR (1) jest arima. Istnieją jednak dwa problemy:

  1. szacunki są szacunkami największego prawdopodobieństwa;
  2. oszacowanie przechwytywania nie jest tak naprawdę oszacowaniem przechwytywania (według RH Shumway i DS Stoffer).

Dlatego zwróciłem się do nlsLMfunkcji z pakietu minpack.lm. Ta funkcja wykorzystuje algorytm Marquardta do uzyskania nieliniowych oszacowań metodą najmniejszych kwadratów, które powinny dać takie same wyniki jak implementacja EViews (lub przynajmniej bardzo podobne).

Teraz kod. Mam ramkę danych ( data) z niezależną zmienną i zmienną zależną, taką jak ta wygenerowana przez następujący kod:

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

W celu oszacowania parametrów w zastrzeżeniach EViews równań do szacowania (3 rd jeden na tym stanowisku), to za pomocą następujących poleceń:

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)
)

Niestety dane wyjściowe szacunków nlsLMnie są zbliżone do danych wyjściowych EViews. Czy masz pojęcie, co może być przyczyną? A może mój kod jest nieprawidłowy?

Na koniec chciałbym powiedzieć, że osobiście jestem użytkownikiem R. Właśnie dlatego staram się to robić w R zamiast EView. Chciałbym również podać dane, z którymi pracuję, ale jest to niemożliwe, ponieważ są to dane poufne.


4
Witamy na stronie @Fael. +1 za jasne pytanie. Pozwoliłem sobie na nieznaczne ulepszenie formatowania, aby było czystsze. Upewnij się, że nadal mówi, co chcesz.
gung - Przywróć Monikę

Wow, to było naprawdę miłe z twojej strony. Wielkie dzięki, @gung!
Fael

2
Kamera zawsze skaluje / koduje dane i publikuje je. transformacja postaci [(y-stała1) / stała2] załatwi sprawę.
IrishStat

BTW: Parametry procesów liniowych można oszacować za pomocą OLS.
Germaniawerks

Odpowiedzi:


1

ρ,β,αXt-1

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.