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.
Teraz funkcja przejścia do R w celu oszacowania procesów AR (1) jest arima
. Istnieją jednak dwa problemy:
- szacunki są szacunkami największego prawdopodobieństwa;
- oszacowanie przechwytywania nie jest tak naprawdę oszacowaniem przechwytywania (według RH Shumway i DS Stoffer).
Dlatego zwróciłem się do nlsLM
funkcji 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 nlsLM
nie 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.
źródło
Odpowiedzi:
źródło