R und EViews Unterschiede in AR (1) Schätzungen

10

Das Hauptproblem ist: Ich kann nicht ähnliche Parameterschätzungen mit EViews und R. erhalten

Aus Gründen, die ich selbst nicht kenne, muss ich Parameter für bestimmte Daten mithilfe von EViews schätzen. Dies erfolgt durch Auswahl der Option NLS (nichtlineare kleinste Quadrate) und Verwendung der folgenden Formel:indep_var c dep_var ar(1)

EViews behauptet, dass sie lineare AR (1) -Prozesse wie: wobei Fehler wie definiert sind: unter Verwendung eines Äquivalents Gleichung (mit einigen algebraischen Substitutionen): Außerdem ist dieser Thread vorbei In den EViews-Foren wird vorgeschlagen , dass ihre NLS-Schätzungen vom Marquardt-Algorithmus generiert werden.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

Nun ist die Go-to-R-Funktion zum Schätzen von AR (1) -Prozessen arima. Es gibt jedoch zwei Probleme:

  1. Die Schätzungen sind Schätzungen der maximalen Wahrscheinlichkeit.
  2. Die Intercept-Schätzung ist nicht die Intercept-Schätzung (gemäß RH Shumway & DS Stoffer).

Deshalb habe ich mich der nlsLMFunktion aus dem Paket minpack.lm zugewandt. Diese Funktion verwendet den Marquardt-Algorithmus, um nichtlineare Schätzungen der kleinsten Quadrate zu erzielen, die dieselben Ergebnisse wie die EViews-Implementierung liefern sollten (oder zumindest sehr ähnliche).

Nun der Code. Ich habe einen Datenrahmen ( data) mit einer unabhängigen Variablen und einer abhängigen Variablen, wie sie durch den folgenden Code generiert wird:

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

Zur Abschätzung Parameter in der Gleichung EViews Ansprüche abzuschätzen (3 rd einer an diesem post), verwende ich die folgenden Befehle:

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

Leider liegen die von ausgegebenen Schätzungen nlsLMnicht in der Nähe der von EViews ausgegebenen. Haben Sie eine Vorstellung davon, was dies verursachen könnte? Oder ist mein Code falsch?

Abschließend möchte ich sagen, dass ich persönlich ein R-Benutzer bin - genau deshalb versuche ich, dies in R anstelle von EViews zu tun. Ich würde Ihnen auch gerne die Daten zur Verfügung stellen, mit denen ich arbeite, aber es ist unmöglich, da es sich um vertrauliche Daten handelt.

Fael
quelle
4
Willkommen auf der Website, @Fael. +1 für eine klare Frage. Ich habe mir erlaubt, die Formatierung leicht zu optimieren, um sie sauberer zu machen. Bitte stellen Sie sicher, dass immer noch steht, was Sie wollen.
Gung - Reinstate Monica
Wow, das war wirklich nett von dir. Vielen Dank, @gung!
Fael
2
Sie können die Daten immer skalieren / codieren und veröffentlichen. Eine Transformation der Form [(y-Konstante1) / Konstante2] reicht aus.
IrishStat
Übrigens: Parameter linearer Prozesse können über OLS geschätzt werden.
Germaniawerks

Antworten:

1

Ihr NLLS verfügt über vier Ortoghonalitätsbedingungen, eine pro Variable plus die Konstante (analog zu normalen Gleichungen in Standard-OLS), um drei Parameter ( ) zu lösen . Die nichtlinearen Algorithmen weisen häufig heterogene Konfigurationen für Toleranzparameter über Software hinweg auf. Darf ich vorschlagen, dass Sie aus Ihrer Gleichung streichen, um ein genau identifiziertes System zu erhalten und dann Eviews gegen R zu testen? Wenn beide übereinstimmen, bedeutet dies wahrscheinlich, dass einer von ihnen Probleme mit der Überidentifizierung hat.X t - 1ρ,β,αXt1

JDav
quelle