El principal problema es: no puedo obtener estimaciones de parámetros similares con EViews y R.
Por razones que no conozco, necesito estimar parámetros para ciertos datos usando EViews. Esto se hace seleccionando la opción NLS (mínimos cuadrados no lineales) y utilizando la siguiente fórmula:indep_var c dep_var ar(1)
EViews afirma que estiman procesos AR (1) lineales como: donde los errores se definen como: usando un equivalente ecuación (con algunas sustituciones algebraicas): Además, este hilo sobre en los foros de EViews sugiere que sus estimaciones de NLS son generadas por el algoritmo de Marquardt.
Ahora, la función ir a R para estimar los procesos AR (1) es arima
. Sin embargo, hay dos problemas:
- las estimaciones son estimaciones de máxima verosimilitud;
- la estimación de intercepción no es en realidad la estimación de intercepción (según RH Shumway y DS Stoffer).
Por lo tanto, nlsLM
recurrí a la función del paquete minpack.lm. Esta función utiliza el algoritmo de Marquardt para lograr estimaciones de mínimos cuadrados no lineales, que deberían producir los mismos resultados que la implementación de EViews (o al menos muy similares).
Ahora el código. Tengo un marco de datos ( data
) con una variable independiente y una variable dependiente como la generada por el siguiente código:
data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))
Para estimar los parámetros en la ecuación que EViews afirma estimar ( 3º en esta publicación), utilizo los siguientes comandos:
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)
)
Desafortunadamente, las estimaciones de producción nlsLM
no están cerca de las producidas por EViews. ¿Tienes alguna idea de lo que podría estar causando esto? ¿O tal vez mi código está mal?
Finalmente, me gustaría decir que personalmente soy un usuario de R, eso es exactamente por qué estoy tratando de hacer esto en R en lugar de EViews. También me encantaría proporcionarle los datos con los que estoy trabajando, pero es imposible ya que son datos confidenciales.
fuente
Respuestas:
fuente