R ed EVView differenze nelle stime AR (1)


10

Il problema principale è: non riesco a ottenere stime di parametri simili con EViews e R.

Per motivi che non conosco me stesso, ho bisogno di stimare i parametri per alcuni dati usando EVview. Questo viene fatto selezionando l'opzione NLS (minimi quadrati non lineari) e usando la seguente formula:indep_var c dep_var ar(1)

EViews afferma di stimare processi AR (1) lineari come: dove errori sono definiti come: usando un equivalente equazione (con alcune sostituzioni algebriche): Inoltre, questa discussione oltre nei forum EViews suggerisce che le loro stime NLS sono generate dall'algoritmo Marquardt.

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

Ora, la funzione R per stimare i processi AR (1) è arima. Tuttavia, ci sono due problemi:

  1. le stime sono stime della massima verosimiglianza;
  2. la stima dell'intercettazione non è in realtà la stima dell'intercettazione (secondo RH Shumway e DS Stoffer).

Pertanto, sono passato alla nlsLMfunzione dal pacchetto minpack.lm. Questa funzione utilizza l'algoritmo Marquardt per ottenere stime dei minimi quadrati non lineari, che dovrebbero produrre gli stessi risultati dell'implementazione di EViews (o almeno molto simili).

Ora il codice. Ho un frame di dati ( data) con una variabile indipendente e una variabile dipendente come quella generata dal seguente codice:

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

Per stimare i parametri nell'equazione che EViews afferma di stimare (3 ° in questo post), utilizzo i seguenti comandi:

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

Sfortunatamente, le stime nlsLMfornite da non sono vicine a quelle prodotte da EViews. Hai idea di cosa potrebbe causare questo? O forse il mio codice è sbagliato?

Infine, vorrei dire che sono personalmente un utente R - questo è esattamente il motivo per cui sto provando a farlo in R invece che in EVview. Mi piacerebbe anche fornirti i dati con cui sto lavorando, ma è impossibile dato che si tratta di dati riservati.


4
Benvenuto nel sito, @Fael. +1 per una domanda chiara. Mi sono preso la libertà di modificare leggermente la formattazione per renderla più pulita. Assicurati che dica ancora quello che vuoi.
gung - Ripristina Monica

Wow, è stato davvero carino da parte tua. Grazie mille, @gung!
Fael,

2
Puoi sempre scalare / codificare i dati e pubblicarli. una trasformazione della forma [(y-costante1) / costante2] farà il trucco.
IrishStat

A proposito: i parametri dei processi lineari possono essere stimati tramite OLS.
Germaniawerks,

Risposte:


1

ρ,β,αXt-1

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.