Le problème principal est: je ne peux pas obtenir d'estimations de paramètres similaires avec EViews et R.
Pour des raisons que je ne me connais pas, j'ai besoin d'estimer les paramètres de certaines données à l'aide d'EViews. Pour ce faire, sélectionnez l'option NLS (moindres carrés non linéaires) et utilisez la formule suivante:indep_var c dep_var ar(1)
EViews affirme qu'ils estiment des processus AR (1) linéaires tels que: où les erreurs u t sont définies comme: u t = ρ ⋅ u t - 1 + ε en utilisant une équation équivalente ( avec quelques substitutions algébriques): Y t = ( 1 - ρ ) α + ρ Y t - 1 + β X t
Maintenant, la fonction go-to R pour estimer les processus AR (1) est arima
. Cependant, il y a deux problèmes:
- les estimations sont des estimations du maximum de vraisemblance;
- l'estimation d'interception n'est pas réellement l'estimation d'interception (selon RH Shumway & DS Stoffer).
Par conséquent, je me suis tourné vers la nlsLM
fonction du package minpack.lm. Cette fonction utilise l'algorithme Marquardt pour obtenir des estimations des moindres carrés non linéaires, ce qui devrait donner les mêmes résultats que la mise en œuvre d'EViews (ou très similaires, au moins).
Maintenant, le code. J'ai une trame de données ( data
) avec une variable indépendante et une variable dépendante telle que celle générée par le code suivant:
data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))
Pour estimer les paramètres dans l'équation pour estimer revendications EViews (3 rd une de cet article), on utilise les commandes suivantes:
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)
)
Malheureusement, les estimations produites par nlsLM
ne sont pas proches de celles produites par EViews. Avez-vous une idée de ce qui pourrait causer cela? Ou peut-être que mon code est incorrect?
Enfin, je voudrais dire que je suis personnellement un utilisateur R - c'est exactement pourquoi j'essaie de le faire dans R au lieu d'EViews. J'aimerais aussi vous fournir les données avec lesquelles je travaille mais c'est impossible car ce sont des données confidentielles.
la source
Réponses:
la source