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.
Ora, la funzione R per stimare i processi AR (1) è arima
. Tuttavia, ci sono due problemi:
- le stime sono stime della massima verosimiglianza;
- la stima dell'intercettazione non è in realtà la stima dell'intercettazione (secondo RH Shumway e DS Stoffer).
Pertanto, sono passato alla nlsLM
funzione 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 nlsLM
fornite 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.